当用户移动地图时捕获bounds_changed事件,但不捕获setCenter方法

2023-12-06

我想在用户移动地图、更改缩放时监听“bounds_changed”事件,但我不希望当我的程序调用 setCenter 或 setZoom 方法时触发它。所以我尝试在设置中心之前删除事件,然后再次添加它。但是,这没有用,我的活动仍在被解雇。

var currentBoundsListener = null;

function addBoundsChangedListener() {
    currentBoundsListener = google.maps.event.addListener(map, 'bounds_changed', function () {
        // Whatever.
    });
}

function setCenter(lat, lng) {
    google.maps.event.removeListener(currentBoundsListener);
    var geo = new google.maps.LatLng(lat, lng);
    map.setCenter(geo);
    addBoundsChangedListener();
}

我认为在向地图添加新侦听器后,地图正在创建bounds_changed 事件,就像该事件是异步的一样。


bounds_changed 事件确实是异步触发的,因此,您可以使用全局布尔变量来指示何时忽略它,而不是删除侦听器,例如:

var ignore = false; // this var is global;
currentBoundsListener = google.maps.event.addListener(map, 'bounds_changed', function () {
if(ignore) {
   ignore = false;
   return;
}

// Whatever.
});


function setCenter(lat, lng) {
    var geo = new google.maps.LatLng(lat, lng);
    ignore = true;
    map.setCenter(geo);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当用户移动地图时捕获bounds_changed事件,但不捕获setCenter方法 的相关文章

随机推荐