地理位置找到最接近的坐标匹配
Posted
技术标签:
【中文标题】地理位置找到最接近的坐标匹配【英文标题】:Geolocation find closest coordinate match 【发布时间】:2017-11-15 13:43:35 【问题描述】:我正在尝试创建一个 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
【问题讨论】:
看到这个问题:***.com/questions/21279559/… 我已经看了很长时间了,这绝对是我能找到的最接近的答案。但是,我似乎无法将在该示例中通过用户位置拉出的坐标更改为我想要使用的变量坐标 你看到我为你发布的示例代码了吗@Michiel 是的,谢谢。我没有让它工作,因为我在我们的 CRM 系统(Podio)中使用了 Javascript。例如,该系统不允许使用 console.log,所以我已经向他们记录了支持请求。只是等待他们的回应,希望我可以应用你的代码.. 【参考方案1】:尝试运行我的代码,看看它是否对您有帮助。
如果浏览器不适合您,我已使用 var home
作为您的起点。
此外,我已将所有位置保存在 var points
中,因此您可以根据需要进行更改。
然后我只是查看每个点,它会在控制台中输出到参考点的距离。在你的情况下,这是第一点
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)
【讨论】:
以上是关于地理位置找到最接近的坐标匹配的主要内容,如果未能解决你的问题,请参考以下文章