我正在使用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/