Leaflet.js fitBounds有填充?

时间:2013-10-16 15:50:05

标签: leaflet

我正在尝试在传单地图中设置fitBounds选项,如下所示:

var bounds = new L.LatLngBounds([[Math.max(lat, borneLat), Math.max(lng, borneLng)], [Math.min(lat, borneLat), Math.min(lng, borneLng)]]);
map.fitBounds(bounds, { padding: [20, 20] });

但是这似乎没有添加任何填充?至少地图“缩放级别”不会改变,并且它总是显示边缘中的两个点(即一个位于最右上方,另一个位于最左下方)。对于一些标记集,它工作正常,缩放在一个不错的水平,你可以很好地看到一切。然而,当物品彼此非常接近时,似乎它放大了一点,除非我能用一些“填充物”。

另外我不确定这样的边界是否正确?我应该只使用:

var bounds = [[Math.max(lat, borneLat), Math.max(lng, borneLng)], [Math.min(lat, borneLat), Math.min(lng, borneLng)]];

4 个答案:

答案 0 :(得分:45)

map.fitBounds(bounds, {padding: []})应该有效。我建议你改变填充到例如。 [50, 50],也许你的填充值太小。

查看此JSFiddle example

答案 1 :(得分:7)

我遇到了这个问题。据我所知,填充由缩放控制。在我的示例中,10以下的所有填充设置都没有区别。一旦填充变为10,地图就会缩小一级并且有填充。增加填充值没有任何影响,直到达到另一个缩小级别为止。

答案 2 :(得分:2)

FWI,您还可以像这样设置地图的最大缩放级别:

var map = L.mapbox.map('map', 'mapbox.emerald', {
    maxZoom: 16
});
通过这种方式,您可以避免地图放大过多,以防标记距离太近。

答案 3 :(得分:0)

默认情况下,传单仅在整数值缩放级别之间缩放。较早版本1.0.0的“ zoomSnap”参数提供了“分数缩放”:

var map = L.map('map', {
    zoomSnap: 0.1
});

这将使较小的填充值可见,但也会影响scrollWheelZoom行为。