Эквивалент map.cameraForBounds без экземпляра Mapbox GL Map

С помощью Mapbox GL JS я могу получить центр и уровень масштабирования, чтобы показать всю заданную ограничивающую рамку, используя _ 1_:

const {center, zoom} = map.cameraForBounds(
  [
    [sw.lng, sw.lat],
    [ne.lng, ne.lat],
  ],
  {
    padding: 20,
    bearing,
    pitch,  // probably ignored?
  },
);

( > скажите, что pitch в порядке, но docs не я не упоминаю об этом, и также не , поэтому я предполагаю, что она проигнорирована.)

Обычно это отлично работает, но иногда возникают ситуации, когда я хочу выяснить центр / масштаб перед инициализацией карты. Похоже, что преобразование границ → камеры должно быть просто математическим, не требуя экземпляра карты.

Как я могу перейти от границ и пеленга (и, в идеале, шага) к центру / масштабированию, который будет включать эти границы без экземпляра карты Mapbox GL?


person danvk    schedule 10.05.2020    source источник


Ответы (1)


Вы не можете этого сделать по той простой причине, что вы не знаете, сколько пикселей будет занимать эта карта. Установка центра и масштабирования определяет, какую площадь (и какую) будет покрывать каждый пиксель в середине карты. Чем больше DOM-элемент карты, тем большую площадь будет покрывать область на карте.

person Steve Bennett    schedule 12.05.2020
comment
Я с удовольствием передаю в качестве параметров ширину и высоту в пикселях, это не проблема. - person danvk; 12.05.2020