【问题标题】:android location.distanceBetween and Using previous locationandroid location.distanceBetween 和使用以前的位置
【发布时间】:2014-03-30 23:31:53
【问题描述】:

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

我想用这个方法:

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

我可以将 location.getLatitude() 和 location.getLongitude() 放在 endLat 和 endLong 中。

我将所有这些都放在 onLocationChanged(Location location) { }

如何保存上次调用 onLocationChanged(Location location) 的位置并将其用作起始纬度/经度。

【问题讨论】:

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


    【解决方案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;
        ...
    }
    

    【讨论】:

    • 谢谢。效果很好。我将如何总结所有点之间的总距离?我已将方法更改为 distancesph = SphericalUtil.computeDistanceBetween(previous, current);这样它每次都返回一个双精度值。每次旅行时如何将双倍加起来以获得总距离?
    • 用同样的方法。每次进行计算时,将与全局变量的距离相加。像这样distancesph += SphericalUtil.computeDistanceBetween(previous, current)
    【解决方案2】:

    使用 Google 地图路线 API。您需要通过 HTTP 请求路线。您可以直接从 Android 或通过您自己的服务器执行此操作。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-15
      • 2013-11-04
      • 1970-01-01
      • 1970-01-01
      • 2012-11-30
      相关资源
      最近更新 更多