Вот простой Javascript функция, которая может быть полезна в этом link .. как-то связаны, но мы используем Google Планета Земля Javascript плагин вместо карт
function getApproximateDistanceUnits(point1, point2) {
var xs = 0;
var ys = 0;
xs = point2.getX() - point1.getX();
xs = xs * xs;
ys = point2.getY() - point1.getY();
ys = ys * ys;
return Math.sqrt(xs + ys);
}
Блоки Тхо не являются на расстоянии, но с точки зрения отношение относительно ваших координат.Есть другие вычисления, связанные вы можете заменить на getApproximateDistanceUnits функционировать link here
Затем я использую эту функцию, чтобы увидеть, если широта и долгота находится в пределах радиуса
function isMapPlacemarkInRadius(point1, point2, radi) {
if (point1 && point2) {
return getApproximateDistanceUnits(point1, point2) <= radi;
} else {
return 0;
}
}
точка может быть определена как
$$.getPoint = function(lati, longi) {
var location = {
x: 0,
y: 0,
getX: function() { return location.x; },
getY: function() { return location.y; }
};
location.x = lati;
location.y = longi;
return location;
};
, то вы можете сделать свое дело, чтобы узнать, находится ли точка в пределах области с радиусом:
//put it on the map if within the range of a specified radi assuming 100,000,000 units
var iconpoint = Map.getPoint(pp.latitude, pp.longitude);
var centerpoint = Map.getPoint(Settings.CenterLatitude, Settings.CenterLongitude);
//approx ~200 units to show only half of the globe from the default center radius
if (isMapPlacemarkInRadius(centerpoint, iconpoint, 120)) {
addPlacemark(pp.latitude, pp.longitude, pp.name);
}
else {
otherSidePlacemarks.push({
latitude: pp.latitude,
longitude: pp.longitude,
name: pp.name
});
}
Учитывает ли этот расчет/метод, что Земля является сфероидом (а не идеальной сферой)? Первоначальный вопрос задал расстояние между точками на глобусе WGS84. Не уверен, насколько ошибка ползет, используя идеальную сферу, но я подозреваю, что это может быть довольно много в зависимости от того, где точки находятся на земном шаре, поэтому различие стоит иметь в виду. – redcalx 2011-11-08 08:33:38
Формула Хаверсина не учитывает, что Земля является сфероидом, поэтому из-за этого вы получите некоторую ошибку. Не может быть гарантировано правильное значение более 0,5%. Тем не менее, это может быть или не быть приемлемым уровнем ошибки. – Brandon 2011-12-28 16:20:25
Обернул логику в функцию, поэтому ее можно использовать в JS из коробки, фактически используя это в NodeJS сейчас ... – Tracker1 2012-12-13 00:55:28