Листовка: Как увеличить, сохраняя фиксированное место? - PullRequest
0 голосов
/ 20 июня 2020

Учитывая карту ниже, я хотел бы увеличить / перейти от внешнего вида к внутреннему, сохранив в точности тот же верхний левый угол.

Листовка, кажется, позволяет перемещаться только к центру , а не верхний левый угол и уровень масштабирования. Я знаю текущий уровень масштабирования, границы и центр, а также новый уровень масштабирования и желаемый верхний левый угол. Как я могу рассчитать розовый Х? В качестве альтернативы, если есть другой способ перейти на новое представление, как я могу это сделать?

Пример карты

1 Ответ

1 голос
/ 20 июня 2020

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