بهطور پیشفرض، نقاط موردعلاقه (POI) بههمراه نمادهای مربوطه در نقشه مبنا نشان داده میشوند. نقاط جالب شامل پارکها، مدارس، ساختمانهای دولتی، و غیره میشود. علاوهبراین، وقتی نوع نقشه kGMSTypeNormal باشد، نقاط موردعلاقه کسبوکار بهطور پیشفرض روی نقشه نشان داده میشود. «نقاط موردعلاقه کسبوکار» نشاندهنده کسبوکارهایی مثل فروشگاهها،
رستورانها، هتلها، و غیره است.
نقطه موردعلاقه با شناسه مکان مطابقت دارد، همانطور که در کیت توسعه نرمافزار Places برای 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 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)") } }
آبجکتیو-سی
#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
نمایش جزئیات در پنجره اطلاعات
نقاط موردعلاقه بهطور پیشفرض روی نقشه ظاهر میشوند، اما هیچ میانای کاربر پیشفرضی برای کلیک کردن وجود ندارد (وقتی کاربر روی نقطه موردعلاقه تکضرب میزند، میانای برنامهسازی کاربردی بهطور خودکار پنجره اطلاعات یا میانای کاربر دیگری را نمایش نمیدهد). مثال زیر نشان میدهد که چگونه میتوان از نشانگر برای نمایش پنجره اطلاعات برای نقطه موردعلاقه استفاده کرد:
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 }
آبجکتیو-سی
// 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 زیر نمایش همه دستههای نقاط موردعلاقه را ساده میکند:
[
{
"featureType": "poi",
"stylers": [
{ "visibility": "simplified" }
]
}
]
برای جزئیات بیشتر، راهنمای پنهان کردن ویژگیهای نقشه با سبکبندی را ببینید.