Menambahkan peta

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 menanggapi 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 objek GoogleMap setelah objek tersebut diambil dari objek SupportMapFragment atau MapView.

  • SupportMapFragmentFragmen untuk mengelola siklus proses objek GoogleMap.

  • MapViewTampilan untuk mengelola siklus proses objek GoogleMap.

  • OnMapReadyCallback — Antarmuka callback yang menangani peristiwa dan interaksi pengguna untuk objek GoogleMap.

Objek GoogleMap secara otomatis melakukan operasi berikut:

  • Menghubungkan ke layanan Google Maps.
  • Mendownload ubin peta.
  • Menampilkan ubin 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. Class 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. Sebagai contoh, lihat RawMapViewDemoActivity di GitHub.

Langkah-langkah dasar:

  1. Sebelum memulai: Pastikan Anda telah menyelesaikan langkah-langkah pada panduan konfigurasi project sehingga project Anda siap untuk menggunakan Maps SDK for Android.

  2. Tambahkan objek SupportMapFragment ke aktivitas yang akan menangani peta. Anda dapat menambahkan fragmen secara statis atau dinamis.

  3. Terapkan antarmuka OnMapReadyCallback.

  4. Setel file tata letak sebagai tampilan konten.

  5. Jika Anda menambahkan fragmen secara statis, dapatkan handle untuk fragmen.

  6. Daftarkan callback.

  7. 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:

  1. Tambahkan elemen fragment.
  2. Tambahkan deklarasi nama xmlns:map="http://schemas.android.com/apk/res-auto". Tindakan ini memungkinkan penggunaan atribut XML kustom maps.
  3. Dalam elemen fragment, tetapkan atribut android:name ke com.google.android.gms.maps.SupportMapFragment.
  4. Dalam elemen fragment, tambahkan atribut android: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:

  1. Buat instance SupportMapFragment.
  2. Lakukan transaksi yang menambahkan fragmen ke aktivitas. Untuk informasi selengkapnya, lihat Transaksi Fragmen.

Contoh:

Java

SupportMapFragment mapFragment = SupportMapFragment.newInstance();
getSupportFragmentManager()
    .beginTransaction()
    .add(R.id.my_container, mapFragment)
    .commit();
      

Kotlin

val mapFragment = SupportMapFragment.newInstance()
supportFragmentManager
    .beginTransaction()
    .add(R.id.my_container, mapFragment)
    .commit()
      

Menerapkan antarmuka OnMapReadyCallback

Perbarui deklarasi aktivitas seperti berikut:

Java

class MainActivity extends AppCompatActivity implements OnMapReadyCallback {
    // ...
}
      

Kotlin

class MainActivity : AppCompatActivity(), 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:

Java

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}
      

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main)
}
      

Mendapatkan handle untuk fragmen dan mendaftarkan callback

  1. 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.

  2. Panggil metode getMapAsync untuk menetapkan callback pada fragmen.

Misalnya, jika Anda menambahkan fragmen secara statis:

Java

SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
    .findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
      

Kotlin

val mapFragment = supportFragmentManager
    .findFragmentById(R.id.map) as SupportMapFragment
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 class GoogleMap yang dapat Anda gunakan untuk memperbarui peta.

Dalam contoh ini, callback onMapReady mengambil handle untuk objek GoogleMap lalu penanda ditambahkan ke peta:

Java

@Override
public void onMapReady(GoogleMap googleMap) {
    googleMap.addMarker(new MarkerOptions()
        .position(new LatLng(0, 0))
        .title("Marker"));
}
      

Kotlin

override fun onMapReady(googleMap: GoogleMap) {
    googleMap.addMarker(
        MarkerOptions()
            .position(LatLng(0.0, 0.0))
            .title("Marker")
    )
}
      


Screenshot berisi peta dan penanda yang berada di tengah-tengah Pulau Null.

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:

Lihat Aktivitas Lengkap


Langkah berikutnya

Setelah menyelesaikan langkah-langkah ini, Anda dapat mengonfigurasi setelan peta.