2015-12-07 4 views
2

Я пытаюсь создать механизм кеширования вместо того, чтобы принести всю карту. прямо сейчас я использую: getBounds() и получаю все точки в области, в которой пользователь просматривает.Листовка с прокладкой

То, что я хотел бы получить, - это отступы для границ. , например:

map.getBounds(50) 

должен принести границы пользователь в настоящее время просматривает X2 область .. или, может быть, уровень один зум ниже область .. но не прерывая пользователя.

В настоящее время fitBounds (JSFiddle Demo Here) делает более или менее то, что просто приводит к изменению вида пользователя :(.. Я также попытался получить границы от функции it self (fitBounds), но он выводит центр и зум не ограничивает (и i техника его подводит успеха в результате правильных оценок из них)

ответ

3

вы пробовали pad method на L.LatLngBounds вы получаете от map.getBounds()? Это специально сделано, чтобы увеличить размер некоторых пределах.

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

Например, если вы хотите, чтобы увеличить размер ваших границ 1 вьюпорте в каждом направлении, вы могли бы сделать:

var newBounds = map.getBounds().pad(1) 

Теперь, если вы хотите, чтобы удвоить площадь в пределах (приблизительно, не принимая во внимание проекции), вы должны увеличить общую длинув каждой оси с помощью SQRT (2), следовательно, увеличить границы в каждом направлении SQRT (2)/2:

var doubleAreaBounds = map.getBounds().pad(Math.sqrt(2)/2) 
+0

Удивительно! я пропустил это полностью, большое спасибо! – Mike