โดยค่าเริ่มต้น จุดที่น่าสนใจ (POI) จะปรากฏบนแผนที่ฐานพร้อมกับไอคอนที่เกี่ยวข้อง POI ได้แก่ สวนสาธารณะ โรงเรียน อาคารรัฐบาล และอื่นๆ นอกจากนี้ POI ธุรกิจ จะปรากฏบนแผนที่โดยค่าเริ่มต้นเมื่อประเภทแผนที่เป็น kGMSTypeNormal POI ธุรกิจแสดงถึงธุรกิจต่างๆ เช่น ร้านค้า ร้านอาหาร โรงแรม และอื่นๆ
POI จะสอดคล้องกับรหัสสถานที่ ตามที่กำหนดไว้ใน Places SDK สำหรับ iOS ตัวอย่างเช่น สวนสาธารณะเพื่อการพักผ่อนหย่อนใจเป็น POI แต่สิ่งต่างๆ เช่น น้ำพุโดยทั่วไปจะไม่ใช่ POI (เว้นแต่จะมีคุณค่าระดับชาติหรือทางประวัติศาสตร์)
การฟังเหตุการณ์การคลิกใน POI
หากต้องการตอบสนองต่อการแตะ POI ของผู้ใช้ ให้ใช้
GMSMapViewDelegate,
และใช้เมธอด
mapView(_:didTapPOIWithPlaceID:name:location:)
ดังที่แสดงในตัวอย่างต่อไปนี้
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
การแสดงรายละเอียดในหน้าต่างข้อมูล
POI จะปรากฏบนแผนที่โดยค่าเริ่มต้น แต่ไม่มี UI ที่คลิกได้โดยค่าเริ่มต้น (API จะไม่แสดงหน้าต่างข้อมูลหรืออินเทอร์เฟซผู้ใช้อื่นๆ โดยอัตโนมัติเมื่อผู้ใช้แตะ 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; }
การหยุดไม่ให้ POI แสดงบนแผนที่
คุณสามารถซ่อน POI ได้โดยใช้รูปแบบที่กำหนดเองกับ POI ทั้งหมดหรือ POI บางหมวดหมู่
การประกาศรูปแบบ JSON ต่อไปนี้จะซ่อน POI ธุรกิจทั้งหมดบนแผนที่
[
{
"featureType": "poi.business",
"stylers": [
{ "visibility": "off" }
]
}
]
อีกตัวอย่างหนึ่งคือ JSON ต่อไปนี้จะทำให้การแสดง POI ทุกหมวดหมู่ง่ายขึ้น
[
{
"featureType": "poi",
"stylers": [
{ "visibility": "simplified" }
]
}
]
ดูรายละเอียดเพิ่มเติมได้ที่คู่มือการซ่อนฟีเจอร์แผนที่ด้วยการจัดรูปแบบ