Leaflet边界带有填充

10

我正在尝试创建缓存机制,而不是获取整个地图。 目前我使用:getBounds() 接收用户当前查看区域内的所有点。

我想要实现的是边界补白。 例如:

map.getBounds(50)

应该将用户当前查看的边界框扩大2倍的面积,或者是缩小一个缩放级别的面积,但不会打断用户。

目前的 fitBounds (JSFiddle演示在此) 差不多可以做到这一点,只不过会改变用户的视图 :( .. 我还尝试从函数本身(fitBounds)获取边界框,但它输出的是中心和缩放级别而不是边界框(我也没有成功地从它们中得出正确的边界框)

1个回答

18

你尝试过在从map.getBounds()获取的L.LatLngBounds上使用pad方法吗?它是专门用来增加某些边界的大小。

返回通过将当前边界在每个方向上按给定百分比扩展而创建的更大边界。

例如,如果你想在每个方向上将边界的大小增加1个视口,则可以执行以下操作:

var newBounds = map.getBounds().pad(1)

如果您想将边界的面积加倍(粗略估计,不考虑投影),则每个轴上的总长度必须增加sqrt(2),因此每个方向上的边界都必须增加sqrt(2)/2:

var doubleAreaBounds = map.getBounds().pad(Math.sqrt(2) / 2)

1
太棒了!我完全错过了它,非常感谢你! - Mike

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接