Czy istnieje sposób na ustawienie maksymalnego poziomu powiększenia fitBounds()
? Mój problem polega na tym, że kiedy mapa jest zasilana tylko jedną lokalizacją, powiększa się tak daleko, jak to możliwe, co naprawdę usuwa mapę z kontekstu i czyni ją bezużyteczną. Może mam złe podejście?
Z góry dziękuję!
google-maps
fitbounds
Codey W
źródło
źródło
Odpowiedzi:
Podoba mi się rozwiązanie mrt (szczególnie, gdy nie wiesz, do ilu punktów będziesz mapować lub dostosowywać), z wyjątkiem tego, że odrzuca znacznik, aby nie znajdował się już na środku mapy. Po prostu przedłużyłem ją o dodatkowy punkt odejmując 0,01 od szerokości i długości, tak aby znacznik był w środku. Działa świetnie, dzięki mrt!
źródło
fitBounds()
metody, jest to, że powiększanie odbywa się asynchronicznie: stackoverflow.com/questions/2989858/ ...Możesz skonfigurować swoją mapę
maxZoom
wMapOptions
(odwołanie do interfejsu API) w następujący sposób:Dzięki temu mapa nie będzie powiększać się głębiej podczas używania,
fitBounds()
a nawet usunie poziomy powiększenia z elementu sterującego powiększeniem.źródło
maxZoom
przed dopasowaniem granic, a następnie usunąć je ponownie, używającmap.setOptions({ maxZoom: undefined })
naidle
zdarzeniu wywołanym, zmieniając ograniczenia. Zapobiega to powiększaniu, pomniejszaniu efektu zamiast resetowania powiększeniaidle
zdarzenia.Innym rozwiązaniem jest rozszerzenie granic, jeśli wykryjesz, że są zbyt małe przed wykonaniem fitBounds ():
źródło
Korzystanie z opcji MaxZoom działa najlepiej, gdy nie zbliżasz się do zaznaczonych znaków.
źródło
Po dodaniu wszystkich rzeczywistych granic dodaj te linie
uzyskuje środek rzeczywistych granic, a następnie dodaje dwa dodatkowe punkty, jeden na północny wschód i jeden na południowy zachód od środka
To skutecznie ustawia minimalne powiększenie, zmienia wartość przesunięcia, aby zwiększyć lub zmniejszyć powiększenie
źródło
Jeśli dotyczy to jednej lokalizacji, można zamiast tego użyć setCenter () i setZoom ().
źródło
możesz użyć
w ten sposób ustawiasz właściwości mapy po zainicjowaniu mapy ... możesz ustawić je tyle razy, ile chcesz ... ale w twoim przypadku ... możesz ustawić je przed fitBounds ()
powodzenia, rarutu
źródło
Sposobem, w jaki zapobiegam powiększaniu mapy zbyt daleko, jest dodanie tego wiersza kodu:
Bezpośrednio po tym wierszu:
Możesz dowolnie zmienić poziom powiększenia na dowolny poziom, na który mapa nie ma być powiększana.
Jeśli masz jakieś problemy lub pytania, zostaw mi komentarz do wpisu na blogu, który napisałem o tym na http://icode4you.net/creating-your-own-store-locator-map-how-to-prevent-the- map-from-zooming-in-too-close-on-a-marker
źródło
Naprawdę podoba mi się rozwiązanie mrt i działa idealnie, jeśli zawsze masz tylko jeden punkt do pracy. Zauważyłem jednak, że jeśli obwiednia nie była oparta na jednym punkcie, ale punkty były bardzo blisko siebie, nadal mogło to spowodować zbyt duże powiększenie mapy.
Oto sposób, aby najpierw sprawdzić, czy punkty znajdują się w określonej odległości od siebie, a następnie, jeśli są mniejsze niż ta minimalna odległość, wydłuż granice o tę minimalną odległość:
Mam nadzieję, że to komuś pomoże!
źródło
Daje to bezpośrednią kontrolę nad maksymalnym dozwolonym powiększeniem przy dopasowywaniu granic.
źródło
Jeśli chodzi o mnie, rozwiązuję to, tworząc zdarzenie bezczynności po fitBounds. Działa idealnie. To chyba jedno z najczystszych rozwiązań
źródło
Rozwiązałem z tym fragmentem, ponieważ Mapy Google V3 są sterowane zdarzeniami:
możesz powiedzieć interfejsowi API, aby ustawił powiększenie na odpowiednią wartość, gdy wyzwala zdarzenie zoom_changed :
Użyłem początkowo, aby mapa nie powiększała się zbyt mocno wczytywania, gdy ewentualne dopasowanieBounds uległo zmianie, bez niego żadne zdarzenie powiększenia powyżej 11 byłoby niemożliwe dla użytkownika.
źródło
Po wywołaniu
fitBounds()
metody spróbuj ponownie ustawić poziom powiększenia. Zmusi to mapę do osiągnięcia tego poziomu powiększenia i wyśrodkowania we właściwym miejscu.źródło
Mam soulution opartą na ograniczaniu maksymalnego zoomu podczas dopasowywania granic. U mnie działa (testowane na Win 7 - IE 9, FF 13, Chrome 19):
źródło
I… oto kolejny.
Taki sam pomysł jak pan i Ryan, ale
(*) Uwaga: jeśli pudełko jest już wystarczająco duże, dodanie tych dwóch dodatkowych punktów nie powinno przynieść żadnego efektu. Nie potrzebujemy więc dalszych sprawdzeń.
EDYCJA: Nie jestem do końca pewien, czy moje obliczenia współczynnika są prawidłowe, biorąc pod uwagę, że mamy odwzorowanie Mercatora. Mogę to ponownie edytować ...
źródło
Odpowiedział już tutaj Google Maps v3: wymuszanie min. poziom powiększenia podczas używania fitBounds działa zgodnie z oczekiwaniami :) więc teraz, jeśli po dopasowaniu granic powiększenie jest mniejsze niż powiedzmy 13, możesz ustawić nowe powiększenie, które preferujesz
źródło
Oto moje rozwiązanie, które działa również, gdy dwa znaczniki są bardzo blisko. Efektywny maksymalny poziom powiększenia jest taki sam w obu sytuacjach. Więc nie kończymy niepotrzebnie powiększania, gdy jest więcej niż jeden znacznik
Efektem jest znowu zapewnienie maksymalnego zoomu bez użycia opcji maxZoom, co ma prawdopodobnie niepożądany efekt uniemożliwiający użytkownikowi powiększenie powyżej poziomu maxZoom za pomocą regulacji zoomu
Wcześniej obliczyłem maxLat, minLat, maxLng i minLng ...
źródło