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.

Obsługa wielu wyników geokodowania

Ten artykuł dotyczy API w wersji 2

« powrót do listy poradników

Funkcjonalna aplikacja, umożliwiająca geokodowanie powinna dać użytkownikowi wybór miejsca w przypadku, gdy wpisany adres pasuje do więcej niż jednego miejsca.

Sytuację tę można wykryć, sprawdzając długość tablicy Placemark, zwracanej w czasie geokodowania:

  • jeśli jest większa niż 1, to należy wyświetlić listę adresów pasujących do zapytania wraz z odpowiadającymi im współrzędnymi,
  • jeśli jest równa 1, to należy przejść do punktu, odpowiadającego podanemu adresowi,

Oto ogólny zarys funkcji, odpowiadającej za obsługę geokodowania:

var geo = new GClientGeocoder(); 
function geokoduj(adres)
{
	var html='';
	geo.getLocations(adres, function(wyniki)
	{
		// sprawdzamy, czy geokodowanie powiodło się
		if (wyniki.Status.code == G_GEO_SUCCESS)
		{
			// jest więcej niż 1 rezultat
			if(wyniki.Placemark.length>1)
			{
				// tutaj kod wyświetlający pole wyboru pasujących adresów
			}
			else
			{
				// tutaj kod, dodający marker do mapy
			}
		}
		else
		{
			// tutaj kod, jeśli nic nie znaleziono
		}
	});
}

W przypadku braku miejscowości, wyświetlimy alert ze stosownym komunikatem.

Znalezienie jednego wyniku powinno skutkować dodaniem markera z zgeokodowanymi współrzędnymi na mapę. Współrzędne są przechowywane w zmiennej wyniki.Placemark[0].Point.coordinates. Jest to tablica, zawierająca dwa elementy - długość i szerokość geograficzną (w tej kolejności, a zatem odwrotnie niż tradycyjna kolejność argumentów w GlatLng).

Znalezienie więcej niż jednego wyniku powinno skutkować:

  • Wypisaniem komunikatu, że znaleziono kilka wyników,
  • Wypisaniem adresów, które pasują do zapytania,
  • Po kliknięciu na adres, na mapę powinien zostać wstawiony marker, a lista adresów powinna zostać ukryta.

Współrzędne otrzymujemy tak samo jak w powyższym punkcie, przy czym należy napisać pętlę, która dla j-tego elementu tablicy wyniki.Placemark[j] pobierze współrzędne (wyniki.Placemark[j].Point.coordinates) oraz sformatowany adres (wyniki.Placemark[j].address). Adresy powinny być wyświetlone użytkownikowi w postaci klikalnych linków, a kliknięcie na nie powinno dodać marker o uzyskanych współrzędnych.

Gotowy kod, spełniający powyższe założenia znajduje się tutaj: 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ł:

Geokodowanie adresów

API v2

Kurs podstaw cz. XI: Proste i szybkie geokodowanie adresów (zamiana adresu na współrzędne)


Wyznaczanie punktów z trasy przejazdu

API v2

Sposób na wyciągnięcie współrzędnych z polilinii (trasy dojazdu GDirections)


Znajdowanie trasy i wskazówek dojazdu

API v2

Prosty i elegancki sposób na znajdowanie i rysowanie trasy oraz wskazówek dojazdu pomiędzy punktami


Wyświetlanie adresu klikniętego punktu

API v2

Dzięki temu poradnikowi dowiesz się, jak wyświetlić dane adresowe klikniętego punktu na mapie