2012-02-06 253 views
0

我的問題是我有4位置的緯度和經度進入我的本地數據庫,我獲取這些數據並在android中使用繪製路徑路徑,但問題是第一個到第二個位置路線不顯示在mapview其他第二個到第三和第三到第四條路徑路徑顯示在mapview上。對不起,英文交流不好。Mapview繪製路徑路徑

我從下面的鏈接獲取代碼以獲取路徑路徑。

MapRoute Example

,並使用下面的函數調用繪圖類: -

public void drawpath(){ 
     mDb.open(); 
     Cursor cr = mDb.getAllTitles(); 
     cr.moveToFirst(); 

     if (cr.getCount() > 0) { 
      for (int i = 0; i <= cr.getCount()/2; i++) { 
       fromlat = Double.parseDouble(cr.getString(1)); 
       fromlng = Double.parseDouble(cr.getString(2)); 
       cr.moveToNext(); 
       tolat = Double.parseDouble(cr.getString(1)); 
       tolng = Double.parseDouble(cr.getString(2)); 

       String url = RoadProvider 
         .getUrl(fromlat, fromlng, tolat, tolng); 
       InputStream is = getConnection(url); 
       mRoad = RoadProvider.getRoute(is); 
       MapOverlay mapOverlay = new MapOverlay(mRoad, mapView); 
       List<Overlay> listOfOverlays = mapView.getOverlays(); 
       listOfOverlays.add(mapOverlay); 
       mapView.invalidate(); 
      } 
     } 

     cr.close(); 
     mDb.close(); 
    } 
+0

看到這個http://stackoverflow.com/questions/8612524/android-url-to-access-kml-route – NagarjunaReddy 2012-02-06 07:24:29

+0

我使用的代碼,但問題是相同的,唯一的第一個到第二個位置路徑不顯示其他人正在顯示... – 2012-02-06 07:29:12

+0

這是因爲你只循環一半的座標:'cr.getCount()/ 2' – Reno 2012-02-06 08:31:35

回答

0
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, 
Uri.parse("http://maps.google.com/maps?saddr=20.344,34.34&daddr=20.5666,45.345")); 
startActivity(intent); 
0

它發生,因爲你正在使用cr.getCount()/2.

當你將有偶數個計數則將工作不正常工作

例如,如果你有4個行數,那麼你cr.getCount()/2 = 2 所以你的循環將從0繼續到2意味着3次。 其實它應該繼續2次作爲您的編碼。

現在拉取一個奇數說5如此cr.getCount()/2 = 2,因爲我是整數值,所以你的循環將總共工作3次。

所以你有不同的機制。

就像嘗試在arraylist中添加所有lat和long,然後在循環完成後添加。

創建一個該arrayList的大小的循環並創建一個路徑。可能是因爲您需要兩個額外的變量來存儲前一個lat和long。