کسب‌وکارها و دیگر نقاط موردعلاقه

پلاتفرم را انتخاب کنید: Android iOS JavaScript

به‌طور پیش‌فرض، نقاط موردعلاقه (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" }
    ]
  }
]

برای جزئیات بیشتر، راهنمای پنهان کردن ویژگی‌های نقشه با سبک‌بندی را ببینید.