带有填充的传单边界

Leaflet bounds with padding

我正在尝试创建缓存机制而不是引入整个地图。 现在我使用: getBounds()并接收用户当前查看区域的所有点数。

我想要实现的是边界填充。 例如:

map.getBounds(50)

应该将用户当前正在查看的范围限制为 X2 区域..或者可能是一个缩放级别较低的区域..但不会打扰用户。

目前 fitBounds (JSFiddle Demo Here) 或多或少会改变用户的视图 :( .. 我也尝试从它自己的函数 (fitBounds) 获取边界,但它输出中心和缩放没有界限(我没有成功地从他们那里得到正确的界限)

您是否在 map.getBounds() 获得的 L.LatLngBounds 上尝试过 pad method?它是专门用来增加一些边界的大小的。

Returns bigger bounds created by extending the current bounds by a given percentage in each direction.

例如,如果您想在每个方向上将边界的大小增加 1 个视口,您可以这样做:

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

现在如果你想将边界的 area 加倍(近似值,不考虑投影),你将不得不增加 total 每个轴的长度乘以 sqrt(2),因此将每个方向的边界增加 sqrt(2) / 2:

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