Obsługa wielu wyników geokodowania
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






