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. Mengeklik 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 tersebut akan 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
kenil
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
pada penanda ke YES
atau true
jika Anda ingin properti baru atau konten jendela info langsung ditampilkan saat diubah, bukan menunggu jendela info disembunyikan, lalu ditampilkan 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 keNO
. - 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 di jendela info
Anda dapat memproses peristiwa jendela info berikut:
mapView:markerInfoWindow:
— Dipanggil saat penanda akan dipilih. Secara opsional, dapat menampilkan jendela info khusus, sebagaiUIView
, yang akan digunakan untuk penanda. Lihat Jendela info kustom di bawah untuk informasi selengkapnya.mapView:markerInfoContents:
— Dipanggil saatmapView:markerInfoWindow
menampilkan nilai nol.mapView:didCloseInfoWindowOfMarker:
— Dipanggil saat jendela info penanda ditutup.mapView:didLongPressInfoWindowOfMarker:
— Dipanggil setelah jendela info penanda ditekan lama.
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.
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.