Secara default, lokasi menarik (POI) muncul pada peta dasar bersama ikonnya. POI mencakup taman, sekolah, gedung pemerintahan, dan lainnya. Selain itu, POI bisnis muncul secara default pada peta jika jenis peta adalah kGMSTypeNormal
. POI bisnis mewakili bisnis seperti toko,
restoran, hotel, dan lainnya.
POI mengacu pada ID Tempat, seperti yang ditentukan di Places SDK for iOS. Misalnya, taman rekreasi adalah POI, tetapi fitur-fitur seperti air mancur umumnya bukan POI (kecuali jika memiliki nilai sejarah atau nasional).
Memproses peristiwa klik pada POI
Jika Anda ingin merespons ketukan pengguna pada POI, terapkan
GMSMapViewDelegate
,
dan terapkan metode
mapView(_:didTapPOIWithPlaceID:name:location:)
, seperti yang ditunjukkan dalam contoh berikut:
Swift
import GoogleMaps class POI: UIViewController, GMSMapViewDelegate { override func loadView() { let camera = GMSCameraPosition.camera( withLatitude: 47.603, longitude:-122.331, zoom:14 ) let mapView = GMSMapView.map(withFrame: .zero, camera: camera) mapView.delegate = self self.view = mapView } func mapView( _ mapView: GMSMapView, didTapPOIWithPlaceID placeID: String, name: String, location: CLLocationCoordinate2D ) { print("You tapped \(name): \(placeID), \(location.latitude)/\(location.longitude)") } }
Objective-C
#import "POI.h" @import GoogleMaps; @interface POI () <GMSMapViewDelegate> @end @implementation POI - (void)loadView { GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:47.603 longitude:-122.331 zoom:14]; GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; mapView.delegate = self; self.view = mapView; } #pragma mark - GMSMapViewDelegate - (void)mapView:(GMSMapView *)mapView didTapPOIWithPlaceID:(NSString *)placeID name:(NSString *)name location:(CLLocationCoordinate2D)location { NSLog(@"You tapped %@: %@, %f/%f", name, placeID, location.latitude, location.longitude); } @end
Menampilkan detail di jendela info
POI muncul pada peta secara default, tetapi tidak ada UI on-click default (API tidak otomatis menampilkan jendela info atau antarmuka pengguna lainnya saat pengguna mengetuk POI). Contoh berikut menunjukkan cara menggunakan penanda untuk menampilkan jendela info untuk POI:
Swift
// Declare GMSMarker instance at the class level. let infoMarker = GMSMarker() // Attach an info window to the POI using the GMSMarker. func mapView( _ mapView: GMSMapView, didTapPOIWithPlaceID placeID: String, name: String, location: CLLocationCoordinate2D ) { infoMarker.snippet = placeID infoMarker.position = location infoMarker.title = name infoMarker.opacity = 0; infoMarker.infoWindowAnchor.y = 1 infoMarker.map = mapView mapView.selectedMarker = infoMarker }
Objective-C
// Declare a GMSMarker instance at the class level. GMSMarker *infoMarker; // Attach an info window to the POI using the GMSMarker. - (void)mapView:(GMSMapView *)mapView didTapPOIWithPlaceID:(NSString *)placeID name:(NSString *)name location:(CLLocationCoordinate2D)location { infoMarker = [GMSMarker markerWithPosition:location]; infoMarker.snippet = placeID; infoMarker.title = name; infoMarker.opacity = 0; CGPoint pos = infoMarker.infoWindowAnchor; pos.y = 1; infoMarker.infoWindowAnchor = pos; infoMarker.map = mapView; mapView.selectedMarker = infoMarker; }
Membuat POI tidak muncul di peta
Anda dapat menyembunyikan POI dengan menerapkan gaya kustom ke semua POI atau ke kategori POI tertentu.
Deklarasi gaya JSON berikut menyembunyikan semua POI bisnis pada peta:
[
{
"featureType": "poi.business",
"stylers": [
{ "visibility": "off" }
]
}
]
Sebagai contoh lain, JSON berikut menyederhanakan tampilan semua kategori POI:
[
{
"featureType": "poi",
"stylers": [
{ "visibility": "simplified" }
]
}
]
Untuk mengetahui detail selengkapnya, lihat panduan untuk menyembunyikan fitur peta dengan gaya visual.