如何计算当前位置变化 10 米?

Posted

技术标签:

【中文标题】如何计算当前位置变化 10 米?【英文标题】:how to calculate current location change by 10 meters? 【发布时间】:2020-03-10 06:58:26 【问题描述】:

如何计算当前位置变化10米? 10米是动态变化的。

我试过了,location Flutter 上的插件。但目前没有工作。

location.changeSettings(distanceFilter: 10,interval: 1000); //10 是米,但位置每次都会更新。

这样计算,我需要知道如何计算。(因为我需要计算旅行时的等待时间)

if(currentLocation > previousLocation) // currentLocation 应该大于 10 米

currentLication = previousLocation + 10 meters

【问题讨论】:

对不起我的英语不好 【参考方案1】:

我不认为定位插件目前提供这样的功能,但你可以使用onLocationChanged回调事件

location.onLocationChanged().listen((LocationData currentLocation) 
  // Use current location
);

它会返回你当前的位置,而不是你必须使用Haversine公式计算它,查看更多细节here和here

a = sin²(Δφ/2) + cos φ1 ⋅ cos φ2 ⋅ sin²(Δλ/2)
c = 2 ⋅ atan2( √a, √(1−a) )
d = R ⋅ c 

下面dart code可以帮助你计算差异并获得下一个位置:

import 'dart:math' show cos, sqrt, asin;

double calculateDistance(LatLng l1, LatLng l2) 
  const p = 0.017453292519943295;
  final a = 0.5 -
      cos((l2.latitude - l1.latitude) * p) / 2 +
      cos(l1.latitude * p) *
          cos(l2.latitude * p) *
          (1 - cos((l2.longitude - l1.longitude) * p)) /
          2;
  return 12742 * asin(sqrt(a));

【讨论】:

返回类型值是什么?公里还是米?公里对吗? return 1000 * 12742 * asin(sqrt(a)); 现在米对了吗? 它以公里为单位返回,是的

以上是关于如何计算当前位置变化 10 米?的主要内容,如果未能解决你的问题,请参考以下文章

如何计算交叉跟踪误差(GPS/核心位置)

如果我想显示我当前位置半径 1000 米范围内数据库中的所有位置怎么办?

查找距我当前位置 100 米范围内的已保存位置

检测位置的微小变化

如何在 Swift 中计算“纯”移动距离?

即使手机放在桌子上,位置也会发生变化