Клуб API Карт

Как правильно вставить координаты в Polygon?

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

Привет!

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

Значения сохраняются в SQL и при перезапуски страницы от туда подгружаються.

Вопрос в том как правильно вставить координаты из SQL в созданный полигон (с учетом того что мы заранее незнаем сколько у него точек)

 

Сначала я брал координаты только что созданного и отредактированного полигона и переводил их в строку

 

formPoly.geometry._Dy._nn[0].join(' ');

 Получается такая строка 53.2223,50.3584 53.3223,50.4584 53.2223,50.3584

Из нее видим что получается пользователь создал 3 точки.

Далее эта строка сохраняется в SQL, выборка из SQL создает json параметр координат.

При перезагрузки страницы создается копия ранее созданного полигона, значение вставляються из SQL

Проблемма в том что конструктор координат полигона имеет следющий формат

  

  formPoly = new ymaps.Polygon(
            [
                [[ ],[ ]]
            ])

  и если я туда просто вставлю свою строку координат то получиться вот так:

 

  formPoly = new ymaps.Polygon(
            [
                [53.2223,50.3584 53.3223,50.4584 53.2223,50.3584],[53.2223,50.3584 53.3223,50.4584 53.2223,50.3584]
            ])

 Что конечно неверно.

 

Кто сталкивался с этим, как правильно вставить неизвестное количество координат?

6 комментариев
Sergey Konstantinov
27 января 2016, 23:59
1.
> formPoly.geometry._Dy._nn[0].join(' ');
Так делать не нужно, пользуйтесь публичным интерфейсом.
2. Конструктор Polygon принимает аргументом *тройной* массив точек, а не двойной.

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

 

Вы наверное меня не так поняли.

Допустим у меня есть строка из 3 точек

53.3002,50.4216  50.4216,50.5216  51.5216,51.5216

я могу ее разделить и вставить в конструктор

например так:

[

     [[coord[1],[coord[2],[coord[3]]

]

 

но что если пользователь не 3 точки сделал а скажем 6?

Как в конструкторе предусмотреть массив на неизвестное заранее количество точек?

примерно так?

[

    [coord[i]]

]

Мы то вас поняли, а вот поняли ли Вы нас?

Если Вы не знаете как перевести строку в массив координат надо хоть чтото прочитать про Javascript

var s = '53.3002,50.4216 50.4216,50.5216 51.5216,51.5216';

s.split(' ').map(function (it) {

return it.split(',').map(Number);

})

Спасибо за пояснение =)