Клуб API Карт

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

dmitry.a.ocipov
24 июня 2014, 14:56

Добрый день.

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

 

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){
// ???
            });                
}

 

  

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

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

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

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

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

 

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

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

            }); 

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

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

спасибо v.shmyroff, бабушка-бэтмен
Пойду курить методы конвертации в апи координат для передачи в url
Есть какой-нибудь конвертер чтобы их пожать их (координаты вершин) и передавать в URL

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,
Первый результат по запросу получение координат полинома. Написал для тех кто будет искать подобное решение