传单:如何缩放以固定位置?

时间:2020-06-20 10:46:01

标签: leaflet

鉴于下面的地图,我想从外部视图放大/移动到内部视图,并保持左上角完全相同。

传单似乎只能移动到中心,而不是左上角和缩放级别。 我知道当前的缩放级别,范围和中心以及新的缩放级别和所需的左上角。 如何计算粉红色X? 另外,如果还有另一种更改到新视图的方法,我该怎么做?

Example map

1 个答案:

答案 0 :(得分:1)

不需要为这种情况计算中心(实际上,这是XY problem);看来您错过了setZoomAround method of L.Map,它确实是您想做的第一件事:

setZoomAround(<LatLng> latlng, <Number> zoom, <Zoom options> options)

缩放地图,同时保持地图上指定的地理位置不变(例如,内部用于滚动缩放和双击缩放)。

setZoomAround(<Point> offset, <Number> zoom, <Zoom options> options)

缩放地图,同时保持地图上相对于左上角的指定像素不变。

要么获得地图范围的西北角,然后调用setZoomAround,例如...

map.setZoomAround( map.getBounds().getNorthWest(), newZoomLevel );

...或将所需的固定像素坐标包装在L.Point中,对于地图的左上角为[0, 0],例如...

map.setZoomAround( L.point([0, 0]), newZoomLevel );