Jendela info

Pilih platform: Android iOS JavaScript

Jendela info muncul di atas penanda.

Jendela info memungkinkan Anda menampilkan informasi kepada pengguna saat mereka mengetuk penanda.

Jendela info digambar dengan berorientasi pada layar perangkat, yang berpusat di atas penanda yang terkait dengannya. Jendela info {i>default<i} berisi judul yang dicetak tebal, dengan teks cuplikan di bawah judul.

Konten jendela info ditentukan oleh title dan Properti snippet penanda. Mengklik penanda tidak akan menampilkan jendela info jika properti title dan snippet kosong atau nil.

Hanya satu jendela info yang ditampilkan pada satu waktu. Jika pengguna mengetuk penanda lain, jendela saat ini disembunyikan dan jendela info baru akan terbuka. Jika pengguna mengklik penanda yang saat ini menampilkan jendela info, jendela info ditutup dan dibuka kembali.

Buat jendela info kustom untuk menambahkan teks atau gambar tambahan. Kustom jendela info memberi Anda kontrol penuh atas tampilan pop-up.

Menambahkan jendela info

Cuplikan berikut membuat penanda sederhana, hanya dengan judul untuk teks jendela info.

Swift

let position = CLLocationCoordinate2D(latitude: 51.5, longitude: -0.127)
let london = GMSMarker(position: position)
london.title = "London"
london.map = mapView
      

Objective-C

CLLocationCoordinate2D position = CLLocationCoordinate2DMake(51.5, -0.127);
GMSMarker *london = [GMSMarker markerWithPosition:position];
london.title = @"London";
london.map = mapView;
      

Dengan properti snippet, Anda dapat menambahkan teks tambahan yang akan muncul di bawah judul dengan menggunakan {i>font<i} yang lebih kecil. {i>String<i} yang lebih panjang dari lebar jendela info secara otomatis dibungkus melalui beberapa baris. Sangat panjang pesan mungkin terpotong.

Swift

london.title = "London"
london.snippet = "Population: 8,174,100"
london.map = mapView
      

Objective-C

london.title = @"London";
london.snippet = @"Population: 8,174,100";
london.map = mapView;
      

Menampilkan/menyembunyikan jendela info

Jendela info dirancang untuk merespons peristiwa sentuh dari pengguna pada penanda. Anda dapat menampilkan atau menyembunyikan jendela info secara terprogram dengan menyetel selectedMarker properti GMSMapView:

  • Tetapkan selectedMarker ke nama penanda untuk menampilkannya.
  • Setel selectedMarker ke nil untuk menyembunyikannya.

Swift

london.title = "London"
london.snippet = "Population: 8,174,100"
london.map = mapView
// Show marker
mapView.selectedMarker = london
// Hide marker
mapView.selectedMarker = nil
      

Objective-C

london.title = @"London";
london.snippet = @"Population: 8,174,100";
london.map = mapView;
// Show marker
mapView.selectedMarker = london;
// Hide marker
mapView.selectedMarker = nil;
      

Menyetel jendela info agar otomatis disegarkan

Tetapkan tracksInfoWindowChanges di penanda ke YES atau true jika Anda menginginkan properti baru atau konten info untuk segera ditampilkan saat diubah, daripada harus menunggu jendela info untuk menyembunyikan dan kemudian menampilkannya lagi. Defaultnya adalah NO atau false.

Swift

london.tracksInfoWindowChanges = true
      

Objective-C

london.tracksInfoWindowChanges = YES;
      

Untuk memutuskan kapan harus menyetel tracksInfoWindowChanges, Anda harus mempertimbangkan kinerja dan keuntungan memiliki jendela info digambar ulang secara otomatis. Contoh:

  • Jika ingin membuat serangkaian perubahan, Anda dapat mengubah properti menjadi YES lalu kembali ke NO.
  • Saat animasi berjalan atau konten dimuat secara asinkron, Anda harus tetap menetapkan properti ke YES sampai tindakan selesai.

Lihat juga catatan untuk pertimbangan saat menggunakan properti iconView penanda.

Mengubah posisi jendela info

Jendela info digambar dengan berorientasi pada layar perangkat, yang berpusat di atas penanda terkait. Anda dapat mengubah posisi jendela info relatif terhadap penanda dengan menetapkan properti infoWindowAnchor. Ini properti menerima CGPoint, yang ditentukan sebagai offset (x,y) dengan x dan y berkisar antara 0,0 dan 1,0. Offset default adalah (0,5, 0,0), yaitu, di tengah atas. Menyetel offset infoWindowAnchor berguna untuk menyelaraskan info jendela dengan ikon khusus.

Swift

london.infoWindowAnchor = CGPoint(x: 0.5, y: 0.5)
london.icon = UIImage(named: "house")
london.map = mapView
      

Objective-C

london.infoWindowAnchor = CGPointMake(0.5, 0.5);
london.icon = [UIImage imageNamed:@"house"];
london.map = mapView;
      

Menangani peristiwa pada jendela info

Anda dapat memproses peristiwa jendela info berikut:

Untuk memproses peristiwa, Anda harus mengimplementasikan metode Protokol GMSMapViewDelegate. Lihat panduan peristiwa dan daftar metode di GMSMapViewDelegate

GitHub menyertakan contoh yang menunjukkan cara menangani peristiwa jendela info:

Jendela info kustom

Sesuaikan konten jendela info dengan membuat subclass dari UIView yang menentukan tata letak jendela info kustom. Di {i>subclass<i} itu, menentukan tampilan sesuai keinginan Anda. Misalnya, Anda dapat menggunakan UILabel instance untuk menampilkan judul dan teks cuplikan serta tampilan lain, seperti UIImageView untuk menambahkan gambar yang ditampilkan di jendela info.

Pastikan ViewController Anda mengimplementasikan GMSIndoorDisplayDelegate dan menentukan pemroses untuk mapView:markerInfoWindow: peristiwa. Pemroses peristiwa ini dipanggil saat penanda akan menjadi dipilih, dan memungkinkan Anda menampilkan instance class UIView kustom ke mendefinisikan jendela info kustom yang digunakan oleh penanda.

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

Contoh kode di GitHub yang disediakan dengan Maps SDK for iOS menyertakan contoh jendela info kustom. Misalnya, lihat definisi MarkerInfoWindowViewController.m (Objective-C) atau MarkerInfoWindowViewController.swift (Swift).

Lihat contoh kode untuk mengetahui informasi tentang cara mendownload dan menjalankan contoh-contoh ini.