Клуб API Карт

Не получается спозиционировать карту так, чтобы были видны все метки

shtrih-org-ru
21 октября 2013, 07:22

Столкнулся с такой проблемой: при попытке отобразить все метки на карте с помощью myMap.setBounds(myMap.geoObjects.getBounds());, не всегда получается это сделать, а иногда вываливается ошибка (Uncaught TypeError: Cannot read property '0' of null). Странности возникают, если я пытаюсь вызвать метод myMap.geoObjects.getBounds(), когда часть меток без координат. Рабочий пример: http://jsfiddle.net/shtrih/EYjzU/

 

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

Используйте опцию checkZoomRange: true

В методе setBounds

http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/Map.xml#setBounds

Дополнил код предложенными параметрами (http://jsfiddle.net/shtrih/EYjzU/11/, строки 82-90), однако теперь ни один из вариантов карты не работает так, как должно. Функция myMap.geoObjects.getBounds() возвращает null в третьем случае (значение выводится в превью над картой) и вызывает ошибку, указанную в сабже

1.  addrObject.coords.split(',') возвращает массив строк. в конструктор метки нужно передавать массив чисел.

2. если Вы геокодируете адрес (асинхронный запрос на сервер), манипуляции с bounds надо производить после того как этот процесс будет завершен. Именно поэтому Вы получаете null

(Публикую код для тех, кто пришел в этот пост из поиска) 

http://jsfiddle.net/shtrih/EYjzU/12/