3 komentarze

Wykorzystanie Map Google w naszej aplikacji

Sierpień 9, 2011 Biblioteki zewnętrzne Tutoriale

Aby w naszej aplikacji móc korzystać z dobrodziejstw Map Google wyświetlanych za pomocą widoku MapView powinniśmy wykonać szereg czynności. Jak się bowiem okazuje, mapy są czymś w rodzaju zewnętrznej biblioteki, której użycie należy poprzedzić kilkoma czynnościami, które nam na to pozwolą. W tym artykule przejdziemy krok po kroku po każdym z wymagań, by ostatecznie stworzyć aplikację wyświetlającą nam podstawowy widok mapy.

Biblioteki z Google Maps

Zaczniemy od doinstalowania niezbędnych bibliotek, które posiadają potrzebne narzędzia. Mowa tu o Google APIs, które zapewne większość z nas zainstalowała przy okazji tworzenia środowiska. Jeśli jednak ktoś tego nie zrobił, oto jak tego dokonać:

  1. Otwieramy Android SDK and AVD Manager (np. w Eclipse Window -> Android SDK and AVD Manager)
  2. Przechodzimy do działu Available packages, gdzie rozwijamy Third party Add-ons -> Google Inc.
  3. Spośród dostępnych paczek wybieramy wersję API, która interesuje nas najbardziej (gdyby ktoś miał wątpliwości odnośnie wersji, odsyłam pod ten adres)
  4. Jeżeli na liście brakuje jakichś wersji API, najpewniej mamy ją już zainstalowaną (co sprawdzimy w dziale Installed packages).
  5. Jeżeli wybraliśmy API, które nas interesuje, instalujemy je.

I to wszystko. :) Możemy teraz przejść do stworzenia naszego pierwszego projektu wykorzystującego Google Maps.

Tworzenie i konfiguracja projektu z Google Maps

Podczas tworzenia nowego projektu w kreatorze, w miejscu gdzie wybieramy wersję SDK (Build Target) należy wskazać Google APIs (oczywiście w wersji, która nas interesuje).

Resztę danych ustawiamy dokładnie tak samo jak dla zwykłego projektu.

AndroidManifest.xml

W manifeście naszej aplikacji powinniśmy zaznaczyć, że korzystamy z biblioteki Google Maps. Robimy to, dodając poniższą linijkę wewnątrz element <application>:

<uses-library android:name="com.google.android.maps" />

Ponadto można od razu dodać pozwolenie na korzystanie z sieci, skąd mapy będą pobierać swoje dane.

<uses-permission android:name="android.permission.INTERNET" />

Pozwolenie dodajemy oczywiście już poza węzłem <application>. :)

UI

Do wyświetlania Mapy Google wykorzystywany jest element MapView. Oto przykładowa konfiguracja (należy pamiętać o tym, by podać pełną nazwę klasy MapView)

<com.google.android.maps.MapView
	android:id="@+id/mapView"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:enabled="true"
	android:clickable="true"
	android:apiKey="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" />

Atrybut apiKey to unikalny klucz do API Google Maps, którego wygenerowaniem zajmiemy się za chwilę.

Kod źródłowy Aktywności

Aby móc skorzystać z widoku mapy w naszej Aktywności, powinna ona dziedziczyć po klasie MapActivity. Jest to klasa abstrakcyjna wymagająca implementacji metody isRouteDisplayed(), która powinna zwracać wartość true wtedy, gdy na nasza mapa ma służyć do informacji drogowych (w przeciwnym wypadku powinna zwracać false).

public class MainActivity extends MapActivity {
	private MapView mapView;

	@Override
	protected boolean isRouteDisplayed() {
		return false;
	}

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		mapView = (MapView) findViewById(R.id.mapView);
		setupMap();
	}

	private void setupMap() {
		mapView.setBuiltInZoomControls(true);
		mapView.setTraffic(true);
		mapView.setSatellite(true);
	}
}

Wykorzystane metody wewnątrz setupMap() nadadzą naszej mapie przynajmniej podstawowej funkcjonalności. :)

Generowanie klucza API Google Maps

Wróćmy teraz do klucza Google Maps API. O tym, po co w ogóle wymagany jest taki zabieg możemy przeczytać pod tym adresem.

Aby zarejestrować oraz wygenerować nasz własny klucz należy znaleźć „odcisk palca” naszego SDK. Najprostsza droga jest taka:

  1. W Eclipse wchodzimy do Window -> Preferences -> Android -> Build. Tam znajdujemy wartość Default debug keystore. Kopiujemy całą ścieżkę.
  2. W konsoli wpisujemy
    keytool -list -keystore <ścieżka>

    W miejsce ścieżki wklejamy to co skopiowaliśmy w pierwszym punkcie.

  3. Jeżeli zostaniemy poproszeni o hasło, a takowego nie ustawialiśmy, po prostu klikamy Enter.
  4. W odpowiedzi powinniśmy dostać m.in. linijkę podobną do poniższej:
    Certificate fingerprint (MD5): xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx

    którą następnie należy wkleić na tej stronie.

  5. Po zaakceptowaniu zasad i kliknięciu przycisku Generate API Key powinniśmy w odpowiedzi dostać nasz własny klucz do API Google Maps, który następnie należy wkleić do elementu MapView, w pliku XML z layoutem naszej aktywności.

I to wszystko. Możemy tworzyć aplikacje korzystające z Google Maps i elementu MapView.

AVD i Google Maps

Aby wykorzystać Google Maps w naszym urządzeniu wirtualnym, podczas jego tworzenia również powinniśmy wskazać Google APIs (właściwość Target).

Komentarze (3) Subskrybuj

 

    • tomek pisze:

      Mam taki problem, że nie chce mi się wyświetlać traffic w Polsce. Nie wiem, co robię źle, bo na stronie i oprogramowanie od google pokazuje korki. Dziwnie działa też street, gdyż pojawiają się takie plamy kwadratowe z niewczytaną mapą i krzyżykiem w środku, systematycznie rozmieszczone po mapie. satelita działa poprawnie. Sprawdzałem na emulatorach odd 2.2 do 2.3.5 i na telefonie z 2.2. Proszę o jakieś sugestie, co moze być źle.

  1. Alus pisze:

    Mala rada do poprawik:
    Keytool nie generuje już MD5 standardowo. Trzeba dodać parametr przed -list -v i wygeneruje m.in poprawny fingerprint (SHA1 nie przyjmuje w dodawaniu mapy)

Prześlij komentarz

Zaloguj się lub skorzystaj z profilu:

[rpxlogin redirect="http://www.android4devs.pl" prompt="" style="large"]

Możesz również zostawić komentarz bez rejestracji, korzystając z poniższego formularza:

Musisz być zalogowany aby móc pisać komentarze.