android location.distanceBetween和使用以前的位置

时间:2014-03-30 23:31:54

标签: android google-maps location google-maps-android-api-2

我试图通过在我移动时将点之间的距离相加来计算折线的长度。

我想要使用这种方法:

 distanceBetween (double startLatitude, double startLongitude, double endLatitude, double endLongitude, float[] results)

我可以在endLat&中放置location.getLatitude()和location.getLongitude()。直立。

我将所有这些放在onLocationChanged(位置位置){}

如何从上次调用onLocationChanged(位置位置)时保存位置,并将其用作startLatitude / Longitude。

2 个答案:

答案 0 :(得分:1)

有一个global temp variable来保存之前的位置更新。如果您需要多个位置,您还可以使用列表。

private Locaction previous;

@Override
public void onLocationChange(Location location) {
    ...
    // if its the first location update temp is null!
    if (previous != null) {
         Location.distanceBetween(
                  previous.getLatitude(),
                  previous.getLongitude(),
                  location.getLatitude(),
                  location.getLongitude(),
                  results);
    }

    // hold the location
    previous = location;
    ...
}

答案 1 :(得分:0)

使用Google Maps Directions API。您需要通过HTTP请求指示。您可以直接从Android或通过自己的服务器执行此操作。

例如,从蒙特利尔到多伦多的路线:

获取http://maps.googleapis.com/maps/api/directions/json?origin=Toronto&destination=Montreal&sensor=false 你最终会得到一些JSON。在路线[]。legs []。距离中,你会得到一个像这样的物体:

 "legs" : [
    {
       "distance" : {
          "text" : "542 km",
          "value" : 542389
       },