我试图创建一个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
答案 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;