Клуб API Карт

Полигон в Api 2.x

Пост в архиве.

Прочитал статью на http://habrahabr.ru/post/127446/ 

На версии 1.x  все получилось..вот теперь надо реализовать на второй версии.

А точнее построить полигон по километрам мкада и проверять, находится ли внутри полигона указанная точка или нет. 

 

Делаю так.. Беру пример с сайта, и вместо этих координат, подставляю координаты каждого километра мкада, но полигон не рисуется =(

  

 

// Создадим геообъект с типом геометрии "полигон".
myGeoObject = new ymaps.GeoObject({
// Геометрия.
    geometry: {
    // Тип геометрии - полигон.
    type: "Polygon",
    // Координаты.
    coordinates:

     [
        [
          ...
        [37.842762,55.774558],
        [37.842789,55.76522],
        [37.842627,55.755723],
        [37.841828,55.747399],
        [37.841217,55.739103],
        [37.840175,55.730482],
        ... // и так до 108 км

        ]
      ]
    }
});

 

 

Подскажите плиз, как проставить полигон по координатам мкада?

10 комментариев

На карту добавляете?

Можно весь код куда либо выложить?

все получилось. я неправильно делал сначала. 

А как мне проверять находится ли указанная точка внутри полигона?

В первой версии я делал так:

var value = "Москва";

var geocoder = new YMaps.Geocoder(value);

if (geocoder.length()) {

    var point = geocoder.get(0).getGeoPoint();

    if(polygon.contains(point)) {
    ......
    } else {

    ....

    }

 

Создайте просто геометрию типа Полигон, дайте(setMap) есть карту.

У геометрии есть метод contains.

Геометрия полигона-геообьекта доступна как object.geometry

Может я чего-то не вижу, но там нет никакой проверки нахождения произвольной точки в полигоне. Подскажите плиз, как проверять находится ли внутри полигона или нет..

myPolygon.geometry.contains(myPoint.geometry.getCoordinates());

Вдруг кому понадобится.. Вот так решил:

 

 

var myGeocoder = ymaps.geocode(value);
    myGeocoder.then(
        function (res) {
            if (res.geoObjects.getLength()) {    
                // point - первый элемент коллекции найденных объектов
                var point = res.geoObjects.get(0);
                // Добавление полученного элемента на карту
                myMap.geoObjects.add(point);
                // Центрирование карты на добавленном объекте
                myPolygon.geometry.contains(point.geometry.getCoordinates());
                if(myPolygon.geometry.contains(point.geometry.getCoordinates()))
                {
                    alert("Мимо")
                }
                else
                {
                    alert("Попал")
                }
            }
        },
        // Обработка ошибки
        function (error) {
            alert("Возникла ошибка: " + error.message);
        }
);

зачем первый вызов?

 

myPolygon.geometry.contains(point.geometry.getCoordinates());
if(myPolygon.geometry.contains(point.geometry.getCoordinates()))

ой, это удалить забыл. спасибо за подсказку