Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][JavaScript]Zaznaczanie obszaru i automatyczny zoom
roghatt
post 8.10.2012, 09:10:15
Post #1





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.03.2006

Ostrzeżenie: (0%)
-----


Witam
Czy da się w łatwy sposób dopisać jakiś parametr, aby:
http://gmapsapi.com/poradnik/028_zaznaczan...zytkownika.html

do powyższego skryptu dorobić aby po zaznaczeniu automatycznie powiększyła się mapa do wielkości zaznaczonego obszaru?
Go to the top of the page
+Quote Post
bostaf
post 8.10.2012, 13:08:28
Post #2





Grupa: Zarejestrowani
Postów: 374
Pomógł: 79
Dołączył: 6.04.2010
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


To co się dzieje po drugim kliknięciu zdefiniowane jest w funkcji
[JAVASCRIPT] pobierz, plaintext
  1. GEvent.addListener(mapa,'click',function(o,p)
[JAVASCRIPT] pobierz, plaintext

W tej chwili jest tam tylko instrukcja o wypisaniu współrzędnych do okienka logu:
[JAVASCRIPT] pobierz, plaintext
  1. GLog.write('Obszar: '+obszar.pobierz());
[JAVASCRIPT] pobierz, plaintext

Zamiast tego logowania (albo dodatkowo) chcemy powiększyć do zaznaczenia. Do powiększania służy metoda SetZoom, albo jeszcze lepiej, setCenter (bo setZoom ustawia tylko poziom powiększenia a setCenter ustawia poziom powiększenia i centruje na wybranym punkcie). No to na razie dopiszmy:
[JAVASCRIPT] pobierz, plaintext
  1. GLog.write('Obszar: '+obszar.pobierz());
  2. mapa.setCenter(centrum, poziomPowiekszenia);
[JAVASCRIPT] pobierz, plaintext

Skąd wziąć "centrum" i "poziomPowiększenia"?
Centrum ściągniemy za pomocą metody getCenter() obiektu GLatLngBounds. Najpierw, gdzieś na samym początku, globalnie, zadeklaruj sobie tą zmienną:
[JAVASCRIPT] pobierz, plaintext
  1. var centrum = null;
[JAVASCRIPT] pobierz, plaintext

potem, w funkcji ZaznaczObszar.prototype.pobierz (bo tam inicjowane jest obiekt GLatLngBounds dopisz, przed returnem:
[JAVASCRIPT] pobierz, plaintext
  1. centrum = granica.getCenter();
[JAVASCRIPT] pobierz, plaintext
Po dopisaniu tej linii, cała funkcja będzie wyglądała tak:
[JAVASCRIPT] pobierz, plaintext
  1. ZaznaczObszar.prototype.pobierz = function()
  2. {
  3. var granica = new GLatLngBounds();
  4. granica.extend(this.punkt1);
  5. granica.extend(this.punkt2);
  6. centrum = granica.getCenter();
  7. return granica;
  8. };
[JAVASCRIPT] pobierz, plaintext

No to centrum mamy. A poziomPowiekszenia? Mamy metodę getBoundsZoomLevel, za pomocą której uzyskamy poziom powiększenia obliczony dla określonych granic względem obecnego widoku. Poziom powiększenia możemy wyznaczyć tuż przed wykonaniem powiększenia, czyli tam, gdzie dopisywaliśmy mapa.setCenter:
[JAVASCRIPT] pobierz, plaintext
  1. GLog.write('Obszar: '+obszar.pobierz());
  2. var poziomPowiekszenia = mapa.getBoundsZoomLevel(obszar.pobierz());
  3. mapa.setCenter(centrum, poziomPowiekszenia);
[JAVASCRIPT] pobierz, plaintext

Zrobione.
Go to the top of the page
+Quote Post
roghatt
post 9.10.2012, 12:03:29
Post #3





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.03.2006

Ostrzeżenie: (0%)
-----


nie spodziewałem się, że tak dokładnie otrzymam rozwiązanie i wytłumaczenie wszystkiego.
Dzięki wielkie, wszystko działa jak należy.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 10:09