Нет необходимости вычислять центр для такой ситуации (и это, по сути, проблема XY ); похоже, вы пропустили метод setZoomAround
из 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 );