Клуб API Карт

Не работает пример в документации с вхождением точки в многоугольник

Kratit
18 апреля 2013, 11:58

   Ссылк на страницу документации  

 

var myPolygon = new ymaps.geometry.Polygon([ [[69, 45], [68, 55], [86, 56]] ]); // Метод работает только с корректно заданной картой. myPolygon.options.setParent(myMap.options); myPolygon.setMap(myMap); // Проверка, входит ли точка клика в полигон, с заданной выше геометрией. myMap.events.add('click', function (e) { alert(myPolygon.contains(e.get('coordPosition')) ? 'Ранил!' : 'Мимо!'); });

 

setMap - ошибка: Uncaught TypeError: Object [object Object] has no method 'setMap'

myPolygon.contains - ошибка: Uncaught TypeError: Object [object Object] has no method 'contains'

 

6 комментариев
Подписаться на комментарии к посту

разобрался. 

надо писать: 

 

myPolygon.geometry.setMap(myMap);
myPolygon.geometry.contains(e.get('coordPosition'))

Морской бой ? :)

Ну вообще корректно писать myMap.geoObjects.add(myPolygon);

Никак немогу разобраться с ошибкой. Скинь рабочий вариант кода HTML страничкой.

Была дурная ошибка создал полигон с одинаковыми внешними и внутреними границами (т.е. бублик) и тыкая в дырку от булика, немог понять почему не попадаю в полигон. :-)

Для таких же как я вот полный рабочий код:

ymaps.ready(init);

function init () {
    var myMap = new ymaps.Map("map", {
            center: [55.76, 37.64],
            zoom: 10
        });
   
    var polygonGeometry = new ymaps.geometry.Polygon([[[55.75, 37.52],[55.75, 37.68],[55.65, 37.60]]]);
    var polygonGeoObject = new ymaps.GeoObject({ geometry: polygonGeometry });   
   
    //myMap.geoObjects.add(polygonGeoObject); если желаем видеть полигон
   
    polygonGeoObject.geometry.options.setParent(myMap.options);
    polygonGeoObject.geometry.setMap(myMap);
    
   
    myMap.events.add('click', function (e) {
       
        var ClickCoords = e.get('coords');
       
        if (polygonGeoObject.geometry.contains(ClickCoords)) {
           
            alert("Попали в полигон!");
            myMap.geoObjects.add(new ymaps.Placemark(ClickCoords));
           
            }
         else  {alert("Мимо!");};
       
    });
}