我使用mapbox
(https://www.mapbox.com)我希望在鼠标滚动期间缩短地图缩放速度。显然,API文档没有速度控制,除非它是例如flyTo()方法。
我试图控制在缩放事件期间触发的缩放事件的速度,但这也不起作用。在鼠标滚动缩放期间有没有办法控制缩放的速度?
答案 0 :(得分:0)
我最终自己解决了这个问题。我通过
禁用了地图框滚动map.scrollWheelZoom.disable();
然后在持有地图的div ID上对wheel事件应用标准jquery。
$(document).on('wheel','#map', function(e){
e.preventDefault();
if(e.originalEvent.wheelDelta/120 > 0) {
scrollZoomMap('up')
}
else{
scrollZoomMap('down')
}
}
和scollZoomMap函数看起来像这样
function scrollZoomMap(dir){
//console.log("dir : " + dir);
var newZoom = null;
var debounce;
var el = map; //the mapbox instance.
latLng = el.getCenter();
var latitude = latLng["lat"];
var longitude = latLng["lng"];
var currentZoom = el.getZoom();
if (debounce) clearTimeout(debounce);
debounce = setTimeout(function(){
debounce = null;
if(dir == "up"){
newZoom = currentZoom + 1;
}else{
newZoom = currentZoom - 1;
}
if( newZoom > 0 && newZoom < 22){
//console.log("newZoom : " + newZoom);
el.setView([latitude, longitude], newZoom);
}
}, 300);
}