限制大圆
Limiting the great circle
我需要限制大圆问题的半径。圆圈将延伸直到它碰到另一个项目。
我需要它来限制圆圈的范围为 5 英里
这是我的代码
function find_closest_ticket(ticket, lat, lng) {
// var lat = map.position.coords.latitude;
// var lon = map.position.coords.longitude;
// lat = 24.709254;
// lng = -81.381927;
var R = 6371; // radius of earth in km
var distances = [];
var closest = -1;
for (i = 0; i < ticket.length; i++) {
var mlat = ticket[i].soLAT;
var mlng = ticket[i].soLNG;
var dLat = rad(mlat - lat);
var dLong = rad(mlng - lng);
var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.cos(rad(lat)) * Math.cos(rad(lat)) * Math.sin(dLong / 2) * Math.sin(dLong / 2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
var d = R * c;
distances[i] = d;
if (closest == -1 || d < distances[closest]) {
closest = i;
}
}
return closest;
}
首先,令人惊讶的是您使用 return 以公里为单位的半径的函数,然后想将其限制为 5 英里。你应该下定决心:要么将函数写入 return 英里并添加以英里为单位的限制,要么保留函数原样并以公里为单位限制它(8 公里大约是 5 英里)。
如果您想使用里程,请更改此行:
var R = 6371; // radius of earth in km
至:
var R = 3959; // radius of earth in miles
并替换:
return closest;
作者:
return Math.min(5, closest);
或者,如果您想坚持 km,则只需替换:
return closest;
作者:
return Math.min(8, closest);
我需要限制大圆问题的半径。圆圈将延伸直到它碰到另一个项目。
我需要它来限制圆圈的范围为 5 英里
这是我的代码
function find_closest_ticket(ticket, lat, lng) {
// var lat = map.position.coords.latitude;
// var lon = map.position.coords.longitude;
// lat = 24.709254;
// lng = -81.381927;
var R = 6371; // radius of earth in km
var distances = [];
var closest = -1;
for (i = 0; i < ticket.length; i++) {
var mlat = ticket[i].soLAT;
var mlng = ticket[i].soLNG;
var dLat = rad(mlat - lat);
var dLong = rad(mlng - lng);
var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.cos(rad(lat)) * Math.cos(rad(lat)) * Math.sin(dLong / 2) * Math.sin(dLong / 2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
var d = R * c;
distances[i] = d;
if (closest == -1 || d < distances[closest]) {
closest = i;
}
}
return closest;
}
首先,令人惊讶的是您使用 return 以公里为单位的半径的函数,然后想将其限制为 5 英里。你应该下定决心:要么将函数写入 return 英里并添加以英里为单位的限制,要么保留函数原样并以公里为单位限制它(8 公里大约是 5 英里)。
如果您想使用里程,请更改此行:
var R = 6371; // radius of earth in km
至:
var R = 3959; // radius of earth in miles
并替换:
return closest;
作者:
return Math.min(5, closest);
或者,如果您想坚持 km,则只需替换:
return closest;
作者:
return Math.min(8, closest);