Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][JavaScript]Zaznaczanie obszaru i automatyczny zoom
Forum PHP.pl > Forum > Przedszkole
roghatt
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?
bostaf
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.
roghatt
nie spodziewałem się, że tak dokładnie otrzymam rozwiązanie i wytłumaczenie wszystkiego.
Dzięki wielkie, wszystko działa jak należy.
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.