Клуб API Карт

Получение координат многоугольника

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

Добрый день.

Юзер рисует многоугольник:

 

function init () {   
    searchMap = new ymaps.Map('ms', {
                        center: [56.316797,43.987925],
                        zoom: 15
                        }),
                // Создаем многоугольник               
               myPolygon = new ymaps.Polygon([[
                    // Координаты вершин внешней границы многоугольника.
                ]],
              {},
              {
                strokeWidth: 6,
                strokeColor: '#0e6c9b',
                draggable: true
              }               
               
            );
            searchMap.geoObjects.add(myPolygon);
             myPolygon.editor.startDrawing();
             myPolygon.editor.startEditing();
             myPolygon.editor.events.add(['vertexadd'], function(e){
// ???
            });                
}

 

  

Как мне получить координаты многоугольника в ходе редактирования ? (событие установки новой вершины)

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

Используйте поиск по клубу

Это было первое, что я сделал. Но всёравно, спасибо.

Тем не менее, возвращаются координаты только 1 вершины:

 

             myPolygon.editor.events.add(['vertexadd'], function(e){

            var pixels = e.get('globalPixels'); 
               
                console.log( searchMap.options.get('projection').fromGlobalPixels(pixels, searchMap.getZoom()) );

            }); 

В этом случае передаются координаты каждой вершины. А хотелось бы получить координаты всего полигона сразу. Можно-ли както их получить? При этом, не только  при добавлении, но и при удалении вершин. Спасибо

а через замыкание не получилось?

Всеволод Шмыров
28 января 2016, 00:01
Можно слушать событие "change" у геометрии геообъекта
http://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/IPolygonGeometryAccess.xml#event-change
и вызывать метод getCoordinates
http://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/IPolygonGeometryAccess.xml#getCoordinates

Пример
http://jsfiddle.net/zeLwn/13/
спасибо v.shmyroff, бабушка-бэтмен
Пойду курить методы конвертации в апи координат для передачи в url
Есть какой-нибудь конвертер чтобы их пожать их (координаты вершин) и передавать в URL
Владислав Турман
28 января 2016, 00:01

JSON.stringify? Или я вас не понял?

обошёлся строкой.
Никто не сталкивался с проблемой:


// Создаем многоугольник

myPolygon = new ymaps.Polygon(coords_new,
{},
{
strokeWidth: 6,
strokeColor: '#0e6c9b',
draggable: true
}

);
searchMap.geoObjects.add(myPolygon);
myPolygon.editor.startDrawing();
myPolygon.editor.startEditing();

 

Карта рендерится но многогранник не появляется. При этом при попытке добавления вершин они создаются но между ними не строится многогранник.

console.log(coords_new)

даёт валидный Json:

[[56.314936638149, 43.988482899475], [56.320088186485, 43.979599423218], [56.319754310983, 43.994147724915], [56.316606197838, 43.993933148193], [56.314936638149, 43.988482899475]]

 Никаких ошибок в firebug Не валится.

 Центр карты в 56.316797,43.987925 в зоне видимости многоугольника (тут же он и создавался)

 

Ошибку нашёл :(

[ [[56.314936638149, 43.988482899475], [56.320088186485, 43.979599423218], [56.319754310983, 43.994147724915], [56.316606197838, 43.993933148193], [56.314936638149, 43.988482899475]] ]

 

Что бы получить все объекты с карты нужно:  
var objects = myMap.geoObjects._parentArray._baseArrayComponent._children;
Чтобы вытащить из полученного объекта координаты нужно:
var coords = objects._coordPath.coordinates;
v.fast,
Не надо использовать педальные поля. Тем более советовать эту глупость другим. Они будут недоступны в обфусцированной продакшн версии. Используйте только задокументированные интерфейсы
dimik,
Возможно тогда вы подскажете как это сделать с помощью задокументированных интерфейсов?
dimik,
Исправляюсь:

       myMap.geoObjects.each(function (geoObject) {
           geoObject.//то что вам нужно;
       });
v.fast,
Координаты получать через геометрию
geoObject.geometry.getCoordinates()


Кстати, это пост 2х летней давности. Думаю топикстартер уже во всем разобрался
dimik,
Первый результат по запросу получение координат полинома. Написал для тех кто будет искать подобное решение
dimik,
Мне твой ответ помог. Спасибо.