gpt4 book ai didi

javascript - 使用 Geolocation API javascript 计算我的速度

转载 作者:行者123 更新时间:2023-11-29 17:33:59 25 4
gpt4 key购买 nike

可以通过 Android 版 Google map javascript 的地理定位来计算移动设备的移动速度吗?

最佳答案

至少如果您使用 Geolocation plugin 提供的本地地理定位服务你得到的位置足够准确,你可以从中计算出速度

function calculateSpeed(t1, lat1, lng1, t2, lat2, lng2) {
// From Caspar Kleijne's answer starts
/** Converts numeric degrees to radians */
if (typeof(Number.prototype.toRad) === "undefined") {
Number.prototype.toRad = function() {
return this * Math.PI / 180;
}
}
// From Caspar Kleijne's answer ends
// From cletus' answer starts
var R = 6371; // km
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad();
var lat1 = lat1.toRad();
var lat2 = lat2.toRad();

var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var distance = R * c;
// From cletus' answer ends

return distance / t2 - t1;
}

function firstGeolocationSuccess(position1) {
var t1 = Date.now();
navigator.geolocation.getCurrentPosition(
function (position2) {
var speed = calculateSpeed(t1 / 1000, position1.coords.latitude, position1.coords.longitude, Date.now() / 1000, position2.coords.latitude, position2.coords.longitude);
}
}
navigator.geolocation.getCurrentPosition(firstGeolocationSuccess);

其中 NumbertoRad 函数来自 Caspar Kleijne's answer ,两个坐标之间距离的计算来自cletus' answert2t1seconds 为单位,纬度(lat1 和 lat2)和经度(lng1 和 lng2)是 float 。

代码的主要思想如下:1.获取初始位置和在该位置的存储时间,2. 获取另一个位置,获取后,使用位置和时间调用calculateSpeed 函数。

同样的公式当然适用于谷歌地图的情况,但在那种情况下,我会检查计算的准确性,因为即使是网络延迟也可能导致一些测量错误,如果时间间隔太短,这些错误很容易成倍增加。

关于javascript - 使用 Geolocation API javascript 计算我的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31456273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com