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.

Nowy tryb mapy z openstreetmap.org

Ten artykuł dotyczy API w wersji 2

« powrót do listy kategorii

API Google umożliwia dodanie innych trybów mapy niż te wbudowane (mapa fizyczna, satelitarna, hybrydowa i widok ulic). Największym problemem w dodaniu własnej mapy jest konieczność przygotowania precyzyjnych obrazków z widokiem ulic, wykalibrowanych do mapy Google. Serwis openstreetmap.org udostępnia za darmo własny zestaw map w postaci, którą bardzo łatwo zaimportować do aplikacji w API Google.

Mapy z openstreetmap.org są darmowe i wolne - w niektórych miejsach mniej a w niektórych bardziej szczegółowe niż te, dostępne w Google Maps. Przykładowo, openstreetmap.org pokazuje przebieg linii tramwajowych.

Zdefiniowanie kawałków i praw autorskich

Każda mapa, prezentowana w API Google składa się z małych kawałków o wymiarach 256 x 256. Każdy z tych kawałków na różnym poziomie zoom jest w innej skali. Każdy z nich jest opisany przez współrzędną x i y (liczoną w jednostkach od punktu 0,0) oraz poziom zoom. W przypadku map z openstreetmap.org format URL obrazka wygląda następująco:

http://tile.openstreetmap.org/Z/X/Y.png

gdzie Z to poziom zoom (1-17) a X i Y to współrzędne.

Dodanie nowego trybu mapy zaczynamy od stworzenia noty z prawami autorskimi:

var nota = new GCopyright(1,new GLatLngBounds(new GLatLng(-90, -180),new GLatLng(90, 180)),0,'<a href="http://www.openstreetmap.org/">OpenStreetMap</a>');
var prawaAutorskie = new GCopyrightCollection('Mapa');
prawaAutorskie.addCopyright(nota);

Bez wchodzenia zbytnio w szczegóły tego zapisu, określa on, że na całej mapie (obszar ograniczony współrzędnymi 180 W, 180 E 90 N i 90S) ma być wyświetlany napis, informujący o prawach autorskich, należących do OpenStreetMap w formie linku. W trzeciej linijce nota jest dodawana do ogólnej kolekcji praw autorskich tworzonej mapy, stworzonych w linijce drugiej.

Teraz należy zdefiniować format URL kawałków. Robi się to następująco:

var kawalki = [new GTileLayer(prawaAutorskie,1,17)];
kawalki[0].getTileUrl = function (p,z) {
	var y 	= p.y;
	var x	= p.x;
	return 'http://tile.openstreetmap.org/'+z+'/'+x+'/'+y+'.png';
}

Definiujemy w pierwszej linijce, że kawałki będą się wyświetlać na poziomach zoom 1-17, z prawami autorskimi określonymi wcześniej. Następnie w linijkach 2-6 napisałem funkcję, którą API automatycznie wywołuje, by "dowiedzieć się", jaki jest adres URL kawałka w punkcie p i w zoomie z. P to obiekt klasy GPoint, więc posiada własności x i y, z których korzystamy, by skonstruować ostateczny adres URL.

Dodanie mapy

Czas na utworzenie nowego trybu mapy. Tryb mapy to w rzeczywistości obiekt klasy GMapType, z którym API komunikuje się, wywołując metodę getTileUrl(). Definicja trybu wygląda następująco:

var mapaOSL = new GMapType(kawalki, G_NORMAL_MAP.getProjection(), "Mapnik", {errorMessage:"Brak obrazka"});

Pierwszy argument to oczywiście odniesienie do obiektu GTileLayer lub do tablicy z obiektami, definiującymi adres URL kawałków. Drugi parametr to rodzaj projekcji - korzystamy z tej samej, co domyślna mapa w Google. Projekcja ma wpływ na to, jak współrzędne geograficzne są przeliczane na współrzędne ekranowe. Czwarty tryb to nazwa mapy (pojawia się na przycisku wyboru trybów) a ostatni do dodatkowe opcje, z których ustawiłem wiadomość, wyświetlaną zamiast brakującego kawałka.

Wybór nowego trybu mapy jest prosty - najpierw dodajemy nowy tryb do listy trybów, a potem możemy dowolnie zmieniać tryb, korzystając np. z funkcji w drugiej linijce:

mapa.addMapType(mapaOSL);
mapa.setMapType(mapaOSL);

przykład 1pokaż kod przykładu

Inny zestaw map

Dostępny jest również zestaw map, do których kawałków URL wygląda następująco:

http://tah.openstreetmap.org/Tiles/tile/Z/X/Y.png

Szybka modyfikacja poprzedniego przykładu da następujący efekt: przykład 2pokaż kod przykładu

Można oczywiście wszystkie mapy dodać na raz: przykład 3pokaż 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


Własna mapa w Google Maps API

API v2

Przygotowanie i sposób stworzenia własnej mapy, na przykładzie mapy z gry GTA3


Wczytywanie danych z programu MS Excel

API v2

W tym przykładzie pokazane zostało, w jaki sposób wyświetlić markery z arkusza kalkulacyjnego


Zmiana domyślnych komunikatów mapy

API v2

Sposób na podmianę standardowych komunikatów oraz nazw map na własne.



Opinie, sugestie?

Dziękujemy za podzielenie się opinią.

Prosimy o podzielenie się swoją opinią o tym artykule.
Oceń ten artykuł w skali 1-7, gdzie 1 to zupełnie się nie zgadzam, a 7 to całkowicie się zgadzam.

1 2 3 4 5 6 7
Artykuł jest przydatny
Artykuł jest zrozumiały
Artykuł rozwiązał mój problem

Dodatkowe komentarze


Jeśli chcesz otrzymać odpowiedź, nie zapomnij podać swojego adresu e-mail w powyższym polu.