2015-08-23 61 views
0

這似乎是一個重複的問題,但事實並非如此。請仔細閱讀您標記之前的重複Android MapsApiV2 Location.distanceTo給出錯誤的值

我是想兩個LatLng之間獲得距離,所以首先我產生它的的PolylineOptions
現在的問題是 - 輸出是不理解。
它不同於其他問題,因爲它使用PolylineOptions。

計算代碼

@Override 
public void onParserTaskComplete(PolylineOptions points, int count) { 
    if (points != null) { 
     float totalDistance = 0; 

     for (int i = 1; i < points.getPoints().size(); i++) { 
      Location currLocation = new Location("this"); 
      currLocation.setLatitude(points.getPoints().get(i).latitude); 
      currLocation.setLongitude(points.getPoints().get(i).longitude); 

      Location lastLocation = new Location("this"); 
      currLocation.setLatitude(points.getPoints().get(i - 1).latitude); 
      currLocation.setLongitude(points.getPoints().get(i - 1).longitude); 

      totalDistance += lastLocation.distanceTo(currLocation); 


     } 
     items.get(count).setDistance(String.valueOf(totalDistance)); 
     adapter.notifyDataSetChanged(); 
    } else { 
     items.get(count).setDistance(""); 
     adapter.notifyDataSetChanged(); 
    } 
} 

根據谷歌地圖的距離應在5.5KM 但輸出快到像8783711.0

問題 -如何轉換這種價值到KM?

+0

檢查我的答案,距離現在好嗎? –

回答

0

您複製了currLocation,並且不爲lastLocation設置值。
這是正確的方法:

 Location currLocation = new Location("this"); 
     currLocation.setLatitude(points.getPoints().get(i).latitude); 
     currLocation.setLongitude(points.getPoints().get(i).longitude); 

     Location lastLocation = new Location("this"); 
     // here you used currLocation 
     lastLocation.setLatitude(points.getPoints().get(i - 1).latitude); 
     lastLocation.setLongitude(points.getPoints().get(i - 1).longitude); 
+0

謝謝你的工作 –