首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何控制fitBounds是否会更改边界?

如何控制fitBounds是否会更改边界?
EN

Stack Overflow用户
提问于 2012-08-13 14:39:53
回答 2查看 748关注 0票数 1

我使用的是谷歌地图应用程序接口v3。我需要捕获地图上的所有idle事件,但我不希望在通过代码更改边界或缩放时看到它们。当我使用fitBounds方法时,我的问题存在。我使用一个标志来决定一个事件是因为我还是用户而创建的。当我使用fitBounds时,如果边界改变了,它就会被触发,但有时边界不会改变,事件也不会被触发,所以标志是错误的。它会导致脚本忽略用户的下一个事件。下面是我的代码:

代码语言:javascript
复制
var flag = false;

google.maps.event.addListener(map, 'idle', function() {
    if(flag) {
        // ignore this event
    } else {
        // do some work
    }
    flag = false;
});

function fitBounds() {
    var bounds = new google.maps.LatLngBounds();
    for(var i=0; i<markers.length; i++) {
        var location = markers[i].getPosition();
        bounds.extend(location);
    }

    // I need something like whether bounds will change or not after fitBounds?
    flag = true;
    map.fitBounds(bounds);
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-13 16:14:23

您在错误的位置将标志重置为false。试着这样做:

代码语言:javascript
复制
google.maps.event.addListener(map, 'idle', function() {
   if(flag) {
         // ignore this event
          flag = false; // reset to false here
          return;
   } 
   else {
     // do some work
   }
});

function fitBounds() {
        flag = true;
    // rest of the function....
}

除此之外,最好将侦听器附加到bounds_changed,而不是idle事件。

票数 1
EN

Stack Overflow用户

发布于 2012-08-13 15:51:05

我不确定它是否会像api在计算边界时考虑控件(在地图的边上),有时不考虑,但我认为值得一试:

代码语言:javascript
复制
if (!map.getBounds().contains(bounds.getNorthEast()) ||
    !map.getBounds().contains(bounds.getSouthWest()))
{
    flag = true;
    map.fitBounds(bounds);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11929280

复制
相关文章

相似问题

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