Google Maps API v3: wprowadzenie do tworzenia aplikacji na przykładzie mapy użytkowników
Znajdują się na stronach obiektów gastronomicznych, określając zarazem położenie lokalu. Występują na forach i serwisach społecznościowych, wskazując miejsce zamieszkania użytkowników. Przemierzając bezmiar Sieci, co rusz spotykamy mapy Google. Wraz z tym artykułem dowiesz się, w jaki sposób zaimplementować to bardzo użyteczne rozwiązanie we własnym serwisie.
Rozdział pierwszy: teoria
Słowem wstępu o Google Maps API
Google Maps API to interfejs programowania aplikacji pozwalający na osadzenie mapy Google na dowolnej stronie internetowej. Dostęp do niego odbywa się za pomocą obrazu (Google Static Maps API), języka ActionScript 3 (Google Maps for Flash) lub JavaScript.
Najnowsza, dostępna wersja oznaczona jest numerkiem trzy i w porównaniu z poprzedniczką charakteryzuje się przede wszystkim zwiększoną wydajnością, szczególnie na płaszczyźnie przeglądarek mobilnych dla iPhone'a i urządzeń bazujących na systemie Android.
Usługa ta jest darmowa, z tymże autorzy zostawili sobie w regulaminie furtkę na ewentualne wprowadzenie reklam („4.3 Advertising. The Service currently does not include advertising in the maps images. However, Google reserves the right to include advertising in the maps images provided to you through the Service, but will provide you with ninety (90) days notice prior to the commencement of advertising in the maps images..."). Podobnie nieodpłatne i wymagane do rozpoczęcia pracy jest pobranie unikatowego klucza działającego w obrębie podanej domeny.
Rysunek 1: usługa mapy Google.
Założenia artykułu
W tekście tym postaram się w jak najprostszy sposób przedstawić proces implementowania ww. interfejsu, tworząc przy tym elementarną bazę użytkowników, która pomoże w zobrazowaniu opisywanego problemu. Skatalogowane dane zostaną wykorzystane do wyświetlenia ich położenia na mapie wraz z możliwością ich personalizacji. Artykuł poruszać będzie tylko podstawowe aspekty tytularnego problemu.
Rozdział drugi: baza danych
Projektowanie bazy i tworzenie tabel
Domyślnie omawiane API nie wymaga korzystania z jakiejkolwiek bazy danych, czy języka wykonywanego po stronie serwera. Żeby jednak spełnić nasz cel, skorzystamy z dobrodziejstw MySQL i PHP.
Przy projektowaniu tabel zabierzemy pod uwagę kilka warunków:
- Informacje ogólne o użytkownikach będą rozdzielone od znaczników położenia, co pozwoli użytkownikowi na dodanie więcej niż jednej lokalizacji dla swojego profilu.
- Rozwiązanie to ma zezwalać na wyodrębnianie na mapie tylko użytkowników przypisanych do odpowiednich województw. Z tego powodu ich lista zostanie utworzona w oddzielnej tabeli.
- Relacje pomiędzy tabelami będą występowały z wykorzystaniem identyfikatorów (będących liczbami naturalnymi).
- Artykuł ten ogranicza się w swoich przykładach do obszaru Polski, przez co zakresy niektórych typów kolumn mogą być niewystarczające w przypadku zagranicznych danych (przykładowo nazw obszarów).
Dzięki temu możemy utworzyć trzy tabele.
Rysunek 2: diagram relacji zachodzących w bazie.
Pierwsza z nich, nazwana tutaj gma_markers zawiera informacje o wymienionych już oznaczeniach. Znaczniki te to nic innego jak punkty na mapie, wskazujące na wybraną lokalizację. Dane, które w niej zawrzemy, to przede wszystkim:
- długość (markers_longitude) i szerokość (markers_latitude) geograficzna, w formacie zmiennoprzecinkowym, z możliwością wpisania do 4 znaków przed i 6 po przecinku,
- identyfikator użytkownika o rozmiarze mniejszym niż maksymalna liczba możliwych do zdefiniowania markerów (ponieważ zakładamy, że jeden użytkownik może dodać więcej niż jedną pozycję, to hipotetycznie możemy przygotować się na to, że będzie ich więcej niż dostępnych w naszym serwisie profilów),
- identyfikator województwa, do którego należą podane współrzędne,
- informacje dodatkowe w postaci adresu oraz opisu miejsca.
CREATE TABLE gma_markers(
markers_id int unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY ,
markers_user_id mediumint unsigned NOT NULL ,
markers_address varchar( 100 ) NOT NULL ,
markers_longitude float( 10, 6 ) NOT NULL ,
markers_latitude float( 10, 6 ) NOT NULL ,
markers_province_id tinyint unsigned NOT NULL ,
markers_description varchar(255)
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci ; # tabela przechowująca markery z współrzędnymi dla map wraz z identyfikatorem województwa
Pozostałe dwie tabele utworzone zostały w znacznym uproszczeniu i powinny być rozszerzane indywidualnie, już wg potrzeb.
Pierwsza z nich, gma_users zawiera listę użytkowników i została uproszczona do przetrzymywania automatycznie inkrementowanego identyfikatora oraz nazwy. Kolejna za to, na podobnej zasadzie, przechowuje dane dotyczące województw (długość pola w tym wypadku została ograniczona do 20 znaków, gdyż tyle najwięcej posiada obszar o najdłuższej nazwie). Warto zauwazyć, że w przypadku drugiej tabeli porównywanie znaków ustawione jest na utf8_polish_ci w celu poprawnego sortowania wyników z niej zwracanych.
CREATE TABLE gma_users(
users_id mediumint unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY ,
users_name varchar( 50 ) NOT NULL
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci ; # podstawowa, przykładowa tabela użytkowników
CREATE TABLE gma_provinces(
provinces_id tinyint unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY ,
provinces_name varchar( 20 ) NOT NULL
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_polish_ci ; # tabela przechowująca nazwy województw
«poprzednia 1 2 3 4 ... 5 następna »
Komentarze
Aby dodać komentarz, musisz podać swój nick, treść komentarza oraz poprawnie przepisać oba słowa z obrazka
(słowa muszą być rozdzielone spacją).
W treści komentarza można używać języka formatowania BBcode.
Popularne
Nazwa padła ofiarą szantażystów, inni polscy hosterzy też zagrożeni?
22
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Premiera Diablo 3 wzbudziła dyskusję na temat gier, które zawsze chcą być online
19
Nowy problem z Windows 8: bootuje się za szybko
10
Amerykańscy rodzice straszeni „e-narkotykami” dostępnymi w Sieci
21
Anonymous upubliczniają 1,7 GB danych wykradzionych Departamentowi Sprawiedliwości USA
12
Blueseed: libertariańska sztuczna wyspa przyciągnęła już ponad sto startupów z całego świata
8
Rewolucja w Firefoksie, nowa łatka czterokrotnie ograniczyła zużycie pamięci
20
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
CVDazzle: makijaż jest w stanie pokonać automatyczne systemy ulicznego monitoringu
3
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Ubuntu 12.04 LTS już dostępny: stabilna dystrybucja na następne pięć lat?
28
Zostań webmasterem polskiego rządu, zarobisz na komfortowe życie dla siebie i swojej rodziny
33
Społeczność
anga star za droga ludzie wy myślicie!?Jestem 4 klasistką rodzice się nigdy nie...
Jan Zwyczajnych filmów tak kręcić się nie da co najwyżej krótkie scenki jak w...
piotrek____ @asdfgh - yup, też tak sądzę.
Tak jak wtedy ten przeciek o żołnierzu...
gonzales Javowcy pozdrawiają dotnetowców xD
kaziks Galaxy S II - u mnie po aktualizacji Firefox działa strasznie zacina się...
Doniek Szkoda że strona z demo nie działa - non stop się przeładowuje
bartez Niech zaczną jeszcze bardziej ograniczać programistów, to zdziwią się ilu...
- Najdmen.pl: Konta www z wyłączonym licznikiem transferu od IONIC.pl (1)
- 2BE.PL: [Oferta] Promocja jak złoto w 2BE.PL (1)
- gardius: Dobra hurtownia sportowa (1)
- gardius: Tanie książki gdzie warto kupować? (1)
- Najdmen.pl: PROMOCJA, 500 DOMEN .EU ZA 1 PLN NETTO ! (1)
- VMLine: [Oferta] Serwery VPS Xen-HVM/OpenVZ z darmową administracją (2)
- Marek: Generowanie PDFa (2)
Polecane książki
Praca
Czytaj Webhosting
Chcesz być na bieżąco z naszymi informacjami? Zapisz się na Newsletter.
Zarejestruj domenę
Sprawdź dostępność swojej domeny:
| .pl: | 0 zł | .com: | 19.90 zł | |
|---|---|---|---|---|
| .com.pl: | 0 zł | .eu: | 19.90 zł |











#1 kwinto 2010-01-18 21:07:24 0
IP: 85.89.183.[...] Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)
#2 Paweł® 2010-01-18 21:21:51 0
IP: 90.156.52.[...] Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)
#3 gajda1000 2010-01-19 11:22:45 0
IP: 77.253.160.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.38 Safari/532.0
#4 bogdan 2010-03-01 19:51:30 0
IP: 62.133.135.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8
#5 yaworski 2010-04-26 15:31:14 0
IP: 85.222.103.[...] Mozilla/5.0 (X11; U; Linux x86_64; pl; rv:1.9.2.3) Gecko/20100407 Ubuntu/9.10 (karmic) Firefox/3.6.3