距离回调的 HTML5 地理位置
Posted
技术标签:
【中文标题】距离回调的 HTML5 地理位置【英文标题】:HTML5 Geolocation on distance callback 【发布时间】:2015-07-01 05:42:59 【问题描述】:html5 Geolocation 中是否有任何可用的函数来获取旅行距离的位置回调,例如每 1000 米我想要一个 lat lng。
我可以使用
navigator.geolocation.watchPosition(success, error, options);
在成功回调中计算此点与上一点之间的距离,如果大于 1000 触发我的距离回调,还有其他解决方案吗?
【问题讨论】:
这真的只是保存旧的 pos 并做一些数学的问题,那里有一些关于在 js 中做数学的好文章,很容易找到 【参考方案1】:使用该函数获取lat
和long
:
function initiate_watchlocation()
if (watchProcess == null)
watchProcess = navigator.geolocation.watchPosition(onSuccess, onError);
var onSuccess = function(position)
var lat= position.coords.latitude;
var long= position.coords.longitude;
;
function onError(error)
alert_box('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
并将其保存在数据库中并将其映射到lat1
和lon1
,然后继续关注lat
和lon
并将其分别映射到lat2
和lon2
。并继续使用旧的执行以下功能。
function distance(lat1, lon1, lat2, lon2, unit)
var radlat1 = Math.PI * lat1/180
var radlat2 = Math.PI * lat2/180
var radlon1 = Math.PI * lon1/180
var radlon2 = Math.PI * lon2/180
var theta = lon1-lon2
var radtheta = Math.PI * theta/180
var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
dist = Math.acos(dist)
dist = dist * 180/Math.PI
dist = dist * 60 * 1.1515
if (unit=="K") dist = dist * 1.609344
if (unit=="N") dist = dist * 0.8684
return dist
然后执行此操作:
if(distance(lat1, lon1, lat2, lon2, K) ==1)
alert("1000 m");
【讨论】:
'K'
--- 公里 'N'
--- 海里。以上是关于距离回调的 HTML5 地理位置的主要内容,如果未能解决你的问题,请参考以下文章
HTML5地理位置定位Geolocation-API及Haversine地理空间距离算法
HTML5地理位置定位Geolocation-API及Haversine地理空间距离算法
html5-geolocation : navigator.geolocation.watchPosition 连续回调