Ustawiam wiele znaczników na mojej mapie i mogę ustawić statycznie poziomy powiększenia i środek, ale chcę, aby pokryć wszystkie znaczniki i powiększyć jak najwięcej, mając wszystkie rynki widoczne
Dostępne metody są następujące
i
Nie setCenter
obsługuje danych wejściowych z wielu lokalizacji ani tablicy lokalizacji, ani setZoom
nie ma tego typu funkcji
javascript
google-maps-api-3
Trikaldarshi
źródło
źródło
latlng
dobounds
obiektu za każdym razem, gdy dodajesz znacznik i ustaw mapę tak, aby pasowała do ostatecznych granic. Zobacz odpowiedź tutaj: stackoverflow.com/questions/1556921/...Odpowiedzi:
Musisz użyć tej
fitBounds()
metody.Dokumentacja od developers.google.com/maps/documentation/javascript :
źródło
getPosition
pochodzi ta metoda?LatLngLiteral
zamiast instancji Markera. npbounds.extend({lat: 123, lng: 456})
.fitBounds(bounds, int)
co pozwoli ci mieć trochę odstępu między znacznikami a krawędziami mapy (lub mniej miejsca, jeśli potrzebujesz). Zobacz dokumentacjęAby rozszerzyć podaną odpowiedź o kilka przydatnych sztuczek:
AKTUALIZACJA:
Dalsze badania w tym temacie pokazują, że fitBounds () jest funkcją asynchroniczną i najlepiej wywołać manipulację Zoom za pomocą detektora przed wywołaniem Fit Bounds.
Dzięki @Tim, @ xr280xr, więcej przykładów na ten temat: SO: setzoom-after-fitbounds
źródło
addListenerOnce
onzoom_changed
do ustawienia powiększenia po zainicjowaniu jego wartości.yourMap
,map
ithis
. Może dobrym pomysłem jest uczynienie go bardziej spójnym.Rozmiar tablicy musi być większy od zera. Ο w przeciwnym razie będziesz mieć nieoczekiwane wyniki.
źródło
Jest to
MarkerClusterer
narzędzie po stronie klienta dostępne dla Google Map, jak określono tutaj w artykułach dla programistów Map Google , oto krótkie informacje na temat jego użycia:Istnieje wiele podejść do robienia tego, o co prosiłeś:
Możesz o nich przeczytać pod podanym linkiem powyżej.
Marker Clusterer
używa klastrowania opartego na siatce do grupowania wszystkich znaczników, które chcą siatki. Grupowanie oparte na siatce polega na dzieleniu mapy na kwadraty o określonym rozmiarze (rozmiar zmienia się przy każdym powiększeniu), a następnie grupowaniu znaczników w każdym kwadracie siatki.Przed grupowaniem
Po klastrowaniu
Mam nadzieję, że tego właśnie szukałeś i to rozwiąże Twój problem :)
źródło