Menambahkan peta

Pilih platform: Android iOS JavaScript

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

  1. Untuk memperoleh SDK, mendapatkan kunci API, dan menambahkan framework yang diperlukan, ikuti langkah-langkah dalam artikel berikut:

    1. Menyiapkan Project di Google Cloud Console

    2. Menggunakan kunci API

    3. Menyiapkan project Android Studio

  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:

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

  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:

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"));
}

      

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.