Клуб API Карт

Как отцентровать карту по середине маршрута и настроить zoom таким образом, чтобы весь путь влезал в область видимости?

mallinna.rst
30 октября 2015, 15:09

После построения маршрута изменяются координаты опорных точек. 

Для обновления используется 

multiRoute.model.setReferencePoints(referencePoints);

Затем центрируется и маштабируется карта

 myMap.setBounds(multiRoute.getBounds(),true);

 

После вызова функции myMap.setBounds не помещается маршрут.

Маршруту задана опция route.options.set("boundsAutoApply", true);


Как можно отцентрировать мультимаршрут?

9 комментариев
Подписаться на комментарии к посту
Если задаете boundsAutoApply, не надо делать карте setBounds

При начальном построении маршрута - эта опция отлично работает.

Но при изменении координат начальной точки весь маршрут не помещается.

 Скриншот карты 

Нужна ссылка на этот код

Ссылка - http://jsfiddle.net/qqy024r7/10/

При  клике на карту строится маршрут - правильно центрируется.

 

При переключении офиса или при клике так, что маршрут выходит за пределы карты - не центрируется маршрут.

В обработчике requestsuccess, т.е. когда маршрут обновился, делайте myMap.setBounds(multiRoute.getBounds(),true);

Только всегда, а то у вас там once.

http://jsfiddle.net/qqy024r7/21/ строка 278

Добавлен обработчик

multiRoute.model.events.add("requestsuccess", function() {

   myMap.setBounds(multiRoute.getBounds(),true);

  });

 

При клике на карте, когда построен маршрут - получаются координаты нового положения начала маршрута и весь путь маршрута не виден на карте. Скриншот

https://yadi.sk/i/EM4Cy4Kfk8deq

Как сделать, чтобы маршрут помещался?

Зачем вы передаете true вторым параметром в setBounds.

Он там ждет объект

http://jsfiddle.net/qqy024r7/22/

myMap.setBounds(multiRoute.getBounds(), {checkZoomRange:true});


Опцию checkZoomRange - можна таким способом указать?