限制平移到Leaflet中的路径

时间:2015-10-08 20:07:24

标签: navigation leaflet panning

我想将传单中的平移限制为路径,最好不止一个。我们的想法是,只能沿着道路或预先计算的轨迹进行平移,而不是在地图上自由地进行平移。

http://leafletjs.com/reference.html#map-options

maxBounds似乎仅限于矩形区域。动态重置矩形以使用户靠近路径似乎是一种可能,但不是一个漂亮的。

1 个答案:

答案 0 :(得分:1)

实现此目的的方法确实是使用maxBounds选项或setMaxBounds实例的L.Map方法。例如,如果要将地图的边界限制为折线,则需要该折线的边界。您不必自己计算,您可以使用返回getBounds对象的L.Polyline类的L.LatLngBounds方法。该对象可以与setMaxBounds的{​​{1}}方法一起使用:

L.Map

关于Plunker的示例:http://plnkr.co/edit/jFw7mB?p=preview

var map = new L.Map('leaflet', {...}); var polyline = new L.Polyline([ [52.366667, 4.9], [51.507222, -0.1275] ]).addTo(map); // Get bounds var bounds = polyline.getBounds(); // Set view to bounds map.fitBounds(bounds); // Restrict view to bounds map.setMaxBounds(bounds); 扩展的所有类都存在getBounds方法,例如L.PathL.MultiPolylineL.PolygonL.MultiPolygon,{{1} }和L.Rectangle

它也存在于图层L.CircleL.CircleMarker上,如果您需要在地图上设置多个要素的边界,它会非常方便。您在L.FeatureGroup中包含它们,然后在L.GeoJSON实例上调用L.FeatureGroup方法:

getBounds

关于Plunker的示例:http://plnkr.co/edit/yoax8c?p=preview

参考: