小编blu*_*uce的帖子

在调用fitBounds后,google maps api v3 zoom_changed事件被触发两次

我正在开发一个与谷歌地图集成的网络应用程序,我在调用fitBounds后遇到zoom_changed事件触发两次的问题.我必须使用fitBounds的唯一引用是在updateMap中.我附加事件监听器的唯一时间是在createMap中.

对zoom更改处理程序的第二次调用导致另一个触发器更新映射.

我已经读过这篇文章:在地图上调用fitBounds函数时不要触发'zoom_changed'事件

该标志适用于第一个事件.但为什么还有另一个zoom_changed事件被触发?

更好的是,如何防止第二个zoom_changed事件被触发?

这是我在控制台日志中看到的内容:

updateMap, fitbounds: 0
calling fitbounds...
zoom changed
mapEventHandler, fitbounds: 1
zoom changed
mapEventHandler, fitbounds: 0
Run Code Online (Sandbox Code Playgroud)

这是我的更新映射函数的代码,它调用fitBounds:

var mapZoomOrDragEventInProgress = false;
var fitBoundsCalledCount = 0;
var map = null;

updateMap = function () {
    console.log("updateMap, fitbounds: " + fitBoundsCalledCount);

    var bounds = fitBoundsForVenues();

    deleteAndUpdateMarkers();

    if (!mapZoomOrDragEventInProgress) {
        bn.spg.map.vars.fitBoundsCalledCount++;
        if (markers.length > 1) {
            console.log("calling fitbounds...");
            map.fitBounds(bounds);
        } else {
            console.log("setting zoom...");
            map.setCenter(bounds.getCenter());
            map.setZoom(13);
        }
    }

    mapZoomOrDragEventInProgress = false;
}
Run Code Online (Sandbox Code Playgroud)

这是我的创建地图功能: …

javascript events google-maps google-maps-api-3

5
推荐指数
1
解决办法
3560
查看次数