首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当用户移动地图而不是setCenter方法时捕获bounds_changed事件

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

Stack Overflow用户
提问于 2012-08-03 15:06:22
回答 1查看 3.5K关注 0票数 3

我想在用户移动地图时监听'bounds_changed‘事件,更改缩放,但我不希望它在我的程序调用setCenter或setZoom方法时被触发。因此,我尝试在设置中心之前删除事件,并在设置中心之后添加它。然而,它并没有起作用,我的事件仍在被触发。

代码语言:javascript
运行
复制
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事件的,就像事件是异步的一样。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-03 15:34:22

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

代码语言:javascript
运行
复制
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);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11790905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档