Клуб API Карт

map.panTo() некорректно работает с массивом строковых данных

denis.ezhkov
15 сентября 2014, 16:33

Это не вопрос. Проблема локализована.


Исходные данные: имеется список точек на странице, выведенный в виде 

<ul>

<li data-lat="xx.xxx" data-long="xx.xxx"></li>

...

</ul>

Пробегаясь по списку, дергаю координаты, формирую их в пары [lat, long], создаю Placemark и помещаю её на карту и одновременно в массив placemarks[] для последующих операций.

Впоследствии при клике на элемент списка, я нахожу в массиве нужную точку, забираю её координаты coords = placemarkgeometry.getCoordinates(), а затем выполняю map.panTo(coords). Метод отрабатывает некорректно, карта перемещается в океан. Причем map.setCenter(coords) отрабатывает как нужно.

Было выяснено следующее: координаты точек из data-атрибутов забираются в строковом виде. Соответственно пары координат тоже имеют вид ["xx.xxx", "xx.xxx"].

Карта корректно создает по строковым координатам метки и даже устанавливает центр, а вот метод panTo() правильно работает только с числовыми координатами. Приходится на этапе забора data-атрибутов явно конвертить их в числовой тип.

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

Судя по документации так и должно быть

http://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Map.xml#panTo

 

center*

Тип: Number[] | Object[]

 

Центр карты или массив точек для последовательного обхода.

Согласен. Меня сбило с толку, что map.setCenter() работает корректно с тем же массивом. Хотя согласно документации, метод также принимает Number[]