2012-09-28 2 views
3

Мой код:Изменить масштаб после маршрутовService.route?

directionsService.route(request, function (response, status) { 
    if (status == google.maps.DirectionsStatus.OK) { 
     directionsDisplay.setDirections(response); 

     map.setZoom(2); 
    } 
}); 

но setZoom (2) не будет работы. Кажется, что .setDirections is asynch. Не удается установить масштаб после отслеживания маршрута?

Пробовал также с:

google.maps.event.addListener(directionsDisplay, 'directions_changed', function() { 
    map.setZoom(2); 
}); 

но карта не будет увеличить ...

ответ

7

DirectionsService не меняет трансфокации, DirectionsDisplay (AKA DirectionsRenderer) делает.

DirectionsRenderer имеет опцию preserveViewport, которая, если включена и установлена ​​в true, не позволит ей изменить масштаб (и центр) карты.

Если вы хотите установить центр, основанный на результатах DirectionsService, увидеть мой ответ на этот похожий вопрос:

google map zoom after directions

Если вы хотите отцентрируйте DirectionsRenderer бы установить, используйте границы DirectionsResult.

Вы также можете прослушать событие direction_changed и установить масштаб при его возникновении, не уверенный, что это будет работать или нет.

+1

Нет, я просто хочу изменить масштаб после маршрутизации дороги. Например, putTimeout (function() {map.setZoom (10);}, 2000); в конце кода – markzzz

+0

На самом деле, я не прихожу из «увеличенной» карты, я просто загружаю карту с помощью DirectionsService. Но я загружаю в контейнер, который может менять высоту. Поэтому для каждого холста мне нужен конкретный масштаб. Нет никакого обратного вызова после 'setDirections()'? – markzzz

+0

[direction_changed event] (https://developers.google.com/maps/documentation/javascript/reference#DirectionsRenderer), как упоминалось в моем ответе. – geocodezip

Смежные вопросы