我正在使用Google Maps API v3。我需要捕获地图上的所有idle事件,但是当我更改范围或通过代码缩放时,我不想看到它们。使用fitBounds方法时存在我的问题。我正在使用标志来确定事件是由于我还是用户而创建的。当我使用fitBounds时,如果更改了边界,则将其触发,但有时不会更改边界并且不会触发该事件,因此该标志将起作用。它使脚本忽略用户的下一个事件。这是我的代码:

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);
}

最佳答案

您在错误的位置将标志重置为false。尝试以下方法:

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而不是空闲事件可能更好。

关于javascript - 如何控制fitBounds是否会更改边界?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11929280/

10-09 18:12
查看更多