leaflet.js 地图平移时触发事件
leaflet.js fire event when map pans
当出现新的 GPS 坐标时,我在 backbone 视图上使用此功能:
onLocationFound: function(position){
// this function runs every time we get a valid GPS fix
// here I have some preparation code, like getting "position"
if(myApp.mapView.hasCenter){
this.map.panTo(position.coords.latlng);
}
},
然后,在另一段代码中我运行这个函数:
this.map.on("moveend", function(s){
that.doDrawReports();
});
我的问题是 moveend
事件没有捕捉到我的 panTo
操作。我怎样才能抓住它?
无法重现您的问题抱歉:
- 使用 Leaflet 0.7.7:http://jsfiddle.net/ve2huzxw/186/
- 使用 Leaflet 1.0.0-beta.2:http://jsfiddle.net/3v7hd2vx/20/
测试代码:
var map = L.map("map").setView([48.86, 2.35], 12);
setInterval(function () {
var currentPos = map.getCenter();
map.panTo([
currentPos.lat,
currentPos.lng + 0.1
])
}, 2000);
map.on("moveend", function () {
console.log(map.getCenter().toString());
});
即使将间隔减少到 50 毫秒,moveend
侦听器仍会被调用。
当出现新的 GPS 坐标时,我在 backbone 视图上使用此功能:
onLocationFound: function(position){
// this function runs every time we get a valid GPS fix
// here I have some preparation code, like getting "position"
if(myApp.mapView.hasCenter){
this.map.panTo(position.coords.latlng);
}
},
然后,在另一段代码中我运行这个函数:
this.map.on("moveend", function(s){
that.doDrawReports();
});
我的问题是 moveend
事件没有捕捉到我的 panTo
操作。我怎样才能抓住它?
无法重现您的问题抱歉:
- 使用 Leaflet 0.7.7:http://jsfiddle.net/ve2huzxw/186/
- 使用 Leaflet 1.0.0-beta.2:http://jsfiddle.net/3v7hd2vx/20/
测试代码:
var map = L.map("map").setView([48.86, 2.35], 12);
setInterval(function () {
var currentPos = map.getCenter();
map.panTo([
currentPos.lat,
currentPos.lng + 0.1
])
}, 2000);
map.on("moveend", function () {
console.log(map.getCenter().toString());
});
即使将间隔减少到 50 毫秒,moveend
侦听器仍会被调用。