地理定位找到最接近的坐标匹配

时间:2017-11-15 13:43:36

标签: javascript geolocation

我试图创建一个Javascript函数,可以在坐标数组中找到最接近的坐标匹配。

我的坐标:33.9321,18.8602 这些坐标会有所不同,但下面列出的4个位置将保持不变。

地点1:33.9143,18.5701 地点2:26.2041,28.0473 地点3:25.7479,28.2293 地点4:29.8587,31.0218

1 个答案:

答案 0 :(得分:0)

尝试运行我的代码以查看它是否对您有所帮助。 如果浏览器不能为您工作,我已使用var home作为您的星标点。 此外,我已保存var points中的所有位置,以便您可以根据需要进行更改。

然后我只是查看每个点,它将在控制台中输出到ref point的距离是多少。在你的情况下,它是第一点



var home = [ '33.9321', '18.8602' ];
var points = [ 
  [ '33.9143', '18.5701' ],
  [ '26.2041', '28.0473' ],
  [ '25.7479', '28.2293' ],
  [ '29.8587', '31.0218' ]
];
// loop over each point and output distance!
for( var i = 0; i < points.length; i++){
  var diff = twoPointsDiff(home[0],home[1],points[i][0],points[i][1]);
  console.log( 'distance from point' + (i+1) + ': ' + diff );
}
// helper fn to calc distance
function twoPointsDiff(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;
}
// helper fn to convert deg to radians
function deg2rad(deg) {
  return deg * (Math.PI/180)
}
&#13;
&#13;
&#13;