Jendela Info

Pilih platform: Android iOS JavaScript

Jendela info menampilkan teks atau gambar dalam jendela pop-up di atas peta. Jendela info selalu ditambatkan ke penanda. Perilaku default-nya adalah muncul jika penanda diketuk.

Contoh kode

Repositori ApiDemos di GitHub mencakup contoh yang menunjukkan semua fitur jendela info:

Pengantar

Jendela info memungkinkan Anda menampilkan informasi kepada pengguna jika mereka mengetuk penanda. Hanya satu jendela info yang ditampilkan pada satu waktu. Jika pengguna mengklik penanda, jendela info saat ini akan ditutup dan jendela info baru akan ditampilkan. Perhatikan bahwa jika pengguna mengklik penanda yang saat ini menampilkan jendela info, jendela info tersebut akan ditutup dan dibuka ulang.

Jendela info digambar dengan berorientasi pada layar perangkat, yang berpusat di atas penanda terkait. Jendela info default berisi judul dalam cetak tebal, dengan teks cuplikan (opsional) di bawah judul.

Menambahkan jendela info

Cara paling sederhana untuk menambahkan jendela info adalah dengan menetapkan metode title() dan snippet() pada penanda terkait. Menetapkan properti ini akan menyebabkan jendela info muncul setiap kali penanda diklik.

Kotlin



val melbourneLatLng = LatLng(-37.81319, 144.96298)
val melbourne = map.addMarker(
    MarkerOptions()
        .position(melbourneLatLng)
        .title("Melbourne")
        .snippet("Population: 4,137,400")
)

      

Java


final LatLng melbourneLatLng = new LatLng(-37.81319, 144.96298);
Marker melbourne = map.addMarker(
    new MarkerOptions()
        .position(melbourneLatLng)
        .title("Melbourne")
        .snippet("Population: 4,137,400"));

      

Menampilkan/Menyembunyikan jendela info

Jendela info dirancang untuk merespons peristiwa sentuh dari pengguna. Jika mau, Anda dapat menampilkan jendela info secara terprogram dengan memanggil showInfoWindow() pada penanda target. Jendela info dapat disembunyikan dengan memanggil hideInfoWindow().

Kotlin



val melbourneLatLng = LatLng(-37.81319, 144.96298)
val melbourne = map.addMarker(
    MarkerOptions()
        .position(melbourneLatLng)
        .title("Melbourne")
)
melbourne?.showInfoWindow()

      

Java


final LatLng melbourneLatLng = new LatLng(-37.81319, 144.96298);
Marker melbourne = map.addMarker(
    new MarkerOptions()
        .position(melbourneLatLng)
        .title("Melbourne"));
melbourne.showInfoWindow();

      

Anda juga dapat membuat jendela info untuk masing-masing penanda yang dikelompokkan. Baca panduan untuk menambahkan jendela info untuk masing-masing penanda yang dikelompokkan.

Jendela info kustom

Anda juga dapat menyesuaikan konten dan desain jendela info. Caranya, Anda harus membuat penerapan konkret antarmuka InfoWindowAdapter, lalu memanggil GoogleMap.setInfoWindowAdapter() dengan penerapan Anda. Antarmuka ini berisi dua metode untuk Anda terapkan: getInfoWindow(Marker) dan getInfoContents(Marker). API terlebih dahulu akan memanggil getInfoWindow(Marker) dan jika null ditampilkan, API selanjutnya akan memanggil getInfoContents(Marker). Jika tindakan ini juga menampilkan null, jendela info default akan digunakan.

Bagian pertamanya (getInfoWindow()) memungkinkan Anda memberikan tampilan yang akan digunakan untuk jendela info secara keseluruhan. Bagian keduanya (getInfoContents()) memungkinkan Anda menyesuaikan konten jendela, tetapi tetap mempertahankan bingkai dan latar belakang default untuk jendela info.

Gambar di bawah menampilkan jendela info default, yaitu jendela info dengan konten yang disesuaikan, serta jendela info dengan bingkai dan latar belakang yang disesuaikan.

Perbandingan Jendela Info

Peristiwa jendela info

Contoh MarkerDemoActivity menyertakan contoh kode untuk mendaftarkan dan menangani peristiwa jendela info.

Anda dapat menggunakan OnInfoWindowClickListener untuk memproses peristiwa klik pada jendela info. Untuk menetapkan pemroses ini pada peta, panggil GoogleMap.setOnInfoWindowClickListener(OnInfoWindowClickListener). Jika pengguna mengklik jendela info, onInfoWindowClick(Marker) dipanggil dan jendela info ditandai dalam warna sorotan default (abu-abu).

Kotlin



internal inner class InfoWindowActivity : AppCompatActivity(),
    OnInfoWindowClickListener,
    OnMapReadyCallback {
    override fun onMapReady(googleMap: GoogleMap) {
        // Add markers to the map and do other map setup.
        // ...
        // Set a listener for info window events.
        googleMap.setOnInfoWindowClickListener(this)
    }

    override fun onInfoWindowClick(marker: Marker) {
        Toast.makeText(
            this, "Info window clicked",
            Toast.LENGTH_SHORT
        ).show()
    }
}

      

Java


class InfoWindowActivity extends AppCompatActivity implements
    GoogleMap.OnInfoWindowClickListener,
    OnMapReadyCallback {

    @Override
    public void onMapReady(GoogleMap googleMap) {
        // Add markers to the map and do other map setup.
        // ...
        // Set a listener for info window events.
        googleMap.setOnInfoWindowClickListener(this);
    }

    @Override
    public void onInfoWindowClick(Marker marker) {
        Toast.makeText(this, "Info window clicked",
            Toast.LENGTH_SHORT).show();
    }
}

      

Selain itu, Anda dapat memproses peristiwa klik lama dengan OnInfoWindowLongClickListener, yang dapat ditetapkan dengan memanggil GoogleMap.setOnInfoWindowCloseListener(OnInfoWindowCloseListener). Pemroses ini berperilaku mirip dengan pemroses klik dan akan diberi tahu tentang peristiwa klik lama menggunakan callback onInfoWindowClose(Marker).

Agar diberi tahu saat jendela info ditutup, gunakan OnInfoWindowCloseListener, yang dapat Anda tetapkan dengan memanggil GoogleMap.setOnInfoWindowCloseListener(OnInfoWindowCloseListener). Anda akan menerima callback onInfoWindowClose(Marker).

Catatan tentang memuat ulang jendela info: Peristiwa onInfoWindowClose() diaktifkan jika pengguna memuat ulang jendela info dengan mengetuk penanda yang sudah memiliki jendela info terbuka. Namun, jika Anda secara terprogram memanggil Marker.showInfoWindow() pada jendela info terbuka, peristiwa onInfoWindowClose() tidak akan diaktifkan. Perilaku yang terakhir tadi didasarkan pada asumsi bahwa Anda mengetahui jendela info akan ditutup dan dibuka kembali.

Seperti yang disebutkan di bagian sebelumnya tentang jendela info, jendela info bukanlah tampilan langsung. Namun, tampilannya dirender sebagai gambar pada peta. Akibatnya, setiap pemroses yang Anda tetapkan pada tampilan akan diabaikan dan Anda tidak dapat membedakan beberapa peristiwa klik di berbagai bagian tampilan. Sebaiknya jangan menempatkan komponen interaktif, seperti tombol, kotak centang, atau input teks, dalam jendela info kustom Anda.