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.

Zmiana domyślnych komunikatów mapy

Ten artykuł dotyczy API w wersji 2

« powrót do listy poradników

Google Maps API dostępne jest w języku polskim, dzięki czemu wszystkie komunikaty są zrozumiałe dla internautów, nie znających języka angielskiego. To powoduje jednak, że wszystkie strony oparte o API Google Maps wyświetlają te same komunikaty, np. dla braku zdjęć satelitarnych na danym poziomie:

Domyślny komunikat
domyślny komunikat

W tym poradniku zmienimy część przetłumaczonych tekstów, a domyślny komunikat zastąpimy takim:

Zmieniony komunikat
zmieniony, dostosowany komunikat

Zmiana nazw i komunikatów mapy

Nie wszystkie komunikaty są możliwe do zamiany. Zaczniemy od stosunkowo najprostszej rzeczy, jaką jest podmiana nazw trybów mapy oraz komunikatu o braku zdjęć.

Aby to zrobić, najpierw tworzymy obiekt mapy, do którego nie przypisujemy żadnego trybu mapy:

mapa = new GMap2(document.getElementById("mapka"),{mapTypes: []});

Następnie musimy stworzyć cztery kopie dotychczasowych trybów map: zwykłej, satelitarnej, fizycznej i hybrydowej. Trzy pierwsze tworzy się wg tego samego wzorca:

var mapa1 = new GMapType([G_NORMAL_MAP.getTileLayers()[0]], G_NORMAL_MAP.getProjection(), 'Mapa zwykła*', {shortname: 'Mapa*', errorMessage: 'Przepraszamy, na tym poziomie zbliżenia nie posiadamy danych kartograficznych.\x3cp\x3eProszę zmniejszyć poziom przybliżenia.\x3cp\x3ewww.gmapsapi.com', alt: 'Pokaż mapę*'});

Pierwszym argumentem w konstruktorze mapy jest tablica funkcji, generujących adresy kawałków. Szczegóły na jej temat został omówione w tym poradniku, więc nie będę ich teraz omawiał dokładnie. Istotne jest to, że mapa zwykła, satelitarna i terenowa posiadają jedną funkcję, generującą adresy obrazków ze zdjęciami, podczas gdy mapa hybrydowa posiada dwie takie funkcje (jedna dla zdjęć satelitarnych i jedna dla nakładki z granicami i drogami).

Ponieważ tworzymy dokładną kopię trybu mapy, nie będziemy tworzyć własnej funkcji generującej adres, korzystamy zamiast tego z tej, którą domyślnie zaprogramowano w API. Drugim argumentem jest rodzaj projekcji, który także nie będzie tworzony przez nas od nowa - zamiast tego korzystamy z oryginalnej projekcji dla danej mapy. Kolejnym argumentem jest nazwa trybu mapy, która będzie wyświetlana na pasku z przyciskami. Ostatni argument w postaci tablicy dostarcza informacji o komunikacie dla braku zdjęć (errorMessage), skróconej nazwie mapy (shortname) oraz o tekście, który pojawi się po najechaniu na przycisk trybu mapy (alt). Aby dodać nową linię, skorzystałem z ciągu znaków: \x3cp\x3.

W taki sposób kopiujemy właściwości mapy satelitarnej i terenowej, podmieniając teksty na pożądane:

var mapa2 = new GMapType([G_SATELLITE_MAP.getTileLayers()[0]], G_SATELLITE_MAP.getProjection(), 'Zdjęcia satelitarne*', {shortname: 'Sat*', errorMessage: 'Przepraszamy, na tym poziomie zbliżenia nie posiadamy zdjęć satelitarnych.\x3cp\x3eProszę zmniejszyć poziom przybliżenia.\x3cp\x3ewww.gmapsapi.com', alt: 'Pokaż zdjęcia satelitarne*'});

var mapa4 = new GMapType(G_PHYSICAL_MAP.getTileLayers(), G_PHYSICAL_MAP.getProjection(), 'Mapa terenowa*', {shortname: 'Ter*', errorMessage: 'Przepraszamy, na tym poziomie zbliżenia nie posiadamy danych kartograficznych.\x3cp\x3eProszę zmniejszyć poziom przybliżenia.\x3cp\x3ewww.gmapsapi.com', alt: 'Pokaż mapę terenu*'});

Jak już wcześniej wspomniano, mapę hybrydową konstruuje się nieco inaczej, różnica leży w sposobie przekazywania pierwszego argumentu:

var mapa3 = new GMapType(G_HYBRID_MAP.getTileLayers(), G_HYBRID_MAP.getProjection(), 'Tryb hybrydowy*', {shortname: 'Hyb*', errorMessage: 'Przepraszamy, na tym poziomie zbliżenia nie posiadamy zdjęć satelitarnych.\x3cp\x3eProszę zmniejszyć poziom przybliżenia.\x3cp\x3ewww.gmapsapi.com', alt: 'Pokaż hybrydę*'});

Na końcu należy wszystkie cztery tryby mapy dodać do stworzonego obiektu mapy:

mapa.addMapType(mapa1);
mapa.addMapType(mapa2);
mapa.addMapType(mapa3);
mapa.addMapType(mapa4);

Własne nazwy map
Kolejność dodawania trybów mapy będzie miała odbicie na kolejności map na pasku. Proszę pamiętać, że wszystkie te operacje muszą się odbyć PRZED dodawaniem znaczników czy centrowaniem mapy.

Efekt można sprawdzić w przykładzie 1: przykład 1pokaż kod przykładu

Napis o prawach autorskich

Zmieniony prefiks praw autorskich

Do pewnego stopnia można również zmienić tekst w prawach autorskich. Dla każdej mapy składają się one z dwóch części: prefiksu (np. Zawartość mapy ©2009) i właściwego ciągu (np. Tele Atlas). Drugi z nich jest generowany automatycznie, w zależności od widocznego na ekranie zakresu map/zdjęć. Dostosować można więc jedynie pierwszy z nich, poprzez zwykłą podmianę dwóch możliwych rodzajów tekstów:

  • Zawartość mapy ©2009
  • Zdjęcia satelitarne ©2009

Data w przeciwieństwie do prefiksu może ulegać zmianie.

Prawa autorskie wyświetlane na mapie przekazywane są w postaci tablicy, w której każdemu elementowi odpowiada osobny podmiot (najczęściej jest to jednoelementowa tablica dla mapy zwykłej, satelitarnej i fizycznej, oraz dwuelementowa dla hybrydowej). Każdy element jest w postaci talicy asocjacyjnej, w którym najbardziej interesującym elementem jest ten, oznaczony kluczem prefix. Funkcja, która "tłumaczy" prawa autorskie, zamieniając prefix na własny może więc wyglądać tak:

function tlumaczenie(t)
{
	for(var i=0; i<t.length; i++)
	{
		t[i].prefix = t[i].prefix.replace('Zawartość mapy','Mapy dostarcza');
		t[i].prefix = t[i].prefix.replace('Zdjęcia satelitarne','Zdjęcia dostarcza');
	}
	return t;
}

Teraz należy każdej z tworzonych kopii trybów map zdefiniować prawa autorskie, według poniższego przykładu:

mapa1.getCopyrights = function(a,b)
{
	return tlumaczenie(G_NORMAL_MAP.getCopyrights(a,b));
}

mapa2.getCopyrights = function(a,b)
{
	return tlumaczenie(G_SATELLITE_MAP.getCopyrights(a,b));
}

mapa3.getCopyrights = function(a,b)
{
	return tlumaczenie(G_HYBRID_MAP.getCopyrights(a,b));
}

mapa4.getCopyrights = function(a,b)
{
	return tlumaczenie(G_PHYSICAL_MAP.getCopyrights(a,b));
}

Kopia mapy będzie więc miała zawsze ten sam zapis o prawach autorskich, z wyjątkiem zmienionego przez funkcję tlumaczenie() prefiksu. Pamiętaj, że powyższy fragment musi się znaleźć ZA definicją trybów mapy, ale przed ich dodaniem do mapy. W razie wątpliwości przejrzyj strukturę przykładu 2: przykład 2pokaż 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ł:

Dodawanie markerów przez użytkownika

API v2

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


Kategorie markerów i polilinii

API v2

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


jQuery i Google Maps

API v2

Przyjemne dla oka animacje za pomocą bilbioteki jQuery uatrakcyjnią każdą mapę!


Wyszukiwanie markerów as-you-type

API v2

Jak stworzyć wyszukiwanie i filtrowanie markerów as-you-type przy użyciu bazy danych