【问题标题】:How to use android distanceBetween() method如何使用android distanceBetween() 方法
【发布时间】:2017-01-19 21:19:08
【问题描述】:

您好,最近我一直在使用一个应用程序,该应用程序需要跟踪一个人走路时的行进距离。我正在使用位置管理器来获取人员坐标(lang 和 lat)。

locationListener = new LocationListener() {
        @Override
        public void onLocationChanged(Location location) {
            location.getLatitude();
            location.getLongitude();
        }

        @Override
        public void onStatusChanged(String s, int i, Bundle bundle) {

        }

        @Override
        public void onProviderEnabled(String s) {

        }

        @Override
        public void onProviderDisabled(String s) {
        }
    };

如何使用方法 distanceBetween() 来获取实际行驶距离? 我很困惑如何区分起始位置和结束位置,因为位置管理器会为您提供当前位置并每 5 秒返回新位置(这就是我在 requestLocationUpdates() 上配置的)

任何帮助将不胜感激,谢谢

【问题讨论】:

标签: android


【解决方案1】:

我很困惑如何区分起始位置和结束位置,因为位置管理器会为您提供当前位置并每 5 秒返回新位置

您已经拥有获取新位置的代码,因此您需要在每次位置更新期间保存旧位置计算到新位置的距离

Location oldLoc, newLoc;
locationListener = new LocationListener() {
    @Override
    public void onLocationChanged(Location location) {
        if (oldLoc!=null) { 
            if (newLoc == null) { 
                newLoc = location; 
                // get distance 
                return; 
             } 
            // else, both not null 
            oldLoc = newLoc;
            newLoc = location;
            // get distance 
        } else { oldLoc = location; } 
    }

【讨论】:

  • 谢谢,很抱歉问了同样的问题……只需要尽快找到解决方案。
  • 我会使用 Location distanceTo 方法,而不是距离
  • 它们之间有很大区别吗?
  • 参数少了。 Location1.distanceTo(Location2) 对我来说更有意义。此外,该方法可能会调用另一个方法
  • 好的,那么我只需要将我过去的位置存储为 Location1 并将新位置存储为 Location2 ? ...如果我错了,请纠正我。谢谢
猜你喜欢
  • 2018-07-18
  • 2020-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-27
  • 1970-01-01
相关资源
最近更新 更多