Клуб API Карт

(Api 2.0) Попадание точки в полигон, ошибка TypeError: s is null

AntiMandron
7 декабря 2015, 11:53
Здравствуйте!

ymaps.ready(init); function init(){ coords = [55.753960000000, 37.620393000000], myMap = new ymaps.Map('map', {center: coords, zoom: 12}),
myBalloon = new ymaps.Placemark(coords, {}, {draggable: "true",preset: "twirl#greenStretchyIcon"});
myBalloon.events.add(['dragend'], function ()
{
var coords = myBalloon.geometry.getCoordinates();
$('#coordinates').val(coords);
});
myMap.geoObjects.add(myBalloon);
// теперь добавляем полигон
myPolygon100 = new ymaps.Polygon([55.612487758250026,37.07661611948223],[55.66476535779166,37.178653245244575],[55.67186969999856,37.421915668257746],[55.60913960606932,37.485504021993705],[55.49440270404889,37.12636276299143],[55.53635683184106,37.04059242539409],[55.612487758250026,37.07661611948223]); myMap.geoObjects.add(myPolygon100);
...

function Contains123(address)
{
var coords123 = myBalloon.geometry.getCoordinates();
// координаты выводятся, все ок
console.log(coords123);
//
но вот при определении попадает ли точка в область, ошибка
if(myPolygon100.geometry.contains(coords123)){alert("123");}

}
[55.75396, 37.620393]
TypeError: s is null
как-будто coords123 это null, но это явно не так? как такое может быть?
6 комментариев
Подписаться на комментарии к посту

Чтобы работать с геометрией полигона, вам нужно добавить его на карту, либо сохранить его геометрию отдельно. В вышеприведенном коде вы его просто инициализируете.

даже если перед "..."

добавляю myMap.geoObjects.add(myPolygon100); (в примере эта строка есть, надо скролл прокрутить)

....

выходит та же самая ошибка

Сам полигон-то на карте появляется? Насколько я помню, координаты генератору полигонов передаются в виде трех(?)мерного массива с опциональным внутренним контуром, а вы передаете просто пачку координат.

спасибо, все ок, просто координаты не так задавал :)

Юрий Юрин-Комаров
22 мая 2016, 02:05
AntiMandron,
так какой итоговый вариант?
все получилось, просто в координатах долготу и ширину местами перепутал