![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 211 Pomógł: 4 Dołączył: 29.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
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 (IMG:style_emoticons/default/smile.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Jeden link wart tysiąc słów (IMG:style_emoticons/default/wink.gif) http://stackoverflow.com/questions/1556921...unds-and-center
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 211 Pomógł: 4 Dołączył: 29.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
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ź. Ten post edytował expert 19.01.2012, 10:58:43 |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Eeeee... Od kiedy polilinia ma jeden punkt? (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/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? (IMG:style_emoticons/default/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ć (IMG:style_emoticons/default/wink.gif) |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 211 Pomógł: 4 Dołączył: 29.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
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 (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
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.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 12:05 |