Leaflet 中的动画 setView()

Animated setView() in Leaflet

我的传单地图中有一个搜索栏,我希望地图在从搜索栏中选择时缓慢缩放和平移到标记。我可以让它缩放和平移但速度不慢。我想要的效果类似于您在 Google 地球中输入一个位置,然后 'flys' 从一个位置到下一个位置的视图。这是我的代码,它缩放到我的位置但速度不慢。

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

我正在使用传单 v0.7.7。

谢谢!

不幸的是,在 Leaflet 0.7.7* 中,无法更改任何 setView 更改当前缩放级别的持续时间。任何动画缩放的持续时间都被硬编码为 0.25 秒,并且因为 setView 接受 zoom/pan options,其中不包括 duration,您的 duration:10.0 将被忽略。

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

map.setView(e.latlng, map.getZoom(), {
  "animate": true,
  "pan": {
    "duration": 10
  }
});

我知道这不是您要找的东西,但离您更近了一步。

*在Leaflet 1.0b中,有一个flyTo method,它产生了你描述的效果,但在0.7.7中没有类似的东西。

另一种方式

map.flyTo(e.latlng, map.getZoom(), {
      animate: true,
      duration: 0.5
    });