在directionsService.route之后更改缩放?

时间:2012-09-28 13:33:42

标签: google-maps

我的代码:

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);
});

但地图不会缩放......

2 个答案:

答案 0 :(得分:8)

DirectionsService不会更改缩放,DirectionsDisplay(AKA DirectionsRenderer)会更改。

DirectionsRenderer有一个选项 preserveViewport ,如果包含并设置为true,将阻止它更改地图的缩放(和中心)。

如果您想根据directionsService的结果设置中心,请参阅我对这个类似问题的回答:

google map zoom after directions

如果您想要DirectionsRenderer设置的中心,请使用DirectionsResult的边界。

您还可以侦听directions_changed事件,并在触发时设置缩放,不确定它是否有效。

example from the documentation using the zoom_changed event

答案 1 :(得分:0)

您可以使用getMap()方法,然后像这样设置地图对象的缩放

var map = directionsDisplay.getMap(); directionsDisplay.setDirections(response); map.setZoom(12);

为我工作!