如何计算当前位置变化10米?动态更改10米。
我尝试了Flutter上的location
插件。但不能正常工作。
location.changeSettings(distanceFilter: 10,interval: 1000);
// 10是米,但是位置每次都在更新。
如何计算,我需要知道如何计算。(因为我需要在旅行时计算等待时间)
if(currentLocation> previousLocation)// currentLocation应该大于10米
currentLication = previousLocation + 10 meters
答案 0 :(得分: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));
}