计算我的速度与地理定位API javascript
Calculate My Speed With Geolocation API javascript
可以通过Google Maps javascript for android的地理定位来计算移动设备的移动速度?
至少如果你使用本地地理定位服务提供的geolocation插件,你得到的位置足够准确,从中你可以计算速度
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);
其中数的toRad函数来自Caspar Kleijne的答案,两个坐标之间的距离计算来自cletus的答案,t2和t1以秒为单位,纬度(lat1 &Lat2)和经度(lng1 &
代码的主要思想如下:1. 获取初始位置并存储在该位置时的时间,2. 获取另一个位置,获取后,使用位置和时间调用calculateSpeed函数。
同样的公式当然也适用于Google Maps的情况,但在这种情况下,我要检查计算的准确性,因为即使是网络延迟也可能导致一些测量误差,如果时间间隔太短,这些误差很容易成倍增加。
相关文章:
- 地理定位api和谷歌地图出错
- 地理定位API从Chrome 50中的不安全来源中删除
- 如何用HTML5地理定位API实现承诺
- 当站点不是其URL的根时,如何在getJSON调用中定位API
- Javascript回调和地理定位API
- 替代谷歌地图地理定位API
- 地理定位api:如何知道用户是否点击了关闭或阻止按钮
- 地理定位api没有给出准确的用户位置
- 异步地理定位API和jQuery延迟对象
- 谷歌地图Api HTML5地理定位与安卓定位Api
- 获取用户邮政编码与谷歌地理定位API, W3C地理定位和谷歌反向地理编码
- 通过HTML5地理定位API以外的方式识别用户的地理位置
- 使用必应定位API抓取坐标并使用它创建交互式地图
- 如何做反向地理编码与Cordova地理定位API获得城市和国家
- 计算我的速度与地理定位API javascript
- 为什么PhoneGap地理定位API导致我的页面加载如此缓慢
- W3C地理定位API位置数据库
- 地理定位API不起作用
- 地理定位api javascript
- W3C地理定位API不适用于Chrome