JavaScript 地理定位:检查距 2 gps 坐标的距离

Posted

技术标签:

【中文标题】JavaScript 地理定位:检查距 2 gps 坐标的距离【英文标题】:JavaScript geolocation: check distance from 2 gps coordinates 【发布时间】:2014-02-21 14:47:13 【问题描述】:

我有两个常数 - gps 纬度和经度。我通过 html5 JS API 获得用户位置。 getCurrentPosition() 方法提供 coords.accuracy 显示位置的准确性。 我需要检查与 gps 坐标的距离是否为常数,getCurrentPosition() 是否小于 10 米。

是否有任何库或 jQuery 插件,或者我必须自己编写?

【问题讨论】:

我找到了这些工作代码:github.com/jdjkelly/jQuery-haversine/blob/master/… 和 github.com/janantala/GPS-distance/blob/master/javascript/… 哪个更好? 【参考方案1】:

下面的代码是我在 Google Maps API v3 中使用的代码。也许你可以对你的库做类似的事情。半正弦公式考虑到地球是一个球体,这是我计算距离的最佳选择。 Google API 附带了一个额外的library 来执行此操作。

通常你会找到你的库来计算距离,然后你会想出自己的逻辑。 因此,再次从这个逻辑中获取您需要的内容并尝试您找到的库。

orderMarkersByDistance: function (markers) 
    var flex = this,
        geodesic = [],
        arrClosest = [],
        to, distance, arrDistances,
        map = this.root.gmap3("get");

    // loop through markers and calculate their distances from the center
    for (var i = 0; i < markers.length; i++) 
        to = new google.maps.LatLng(markers[i].lat, markers[i].lng);
        distance = google.maps.geometry.spherical.computeDistanceBetween(map.center, to);
        geodesic.push([i, distance]);
    

    // sort the distances
    geodesic.sort(function (a, b)  return a[1] - b[1]; );

    // optionally, take the closest distances
    arrDistances = geodesic.slice(0, 3);

    // return closest markers
    $.each(arrDistances, function (idx, item) 
        arrClosest.push(markers[item[0]]);
    );

    return arrClosest;
,

【讨论】:

看起来不错,但您需要连接互联网。我想要离线(移动)应用。 啊就是这样,可能想将其添加到您的问题中,因为我不清楚。

以上是关于JavaScript 地理定位:检查距 2 gps 坐标的距离的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Ionic2(地理定位)检查 GPS 是不是启用?

Javascript 地理位置 - GPS 设置 - FINE 与 COARSE

地理定位在 GPS 关闭的情况下不起作用

GPS伪距单点定位中的TOC和TOE有啥区别?很急

Cordova 地理定位插件问题

伪距定位原理是啥?