Вот простая функция javascript, которая может быть полезна из этой ссылки ... как-то связанной, но мы используем плагин google earth 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 здесь
Затем я использую эту функцию, чтобы увидеть, находится ли широта и долгота в пределах радиуса
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
});
}
Я никогда не использовал его, но думаю, что это ваш путь:
[myView lockFocus];
imageContext = (CGContextRef)[[NSGraphicsContext currentContext]
graphicsPort];
...
[myView unlockFocus];
также посмотрите на lockFocusIfCanDraw NSView