Есть замечательный код, который позволяет определить принадлежит ли точка заданной области.
Вот сама функция:
function inPolygon (polygon, point) {
var c = 0;
for (var i = 0, points = polygon.getPoints(), j = points.length - 1; i < points.length; j = i++) {
if ((((points[i].getLat() <= point.getLat()) && (point.getLat() < points[j].getLat())) || ((points[j].getLat() <= point.getLat()) && (point.getLat() < points[i].getLat()))) &&
(point.getLng() > (points[j].getLng() - points[i].getLng()) * (point.getLat() - points[i].getLat()) / (points[j].getLat() - points[i].getLat()) + points[i].getLng())
) {
c = !c;
}
}
return c;
}
У меня есть YMapsML-файл в котором содержится описание зон на карте полигонами:
<ymaps:GeoObjectCollection>
<ymaps:GeoObject>
<gml:Polygon>
Ну и так далее.
Загружаю я этот файл как обычно:
var zoneh = new YMaps.YMapsML('http://мой сайт/zone.xml');
map.addOverlay(zoneh);
Но выполнить следующий код не удается:
if (inPolygon(zoneh.get(0).get(1), obj4.getGeoPoint())) {
YMaps.jQuery(".ClDataCold").append("<p>Зона влажности: Влажная</p>");
alert("Зона найдена.");
}
Пример кода тут - http://ovvk-info.narod.ru/maps-climatrr.html