我试图让谷歌地图连续平稳地平移,除非用户将鼠标移动到地图上。使用'idle'事件处理程序会导致一个起伏不定的泛盘动画。使用其他事件不会得到结果。我的initPan()
函数的递归只是导致页面崩溃。这里是'idle'连续平移方法的示例。
function initialize() {
var myOptions = {
zoom: 5,
center: markers.sanjose,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById('map_canvas'),
myOptions);
google.maps.event.addListener(map, 'idle', function() {
initPan(map);
});
google.maps.event.addListener(map, 'mouseout', function() {
stopPan(map);
});
}
function initPan(map) {
map.panBy(5, 0);
}
function stopPan(){
}
没有很多观点,没有评论,但如果有人遇到这种情况,这是我的解决方案。
在通过用户事件触发重复方法时,例如panBy()
,我遇到了API V3的问题。虽然V2有"moveend"事件,但它被替换为"idle"事件。然而,"idle"在pan发生后有一个短暂的延迟。另一个选择是使用'bounds_changed'事件,但这个事件每秒触发多次,导致地图永远不会加载瓦片(因此没有平移外观)。
我最终通过在'bounds_changed'中添加超时延迟来解决这个问题,清除了会叠加在多个事件触发器上的超时。这是解决这个问题的代码片段。
google.maps.event.addListener(map, 'bounds_changed', function() {
if (moving) {
if (myTimeout) {
window.clearTimeout(myTimeout);
}
myTimeout = window.setTimeout(initPan(map), 2200);
}
});
我在API论坛上找到了解决方案,您可以在这里看到我工作连续平移的示例。如果这没有任何意义,请查看示例中的完整代码,祝您好运。