Utwórz aplikację na Androida, która wyświetli mapę, korzystając z szablonu Map Google na Androida Studio. Jeśli masz już projekt Android Studio, który chcesz skonfigurować, przeczytaj Konfigurację projektu.
Ten krótki przewodnik jest przeznaczony dla deweloperów, którzy znają podstawy programowania na Androidzie w języku Java lub Kotlin.
Skonfiguruj środowisko programistyczne
- Wymagany jest Android Studio Arctic Fox lub nowszy. Pobierz i zainstaluj, jeśli jeszcze jej nie masz.
- Upewnij się, że używasz wtyczki Android Gradle w wersji 7.0 lub nowszej w Android Studio.
Konfigurowanie urządzenia z Androidem
Aby uruchomić aplikację, która korzysta z pakietu SDK Map na Androida, musisz ją wdrożyć na urządzeniu z Androidem lub w emulatorze Androida opartym na Androidzie 4.0 lub nowszym i interfejsach API Google.
- Aby korzystać z urządzenia z Androidem, wykonaj czynności opisane w artykule Uruchamianie aplikacji na urządzeniu sprzętowym.
- Aby użyć emulatora Androida, możesz utworzyć urządzenie wirtualne i zainstalować emulator za pomocą Menedżera urządzeń wirtualnych Android dostępnego w Android Studio.
Tworzenie projektu Map Google w Android Studio
Otwórz Android Studio i kliknij Utwórz nowy projekt w oknie Witamy w Android Studio.
W oknie Nowy projekt, w kategorii Telefon i tablet wybierz Aktywność w Mapach Google i kliknij Dalej.
Wypełnij formularz Aktywności w Mapach Google.
Ustaw Język na Java lub Kotlin. Pakiet SDK Map na Androida w pełni obsługuje oba języki. Aby dowiedzieć się więcej o Kotlinie, przeczytaj artykuł o tworzeniu aplikacji na Androida na platformie Kotlin.
Ustaw Minimalny pakiet SDK na wersję SDK zgodną z Twoim urządzeniem testowym. Musisz wybrać wersję wyższą niż minimalna wymagana przez pakiet SDK Map na Androida w wersji 18.0.x, która obecnie jest interfejsem API na poziomie 19 (Android 4.4, KitKat) lub nowszym. Najnowsze informacje o wymaganiach wersji pakietu SDK znajdziesz w informacjach o wersji.
Kliknij Zakończ.
Android Studio uruchamia Gradle i kompiluje projekt. Może to chwilę potrwać.
Gdy kompilacja się zakończy, Android Studio otwiera pliki
AndroidManifest.xml
iMapsActivity
. Twoja aktywność może mieć inną nazwę, ale będzie to ta, która została przez Ciebie skonfigurowana podczas konfiguracji.Plik
AndroidManifest.xml
zawiera instrukcje, jak uzyskać klucz interfejsu API Map Google, a następnie dodać go do pliku local.property. Nie dodawaj klucza interfejsu API do plikuAndroidManifest.xml
. W ten sposób Twój klucz API jest bezpieczniejszy. Zamiast tego wykonaj czynności opisane w kolejnych sekcjach, aby utworzyć projekt Cloud i skonfigurować klucz interfejsu API.
Konfigurowanie projektu Google Cloud
Wykonaj wymagane czynności konfiguracyjne Cloud Console, klikając te karty:
Krok 1
Konsola
-
W konsoli Google Cloud na stronie wyboru projektu kliknij Utwórz projekt, aby zacząć tworzyć nowy projekt Cloud.
-
Sprawdź, czy w projekcie Cloud włączone są płatności. Upewnij się, że płatności w Twoim projekcie są włączone.
W ramach okresu próbnego Google Cloud może być 0,00 USD. Okres próbny kończy się po 90 dniach lub po naliczeniu opłat na kwotę 300 USD, w zależności od tego, co nastąpi wcześniej. W każdej chwili możesz zrezygnować. Google Maps Platform oferuje cykliczną kwotę w wysokości 200 USD miesięcznie. Więcej informacji znajdziesz w artykułach Środki na koncie rozliczeniowym i Płatności.
(pakiet) SDK Cloud
gcloud projects create "PROJECT"
Dowiedz się więcej o pakiecie SDK Google Cloud, instalowaniu pakietu SDK Cloud i o tych poleceniach:
Krok 2
Aby korzystać z Google Maps Platform, musisz włączyć interfejsy API lub pakiety SDK, których zamierzasz użyć w projekcie.
Konsola
(pakiet) SDK Cloud
gcloud services enable \ --project "PROJECT" \ "maps-android-backend.googleapis.com"
Dowiedz się więcej o pakiecie SDK Google Cloud, instalowaniu pakietu SDK Cloud i o tych poleceniach:
Krok 3
Ten krok obejmuje tylko proces tworzenia klucza interfejsu API. Jeśli używasz klucza interfejsu API w środowisku produkcyjnym, zdecydowanie warto ograniczyć jego klucz. Więcej informacji znajdziesz na stronie Używanie kluczy interfejsu API danej usługi.
Klucz interfejsu API to unikalny identyfikator uwierzytelniający żądania powiązane z Twoim projektem do celów rozliczeniowych i użytkowania. Z Twoim projektem musi być powiązany co najmniej jeden klucz interfejsu API.
Aby utworzyć klucz interfejsu API:
Konsola
-
Otwórz stronę Google Maps Platform > Dane logowania.
-
Na stronie Dane logowania kliknij Utwórz dane logowania > Klucz interfejsu API.
W oknie Utworzono klucz API wyświetla się nowo utworzony klucz interfejsu API. -
Kliknij Zamknij.
Nowy klucz interfejsu API znajdziesz na stronie Dane logowania w sekcji Klucze interfejsu API.
(Pamiętaj, aby ograniczyć używanie klucza interfejsu API przed jego użyciem w środowisku produkcyjnym).
(pakiet) SDK Cloud
gcloud alpha services api-keys create \ --project "PROJECT" \ --display-name "DISPLAY_NAME"
Dowiedz się więcej o pakiecie SDK Google Cloud, instalowaniu pakietu SDK Cloud i o tych poleceniach:
Dodaj klucz interfejsu API do swojej aplikacji
W tej sekcji dowiesz się, jak przechowywać klucz interfejsu API, aby można było bezpiecznie odwoływać się do niego przez aplikację. Zalecamy niesprawdzanie klucza interfejsu API w systemie kontroli wersji, dlatego zalecamy przechowywanie go w pliku local.properties
, który znajduje się w katalogu głównym projektu. Więcej informacji o pliku local.properties
znajdziesz w artykule Pliki właściwości Gradle.
Aby uprościć to zadanie, zalecamy użycie wtyczki Gradle obiektów tajnych na Androida. Aby zainstalować wtyczkę i zapisać klucz interfejsu API:
- W Android Studio otwórz plik
build.gradle
na poziomie projektu i dodaj ten kod do elementudependencies
w sekcjibuildscript
.plugins { // ... id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' version '2.0.1' apply false }
- Następnie otwórz plik
build.gradle
na poziomie modułu i dodaj ten kod do elementuplugins
.id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
- Zapisz plik i zsynchronizuj projekt z Gradle.
- Otwórz
local.properties
w katalogu na poziomie projektu i dodaj ten kod. ZastąpYOUR_API_KEY
kluczem interfejsu API.MAPS_API_KEY=YOUR_API_KEY
- Zapisz plik.
- W pliku
AndroidManifest.xml
otwórz stronęcom.google.android.geo.API_KEY
i zaktualizujandroid:value attribute
w ten sposób:<meta-data android:name="com.google.android.geo.API_KEY" android:value="${MAPS_API_KEY}" />
Uwaga: jak pokazano powyżej, com.google.android.geo.API_KEY
to zalecana nazwa metadanych klucza interfejsu API. Klucz o tej nazwie może służyć do uwierzytelniania w wielu interfejsach API opartych na Mapach Google na platformie Android, w tym również w pakiecie Maps SDK na Androida. Aby zapewnić zgodność wsteczną, interfejs API obsługuje też nazwę com.google.android.maps.v2.API_KEY
. Ta nazwa starszego typu umożliwia uwierzytelnianie tylko dla interfejsu Android Maps API v2. Aplikacja może określać tylko jedną z nazw metadanych klucza interfejsu API. Jeśli podasz obie opcje, interfejs API zwróci wyjątek.
Zobacz kod
Sprawdź kod podany w szablonie. Zwróć szczególną uwagę na te pliki w projekcie Android Studio.
Plik aktywności Map Google
Plik aktywności z mapami jest główną aktywnością aplikacji i zawiera kod do zarządzania mapą i jej wyświetlania. Domyślnie plik definiujący aktywność ma nazwę MapsActivity.java
lub jeśli dla Twojej aplikacji ustawiony jest język Kotlin (MapsActivity.kt
).
Główne elementy działań na mapach:
Obiekt
SupportMapFragment
zarządza cyklem życia mapy i jest nadrzędnym elementem interfejsu aplikacji.Obiekt
GoogleMap
zapewnia dostęp do danych mapy i widoku. To jest główna klasa pakietu SDK Map na Androida. Przewodnik Obiekty mapy zawiera szczegółowy opis obiektówSupportMapFragment
iGoogleMap
.Funkcja
moveCamera
wyśrodkowuje mapę na współrzędnychLatLng
w Sydney Australia. Pierwszymi ustawieniami, które należy skonfigurować podczas dodawania mapy, są zwykle lokalizacja i ustawienia kamery, takie jak kąt patrzenia, orientacja mapy i poziom powiększenia. Szczegółowe informacje znajdziesz w przewodniku po aparacie i widoku.Funkcja
addMarker
dodaje znacznik do współrzędnych obszaru Sydney. Więcej informacji znajdziesz w przewodniku po znacznikach.
Plik aktywności map zawiera ten kod:
Java
import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.OnMapReadyCallback; import com.google.android.gms.maps.SupportMapFragment; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.MarkerOptions; public class MapsActivity extends AppCompatActivity implements OnMapReadyCallback { private GoogleMap mMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_maps); // Obtain the SupportMapFragment and get notified when the map is ready to be used. SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map); mapFragment.getMapAsync(this); } /** * Manipulates the map once available. * This callback is triggered when the map is ready to be used. * This is where we can add markers or lines, add listeners or move the camera. In this case, * we just add a marker near Sydney, Australia. * * If Google Play services is not installed on the device, the user will be prompted to install * it inside the SupportMapFragment. This method will only be triggered once the user has * installed Google Play services and returned to the app. */ @Override public void onMapReady(GoogleMap googleMap) { mMap = googleMap; // Add a marker in Sydney and move the camera LatLng sydney = new LatLng(-34, 151); mMap.addMarker(new MarkerOptions() .position(sydney) .title("Marker in Sydney")); mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); } }
Kotlin
import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import com.google.android.gms.maps.CameraUpdateFactory import com.google.android.gms.maps.GoogleMap import com.google.android.gms.maps.OnMapReadyCallback import com.google.android.gms.maps.SupportMapFragment import com.google.android.gms.maps.model.LatLng import com.google.android.gms.maps.model.MarkerOptions internal class MapsActivity : AppCompatActivity(), OnMapReadyCallback { private lateinit var mMap: GoogleMap override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_maps) // Obtain the SupportMapFragment and get notified when the map is ready to be used. val mapFragment = supportFragmentManager .findFragmentById(R.id.map) as SupportMapFragment mapFragment.getMapAsync(this) } /** * Manipulates the map once available. * This callback is triggered when the map is ready to be used. * This is where we can add markers or lines, add listeners or move the camera. In this case, * we just add a marker near Sydney, Australia. * If Google Play services is not installed on the device, the user will be prompted to install * it inside the SupportMapFragment. This method will only be triggered once the user has * installed Google Play services and returned to the app. */ override fun onMapReady(googleMap: GoogleMap) { mMap = googleMap // Add a marker in Sydney and move the camera val sydney = LatLng(-34.0, 151.0) mMap.addMarker(MarkerOptions() .position(sydney) .title("Marker in Sydney")) mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)) } }
Plik Gradle modułu
Plik Moduł build.gradle
zawiera tę zależność map, która jest wymagana przez pakiet SDK Map na Androida.
dependencies { implementation 'com.google.android.gms:play-services-maps:18.1.0' // ... }
Aby dowiedzieć się więcej o zarządzaniu zależnościami w Mapach, przeczytaj Informacje o wersji.
Plik układu XML
Plik activity_maps.xml
to plik układu XML, który definiuje strukturę interfejsu aplikacji. Plik znajduje się w katalogu res/layout
.
Plik activity_maps.xml
deklaruje fragment, który zawiera następujące elementy:
tools:context
ustawia domyślną aktywność tego fragmentu naMapsActivity
, który jest zdefiniowany w pliku aktywności map.android:name
ustawia nazwę klasy fragmentu naSupportMapFragment
, czyli typ segmentu używany w pliku aktywności map.
Plik układu XML zawiera ten kod:
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/map"
tools:context=".MapsActivity"
android:name="com.google.android.gms.maps.SupportMapFragment" />
Wdrażanie i uruchamianie aplikacji
Po uruchomieniu aplikacji wyświetli się mapa wyśrodkowana na Sydney Australia ze znacznikiem miasta, tak jak na tym zrzucie ekranu.
Aby wdrożyć i uruchomić aplikację:
- W Android Studio kliknij opcję Uruchom (lub ikonę przycisku odtwarzania), aby uruchomić aplikację.
- Gdy pojawi się prośba o wybranie urządzenia, wybierz jedną z tych opcji:
- Wybierz urządzenie z Androidem połączone z komputerem.
- Możesz też zaznaczyć opcję Uruchom emulator i wybrać skonfigurowane urządzenie wirtualne.
- Kliknij OK. Android Studio uruchomi Gradle w celu skompilowania aplikacji, a następnie wyświetli wyniki na urządzeniu lub w emulatorze. Może minąć kilka minut, zanim aplikacja zostanie uruchomiona.
Dalsze kroki
Konfigurowanie mapy: w tym artykule dowiesz się, jak skonfigurować ustawienia początkowe i wykonawcze, takie jak pozycja kamery, typ mapy, komponenty interfejsu i gesty.
Dodaj mapę do aplikacji na Androida (Kotlin): w ramach tych ćwiczeń z programowania poznasz niektóre funkcje pakietu SDK Map Google na Androida.
Skorzystaj z biblioteki Map KTX Map na Androida: w bibliotece rozszerzeń Kotlin możesz korzystać z kilku funkcji językowych Kotlin, korzystając z pakietu SDK Map na Androida.