我想将传单中的平移限制为路径,最好不止一个。我们的想法是,只能沿着道路或预先计算的轨迹进行平移,而不是在地图上自由地进行平移。
http://leafletjs.com/reference.html#map-options
maxBounds似乎仅限于矩形区域。动态重置矩形以使用户靠近路径似乎是一种可能,但不是一个漂亮的。
答案 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.Path
,L.MultiPolyline
,L.Polygon
,L.MultiPolygon
,{{1} }和L.Rectangle
。
它也存在于图层L.Circle
和L.CircleMarker
上,如果您需要在地图上设置多个要素的边界,它会非常方便。您在L.FeatureGroup
中包含它们,然后在L.GeoJSON
实例上调用L.FeatureGroup
方法:
getBounds
关于Plunker的示例:http://plnkr.co/edit/yoax8c?p=preview
参考: