编程语言
首页 > 编程语言> > javascript-当用户移动地图而不是setCenter方法时,捕获bounds_changed事件

javascript-当用户移动地图而不是setCenter方法时,捕获bounds_changed事件

作者:互联网

我想在用户移动地图,更改缩放比例时监听“ 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);
}

标签:google-maps,google-maps-api-3,javascript
来源: https://codeday.me/bug/20191201/2077244.html