Подтвердить что ты не робот

Leaflet.js fitBounds с дополнением?

Я пытаюсь установить параметр fitBounds на карточке листовка следующим образом:

var bounds = new L.LatLngBounds([[Math.max(lat, borneLat), Math.max(lng, borneLng)], [Math.min(lat, borneLat), Math.min(lng, borneLng)]]);
map.fitBounds(bounds, { padding: [20, 20] });

Однако, похоже, это не добавляет никаких дополнений? по крайней мере, "уровень масштабирования" карты не изменяется, и он всегда показывает две точки в ребрах (т.е. один сверху справа, а другой - внизу слева). Для некоторых наборов маркеров он работает нормально, зум находится на достойном уровне, и вы можете видеть все красиво. Однако, когда элементы довольно близки друг к другу, кажется, что он слишком сильно масштабируется, если я не могу поместиться с некоторым "дополнением".

Также я не уверен, что границы будут такими же правильными? Вместо этого я должен использовать только:

var bounds = [[Math.max(lat, borneLat), Math.max(lng, borneLng)], [Math.min(lat, borneLat), Math.min(lng, borneLng)]];
4b9b3361

Ответ 1

map.fitBounds(bounds, {padding: []}) должен работать. Я предлагаю вам изменить наложение, например. [50, 50], возможно, ваши значения заполнения слишком малы.

Выделите JSFiddle exmaple.

Ответ 2

Я столкнулся с этой проблемой. Насколько я понимаю, прокладка контролируется масштабированием. В моем примере все настройки дополнений до 10 не имеют значения. Как только отступы пройдут до 10, карта будет уменьшена на один уровень и будет добавление. Furhter, увеличивающий значение прокладки, не имеет никакого влияния, пока он не станет настолько большим, чтобы достигнуть другого уровня уменьшения.

Ответ 3

FWI, вы также можете установить максимальный уровень масштабирования на карту следующим образом:

var map = L.mapbox.map('map', 'mapbox.emerald', {
    maxZoom: 16
});

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