Topik ini menjelaskan cara menambahkan peta dasar ke aplikasi Android setelah Anda mengonfigurasi project untuk menggunakan Maps SDK for Android. Setelah menambahkan peta, Anda dapat mengubah fitur dan jenis peta.
Ringkasan
Maps SDK for Android menyediakan beberapa class yang dapat digunakan aplikasi untuk mengelola siklus proses, fungsionalitas, dan data peta. Class mendukung interaksi pengguna berdasarkan model UI Android, seperti menetapkan status awal peta, dan merespons input gestur dari pengguna pada runtime.
Class dan antarmuka utama untuk menangani peta:
GoogleMap
— Titik entri untuk mengelola data dan fitur peta pokok. Aplikasi Anda hanya dapat mengakses objekGoogleMap
setelah objek tersebut diambil dari objekSupportMapFragment
atauMapView
.SupportMapFragment
— Fragmen untuk mengelola siklus proses objekGoogleMap
.MapView
— Tampilan untuk mengelola siklus proses objekGoogleMap
.OnMapReadyCallback
— Antarmuka callback yang menangani peristiwa dan interaksi pengguna untuk objekGoogleMap
.
Objek GoogleMap
secara otomatis melakukan operasi berikut:
- Menghubungkan ke layanan Google Maps.
- Mendownload petak peta.
- Menampilkan petak peta pada layar perangkat.
- Menampilkan berbagai kontrol seperti geser dan zoom.
- Merespons gestur geser dan zoom dengan menggerakkan peta dan memperbesar atau memperkecil.
Untuk menggunakan objek GoogleMap
di aplikasi, Anda harus menggunakan objek
SupportMapFragment
atau MapView
sebagai objek penampung untuk peta,
lalu mengambil objek GoogleMap
dari penampung tersebut. Karena class
penampung berasal dari fragmen atau tampilan Android, penampung tersebut memberikan kemampuan class dasar Android
terkait pengelolaan siklus proses dan UI-nya ke peta.
SupportMapFragment
adalah penampung yang lebih modern dan umum untuk objek
GoogleMap
.
Melihat kode
Kode berikut berasal dari aktivitas lengkap Java yang digunakan dalam topik ini saat menambahkan fragmen secara statis. Project Android dibuat dari template project Kosong, lalu diupdate berdasarkan panduan konfigurasi project. Setelah melakukan langkah-langkah dalam topik ini, kode Anda mungkin berbeda bergantung pada template project.
package com.example.mapsetup; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; 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; // Implement OnMapReadyCallback. public class MainActivity extends AppCompatActivity implements OnMapReadyCallback { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Set the layout file as the content view. setContentView(R.layout.activity_main); // Get a handle to the fragment and register the callback. SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map); mapFragment.getMapAsync(this); } // Get a handle to the GoogleMap object and display marker. @Override public void onMapReady(GoogleMap googleMap) { googleMap.addMarker(new MarkerOptions() .position(new LatLng(0, 0)) .title("Marker")); } }
Untuk menambahkan peta
Bagian ini menjelaskan cara menambahkan peta dasar dengan menggunakan fragmen sebagai penampung peta; namun, Anda juga dapat menggunakan tampilan. Untuk mengetahui contohnya, lihat RawMapViewDemoActivity di GitHub.
Langkah-langkah dasar:
Untuk memperoleh SDK, mendapatkan kunci API, dan menambahkan framework yang diperlukan, ikuti langkah-langkah dalam artikel berikut:
Tambahkan objek
SupportMapFragment
ke aktivitas yang akan menangani peta. Anda dapat menambahkan fragmen secara statis atau dinamis.Terapkan antarmuka
OnMapReadyCallback
.Setel file tata letak sebagai tampilan konten.
Jika Anda menambahkan fragmen secara statis, dapatkan handle untuk fragmen.
Daftarkan callback.
Dapatkan handle untuk objek
GoogleMap
.
Menambahkan objek SupportMapFragment
Anda dapat menambahkan objek SupportMapFragment
ke aplikasi secara statis atau dinamis.
Cara paling mudah adalah menambahkannya secara statis. Jika fragmen ditambahkan secara dinamis,
Anda dapat melakukan tindakan lain pada fragmen, seperti menghapus dan
menggantinya pada runtime.
Untuk menambahkan fragmen secara Statis
Dalam file tata letak aktivitas yang akan menangani peta:
- Tambahkan elemen
fragment
. - Tambahkan deklarasi nama
xmlns:map="http://schemas.android.com/apk/res-auto"
. Tindakan ini memungkinkan penggunaan atribut XML kustommaps
. - Dalam elemen
fragment
, tetapkan atributandroid:name
kecom.google.android.gms.maps.SupportMapFragment
. - Dalam elemen
fragment
, tambahkan atributandroid:id
dan tetapkan atribut tersebut ke ID resource R.id.map (@+id/map
).
Misalnya, berikut adalah file tata letak lengkap yang menyertakan elemen fragment
:
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
Untuk menambahkan fragmen secara dinamis
Pada aktivitas:
- Buat instance
SupportMapFragment
. - Lakukan transaksi yang menambahkan fragmen ke aktivitas. Untuk informasi selengkapnya, lihat Transaksi Fragmen.
Contoh:
Kotlin
val mapFragment = SupportMapFragment.newInstance() supportFragmentManager .beginTransaction() .add(R.id.my_container, mapFragment) .commit()
Java
SupportMapFragment mapFragment = SupportMapFragment.newInstance(); getSupportFragmentManager() .beginTransaction() .add(R.id.my_container, mapFragment) .commit();
Menerapkan antarmuka OnMapReadyCallback
Perbarui deklarasi aktivitas seperti berikut:
Kotlin
class MainActivity : AppCompatActivity(), OnMapReadyCallback { // ... }
Java
class MainActivity extends AppCompatActivity implements OnMapReadyCallback { // ... }
Menyetel tampilan konten
Dalam metode onCreate
aktivitas Anda, panggil metode
setContentView
dan tetapkan file tata letak sebagai tampilan konten.
Misalnya, jika file tata letak diberi nama main.xml
:
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.main) }
Java
@Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); }
Mendapatkan handle untuk fragmen dan mendaftarkan callback
Agar bisa mendapatkan handle untuk fragmen, panggil metode
FragmentManager.findFragmentById
dan teruskan ID resource fragmen di file tata letak Anda. Jika Anda menambahkan fragmen secara dinamis, lewati langkah ini karena Anda telah mengambil handle.Panggil metode
getMapAsync
untuk menetapkan callback pada fragmen.
Misalnya, jika Anda menambahkan fragmen secara statis:
Kotlin
val mapFragment = supportFragmentManager .findFragmentById(R.id.map) as SupportMapFragment mapFragment.getMapAsync(this)
Java
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map); mapFragment.getMapAsync(this);
Mendapatkan handle untuk objek GoogleMap
Gunakan metode callback onMapReady
untuk mendapatkan handle
untuk objek GoogleMap
. Callback akan dipicu jika peta sudah siap untuk menerima
input pengguna. Ini akan memberikan instance non-null dari class GoogleMap
yang
dapat Anda gunakan untuk memperbarui peta.
Dalam contoh ini, callback onMapReady
mengambil handle untuk objek GoogleMap
lalu penanda ditambahkan ke peta:
Kotlin
override fun onMapReady(googleMap: GoogleMap) { googleMap.addMarker( MarkerOptions() .position(LatLng(0.0, 0.0)) .title("Marker") ) }
Java
@Override public void onMapReady(GoogleMap googleMap) { googleMap.addMarker(new MarkerOptions() .position(new LatLng(0, 0)) .title("Marker")); }
Jika Anda berhasil membuat dan menjalankan aplikasi, peta akan ditampilkan dengan penanda di Pulau Null (lintang nol derajat dan bujur nol derajat).
Lihat kode untuk aktivitas lengkap:
Langkah berikutnya
Setelah menyelesaikan langkah-langkah ini, Anda dapat mengonfigurasi setelan peta.