考虑这个example。
如果中心圆在地图完成移动时包含标记,则我会平移地图,使标记位置成为地图的中心。
function mapMoveEnd(e) {
map.off('moveend', mapMoveEnd);
map.panTo(somewhere);
map.on('moveend', mapMoveEnd);
}
map.on('moveend', mapMoveEnd);
虽然在平移之前调用map.off('moveend'),但会调用事件处理程序。
这是一个错误还是我做错了什么?
编辑:下面的评论帮助我发现这是由于panTo()被动画化了。
答案 0 :(得分:0)
解决方案是将超时设置为超过动画
function mapMoveEnd(e) {
map.off('moveend', mapMoveEnd);
map.panTo(somewhere, { duration: .25 }); // seconds
setTimeout(function(){ map.on('moveend', mapMoveEnd); }, 300); // milliseconds
}
map.on('moveend', mapMoveEnd);