【发布时间】:2020-10-10 13:30:43
【问题描述】:
鉴于下面的地图,我想放大/从外部视图移动到内部视图,保持左上角完全相同。
传单似乎只允许移动到中心,而不是左上角和缩放级别。 我知道当前的缩放级别、边界和中心以及新的缩放级别和所需的左上角。 如何计算粉红色 X? 或者,如果有其他方法可以更改为新视图,我该怎么做?
【问题讨论】:
标签: leaflet
鉴于下面的地图,我想放大/从外部视图移动到内部视图,保持左上角完全相同。
传单似乎只允许移动到中心,而不是左上角和缩放级别。 我知道当前的缩放级别、边界和中心以及新的缩放级别和所需的左上角。 如何计算粉红色 X? 或者,如果有其他方法可以更改为新视图,我该怎么做?
【问题讨论】:
标签: leaflet
这种情况不需要计算中心(事实上,这是一个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 );
【讨论】: