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