4

我的代码:

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

但是地图不会缩放...

4

2 回答 2

8

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

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

如果要根据方向服务的结果设置中心,请参阅我对这个类似问题的回答:

谷歌地图缩放后的方向

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

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

文档中使用 zoom_changed 事件的示例

于 2012-09-28T13:42:11.573 回答
0

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

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

为我工作!

于 2018-06-08T10:15:33.650 回答