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