相关疑难解决方法(0)

计算两个坐标之间距离的函数

我目前正在使用下面的功能,但它无法正常工作.根据谷歌地图,这些坐标(从59.3293371,13.487747259.3225525,13.4619422)之间的距离是2.2公里,而函数返回1.6公里.如何使此功能返回正确的距离?

function getDistanceFromLatLonInKm(lat1, lon1, lat2, lon2) {
  var R = 6371; // Radius of the earth in km
  var dLat = deg2rad(lat2-lat1);  // deg2rad below
  var dLon = deg2rad(lon2-lon1); 
  var a = 
    Math.sin(dLat/2) * Math.sin(dLat/2) +
    Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * 
    Math.sin(dLon/2) * Math.sin(dLon/2)
    ; 
  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
  var d = R * c; // Distance in km
  return d;
}

function deg2rad(deg) {
  return deg * …
Run Code Online (Sandbox Code Playgroud)

javascript distance coordinates

109
推荐指数
9
解决办法
11万
查看次数

在Javascript中使用Haversine公式

我正在尝试使用Haversine距离公式(如此处所示:http://www.movable-type.co.uk/scripts/latlong.html)但我无法使其工作,请参阅以下代码

    function test() { 
    var lat2 = 42.741; 
    var lon2 = -71.3161; 
    var lat1 = 42.806911; 
    var lon1 = -71.290611; 

    var R = 6371; // km 
    //has a problem with the .toRad() method below.
    var dLat = (lat2-lat1).toRad();  
    var dLon = (lon2-lon1).toRad();  
    var a = Math.sin(dLat/2) * Math.sin(dLat/2) + 
                    Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) * 
                    Math.sin(dLon/2) * Math.sin(dLon/2);  
    var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
    var d = R * c; 

    alert(d); 
}
Run Code Online (Sandbox Code Playgroud)

错误是:

Uncaught TypeError: Object -0.06591099999999983 …
Run Code Online (Sandbox Code Playgroud)

javascript haversine

29
推荐指数
4
解决办法
3万
查看次数

如何在javascripts中按经度纬度距离对数组项进行排序?

我正在关注6个位置的JSON数组.有没有什么方法可以根据经度和纬度对这些数据进行排序?

[
{"id" : 279, "longitude":79.853239,"latitude":6.912283},
{"id" : 284, "longitude":79.865699,"latitude":6.885697},
{"id" : 13,  "longitude":79.851187,"latitude":6.912220},
{"id" : 282, "longitude":79.858904,"latitude":6.871041},
{"id" : 281, "longitude":79.853346,"latitude":6.899757},
{"id" : 16,  "longitude":79.854786,"latitude":6.894039}
]
Run Code Online (Sandbox Code Playgroud)

排序可以从第一项开始,结果应该是这样的

[
{"id" : 279, "longitute":79.853239,"latitude":6.912283},
{"id" : 13,  "longitute":79.851187,"latitude":6.912220},
{"id" : 281, "longitute":79.853346,"latitude":6.899757},
{"id" : 16,  "longitute":79.854786,"latitude":6.894039},
{"id" : 284, "longitute":79.865699,"latitude":6.885697},
{"id" : 282, "longitute":79.858904,"latitude":6.871041}
]
Run Code Online (Sandbox Code Playgroud)

javascript arrays sorting geo latitude-longitude

4
推荐指数
1
解决办法
9696
查看次数