Подключаю Яндекс.Карты API 1 версии, вставляю созданные объекты с помощью YMapsML, затем пытаюсь определить входит ли адрес в созданный полигон. Но на любой адрес выдаёт, что адрес не входит в зону.
/* Инициализация Яндекс.Карты и подключение YMapsML */
var ymap, mymap, polygon;
function YMinit (lat, long) {
ymap = new YMaps.Map($('#YMaps'));
ymap.setCenter(new YMaps.GeoPoint(76.56738030, 60.94011121), 2);
mymap = new YMaps.YMapsML('https://maps.yandex.ru/ex
ymap.addOverlay(mymap);
YMaps.Events.observe(mymap, mymap.Events.Load, function() {
var obj = this.filter(function (obj) {
return obj.name == 'В черте города';
});
polygon = obj[0];
});
}
YMaps.load(YMinit);
/* Попытка определения адреса */
var addr = 'Мира, 23';
var geocoder = new YMaps.Geocoder(addr + ', Нижневартовск');
YMaps.Events.observe(geocoder, geocoder.Events.Load, function(geocoder) {
if ( geocoder.length() ) {
var point = geocoder.get(0).getGeoPoint();
if ( !polygon.contains(point) ) {
console.log('К сожалению, адрес не входит в зону доставки!');
return false;
} else
console.log('Всё в порядке');
} else {
console.log('К сожалению, адрес не входит в зону доставки!');
return false;
}
});
Если взять координаты из файла YMapsML и создать полигон внутри скрипта (по аналогии со статьей из гиктаймса), то определение адреса проходит успешно.
Что я делаю не так? Сравнивал объекты polygon, полученные разным методом, вроде ничем толком не отличаются.