Leaflet

时间:2016-03-22 23:37:24

标签: 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})
});

我正在使用传单v0.7.7。

谢谢!

2 个答案:

答案 0 :(得分:5)

不幸的是,没有办法改变任何setView的持续时间,它会改变Leaflet 0.7.7 *中的当前缩放级别。任何动画缩放的持续时间都会被硬编码为0.25秒,并且由于setView接受zoom/pan options(不包括duration),您的duration:10.0将被忽略。< / p>

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

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

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

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

答案 1 :(得分:1)

另一种方式

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