2013-06-24 16 views
37

im przy użyciu Leaflet.js i chciałbym jakoś centrum wyśrodkować mapę na znaczniki mam, tak aby wszystkie są w widoku użytkowników, gdy strona uruchamia. Jeśli wszystkie znaczniki są zgrupowane w małym obszarze, chciałbym, aby mapa była powiększana do poziomu, który wciąż wyświetla wszystkie.Leaflet.js centrum mapę na grupie znaczników

Wiem, że mapy google ma funkcję autocentrum, ale jak to zrobić z Leaflet.js?

Odpowiedz

80

Możesz użyć L.LatLngBounds, aby utworzyć obszar do powiększenia.

najpierw utworzyć granic i przekazać tablicę L.LatLngs:

var bounds = new L.LatLngBounds(arrayOfLatLngs); 

to utworzenie granic, które kapsułkowania w każdym punkcie, który jest zawarty w tablicy. Gdy masz granice, można zmieścić granice mapie, aby dopasować utworzonych związany:

map.fitBounds(bounds); 

Pozwoli to przybliżyć mapę, o ile może on przejść, a jednocześnie zawierający każdy punkt w swojej tablicy.

Można również wywołać metodę fitBounds, po prostu wywołując ją i przekazując do tablicy obiekty L.LatLng. Na przykład:

map.fitBounds([[1,1],[2,2],[3,3]]); 

To będzie działać dokładnie tak samo, bez konieczności tworzenia konkretnego L.LatLngBounds obiekt.

+0

To działa, chociaż z dopasowanymi granicami mógłbyś wspomnieć, że potrzebne są granice na północny zachód i południowy wschód. W przyszłości każdy, kto tego używa, będzie musiał znaleźć wartości maksymalne i minimalne dla szerokości i długości geograficznej na swoich znacznikach. – lorless

+6

'L.LatLngBounds' ma dwa konstruktory. Jednym z nich jest to, co opisujesz - dwa punkty, północny zachód i południowy wschód. Drugi konstruktor przyjmuje jednak tablicę "L.LatLngs" o dowolnym rozmiarze. Dodatkowo można wywołać 'L.LatLngBounds.extend()' w celu zwiększenia rozmiaru istniejących granic. Używając jednej z tych dwóch opcji, nigdy nie powinieneś mieć więcej niż/mniej niż czeków, aby samodzielnie zwiększyć rozmiar granic samodzielnie. –

+0

Doskonała odpowiedź i dziękuję za śledzenie komentarzy, ponieważ wyjaśnienie pomogło lepiej zrozumieć funkcjonalność (nawet 3 lata później) – redfox05