Mapbox如何在鼠标滚动中控制地图缩放速度

时间:2018-01-08 11:53:12

标签: javascript mapbox

我使用mapboxhttps://www.mapbox.com)我希望在鼠标滚动期间缩短地图缩放速度。显然,API文档没有速度控制,除非它是例如flyTo()方法。

我试图控制在缩放事件期间触发的缩放事件的速度,但这也不起作用。在鼠标滚动缩放期间有没有办法控制缩放的速度?

1 个答案:

答案 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);              
 }