Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: googlemaps v3 i centrowanie na polyline
Forum PHP.pl > Forum > Po stronie przeglądarki
expert
Witam,

mam kod, który dynamicznie mi wstawia linie na mapę. Każda linia ma swoją nazwę. Mam możliwość za pomocą checkboxów pokazywania lini lub ich chowania. nie bardzo jednak wiem, jak zrobić, aby po wybraniu kilku lini mapa powiększała sie tak, aby widać było tylko te wybrane linie. Taki automatyczny zoom.

Pozdrawiam ciepło smile.gif
thek
Jeden link wart tysiąc słów wink.gif http://stackoverflow.com/questions/1556921...unds-and-center
expert
Coś nie bardzo chyba łapię...
Kod
var myLatLng = new google.maps.LatLng(moja_linia);
var bounds = new google.maps.LatLngBounds();
bounds.extend(myLatLng);
mapa.fitBounds(bounds);

Nie działa... Poproszę o jakąś podpowiedź.
thek
Eeeee... Od kiedy polilinia ma jeden punkt? wink.gif

Wiesz jak ten skrypt działa? Bierzesz punkt( myLatLng ) i tworzysz obiekt zakresu (bounds). Teraz rozszerzasz zakres tak by objął ów punkt (extend), jeśli jest on poza nim. Teraz mapę tak zoomujemy, aby pojawił się największy możliwy poziom zoom, który obejmuje wskazany zakres.

Co więc robisz źle? Zobacz co wrzucasz do myLatLng wink.gif Całą polilinię? A nie powinneś tylko punktów najbardziej skrajnych dla wszystkich elementów polilinii, czyli o największych i najmniejszych wartościach lat i lng? smile.gif Wystarczy, że podasz tylko te punkty. Te, które posiadają największe i najmniejsze latitude oraz longitude. To będzie zawsze od 2 do 4 punktów (włącznie). I tyle je wrzucasz do bounds.extend(). To jest cały trick. Ty wrzucasz cały obiekt polilinii i uwazasz, że wspomniana metoda ma poznać "magicznie" wszystkie wierzchołki polilinii i je sobie do zakresu sama wprowadzi. To identyczna sytuacja gdybym Ci dał mapę pokreśloną linią łamaną i "panel dodawania punktów" do zakresu ograniczony do wpisywania jednego punktu za każdym razem. Ty próbujesz od razu walnąć tam cały zestaw punktów. Tak się nie da. Albo przelecisz i dodasz wszystkie wierzchołki "zygzaka" w "panelu", albo będziesz sprytniejszy i znajdziesz te najbardziej "wystające" w każdą stronę i tylko je dodasz.

Za mało myślisz przy dokumentacji, która jest jasna jak cep i nawet w przykładzie to widać. Jeśli chcesz iluzję że coś działa jak chcesz - używaj Windowsa. Jeśli chcesz to zrobić porządnie zobacz dokładnie dokumentację i przykłady zanim zaczniesz robić ekwilibrystykę programistyczną by tego Windowsa też uzyskać wink.gif
expert
Dzięki wielkie za wytłumaczenie co i jak. Przynajmniej rozumny człowiek z Ciebie, bo nie dałeś gotowca a wytłumaczyłeś w czym problem.

Poszukałem dalej w necie i znalazłem taki przykład: http://stackoverflow.com/questions/3245564...ting-zoom-level Po wczytaniu się w drugi przykładowy kod doszedłem do wniosku, że to chyba to czego szukam smile.gif
thek
Bo to jest to co opisałem. W pętli walenie wszystkich punktów jakie są z użyciem extends i na koniec tylko jedno fitBounds i finito.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.