Leaflet中的动画setView()

Con*_*ett 1 leaflet

我的传单地图中有一个搜索栏,我希望从搜索栏中选择时,地图会慢慢缩放并平移到标记.我可以让它变焦和平移,但不是慢.我想要的效果类似于您在Google地球中输入某个位置并且视图从一个位置"飞行"到下一个位置时的效果.这是我的代码,它缩放到我的位置但不慢.

controlSearch = new L.Control.Search({layer:listOfMarkers, propertyName: 'IntersectionName', circleLocation:true,  position:'topleft'});
    map.addControl(controlSearch)

controlSearch.on('search_locationfound', function(e){
    map.setView(e.latlng,15, {animate:true, duration:10.0})
});
Run Code Online (Sandbox Code Playgroud)

我正在使用传单v0.7.7.

谢谢!

nat*_*der 6

不幸的是,没有办法改变任何setView改变Leaflet 0.7.7*中当前缩放级别的持续时间.任何动画缩放的持续时间都被硬编码为0.25秒,并且因为setView接受不包括的缩放/平移选项duration,您duration:10.0将被忽略.

但是,setView确实接受用于平移和缩放的单独选项,并且因为平移选项包括持续时间,您可以使用以下内容在当前缩放级别平滑平移:

map.setView(e.latlng, map.getZoom(), {
  "animate": true,
  "pan": {
    "duration": 10
  }
});
Run Code Online (Sandbox Code Playgroud)

我意识到这不是你想要的,但它更接近一步.

*在Leaflet 1.0b中,有一种flyTo方法可以产生你描述的效果,但在0.7.7中没有类似的东西.


Dos*_*nov 5

其他方式

map.flyTo(e.latlng, map.getZoom(), {
      animate: true,
      duration: 0.5
    });
Run Code Online (Sandbox Code Playgroud)