我的代码:
directionsService.route(request, function (response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
map.setZoom(2);
}
});
但是setZoom(2)无效。似乎.setDirections
是异步的。
跟踪路线后无法设置缩放?
也试过:
google.maps.event.addListener(directionsDisplay, 'directions_changed', function () {
map.setZoom(2);
});
但地图不会缩放......
答案 0 :(得分:8)
DirectionsService不会更改缩放,DirectionsDisplay(AKA DirectionsRenderer)会更改。
DirectionsRenderer有一个选项 preserveViewport ,如果包含并设置为true,将阻止它更改地图的缩放(和中心)。
如果您想根据directionsService的结果设置中心,请参阅我对这个类似问题的回答:
google map zoom after directions
如果您想要DirectionsRenderer设置的中心,请使用DirectionsResult的边界。
您还可以侦听directions_changed事件,并在触发时设置缩放,不确定它是否有效。
答案 1 :(得分:0)
您可以使用getMap()方法,然后像这样设置地图对象的缩放
var map = directionsDisplay.getMap();
directionsDisplay.setDirections(response);
map.setZoom(12);
为我工作!