www.gmapsapi.com

Kompleksowy kurs podstaw API, po którym mapowianie nie będzie miało przed Tobą żadnych tajemnic!

Setki przykładów, kursów i poradników z kodem gotowym do skopiowania i korzystania.

Największa strona o Google Maps API w Polsce, największe źródło informacji w języku polskim.

Wyświetlanie polilinii na pewnym zoomie

« powrót do listy kategorii

Menedżer markerów (omówiony w tej części kursu) pozwala na stworzenie markerów, które będą widoczne na określonych poziomach przybliżenia mapy. W tej części kursu napiszemy prostą funkcję do wyświetlania jedynie tych polilinii, które powinny być widoczne na danym poziomie przybliżenia.

Zasada działania

Każdej polilinii przypiszemy dwie właściwości maxzoom i minzoom, które będą informować skrypt o odpowiednio największym i najmniejszym poziomie widoczności dla danej polilinii. Przypiszemy im wartości od 0 do 19, czyli dokładnie takie, jakie może przyjąć wartość zoomu mapy.

Następnie przeprowadzimy nasłuch zdarzenia zoomend, dzięki któremu będzie wiadomo, że zmieniony został poziom przybliżenia. Wówczas dla każdej z polilinii sprawdzimy, czy obecny poziom zoomu mapy zawiera się między jej właściwościami maxzoom i minzoom, i w zależności od rezultatu porównania albo ukryjemy polilinię (metoda hide()) lub ją pokażemy (metoda show()).

Funkcja ukrywająca/pokazująca linie

Poniższy listing zawiera kod, dzięki któremu polilinie są chowane/pokazywane:

GEvent.addListener(mapa,'zoomend',function()
{
	for(var i=0; i<sledzonePolilinie.length; i++)
	{
		if(sledzonePolilinie[i].maxzoom >= mapa.getZoom() && sledzonePolilinie[i].minzoom <= mapa.getZoom())
			sledzonePolilinie[i].show();
		else
			sledzonePolilinie[i].hide();
	}
});
GEvent.trigger(mapa,'zoomend');

Tablica sledzonePolilinie jest globalna, jej elementy reprezentują odwołania do konkretnej pollilinii na mapie. Na koniec symulujemy zmianę zoomu, by wykonać funkcją pokazującą / ukrywającą linie na początku.

Dodanie polilinii

Na potrzeby przykładu przygotowałem następującą z danymi polilinii:

var polilinie = [
{'minzoom': 2, 'maxzoom': 3, 'kolor': '#ff0000', 'punkty':[
new GLatLng(50.12057809796007,3.8671875),
new GLatLng(48.16608541901253,2.548828125),
new GLatLng(48.10743118848038,6.240234375),
new GLatLng(50.12057809796007,3.8671875)
]},
/* i tak dalej kolejne polilinie */
];

Tablica składa się z asocjacyjnych tablic z danymi o poliliniach, co widać po analizie jednego elementu. Aby dodać polilinie z tej tablicy, użyję następującej funkcji:

function rysujPolilinie(polilinia)
{
	var kolor	= polilinia['kolor'];
	var minzoom	= polilinia['minzoom'];
	var maxzoom	= polilinia['maxzoom'];
	var punkty 	= polilinia['punkty'];
	
	var polilinia = new GPolyline(punkty,kolor,4,0.8);
	polilinia.maxzoom = maxzoom;
	polilinia.minzoom = minzoom;
	mapa.addOverlay(polilinia);
	sledzonePolilinie.push(polilinia);
}

Proste i nie wymagające komentarza, poza ostatnią linią, w której dodajemy polilinię do globalnej tablicy z poliliniami.

Oto rezultat działania: przykład 1pokaż kod przykładu

Polecane artykuły

Dodaj stronę do ulubionego serwisu społecznościowego

Oto, co najczęściej czytają internauci, którzy przeczytali ten artykuł:

Kategorie markerów i polilinii

API v2

Stwórz markery/polilinie w kilku kategoriach, a następnie ukrywaj i pokazuj wybrane kategorie


Dodawanie markerów przez użytkownika

API v2

Poradnik pokazuje, w jaki sposób stworzyć formularz, pozwalający na dodawanie markerów


Dodawanie znaczników na mapę

API v3

Kurs podstaw cz. II: Podstawowe informacje na temat wstawiania markerów (znaczników)


Wyświetlanie listy widocznych markerow

API v2

Sposób na wyświetlenie listy widocznych w danym momencie markerów i ich opisów