距离回调的 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】:

使用该函数获取latlong

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');
    

并将其保存在数据库中并将其映射到lat1lon1,然后继续关注latlon 并将其分别映射到lat2lon2。并继续使用旧的执行以下功能。

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实现一个距离追踪器

HTML5 地理定位 iphone

使用 html5 进行地理定位

html5-geolocation : navigator.geolocation.watchPosition 连续回调