-2

我需要限制大圆问题的半径。圆圈将延伸,直到它碰到另一个项目。

我需要它将圆圈的范围限制为 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;
}
4

1 回答 1

0

首先,令人惊讶的是,您使用了一个以公里为单位返回半径的函数,然后又想将其限制为 5 英里。你应该下定决心:要么编写返回英里的函数并添加以英里为单位的限制,要么保持原样并以公里为单位限制它(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);
于 2015-10-22T20:40:24.600 回答