مشاغل و سایر نقاط مورد علاقه

پلتفرم مورد نظر را انتخاب کنید: اندروید، iOS، جاوا اسکریپت

به طور پیش‌فرض، نقاط مورد علاقه (POI) به همراه نمادهای مربوطه‌شان روی نقشه پایه ظاهر می‌شوند. POIها شامل پارک‌ها، مدارس، ساختمان‌های دولتی و موارد دیگر می‌شوند. علاوه بر این، POIهای تجاری به طور پیش‌فرض روی نقشه ظاهر می‌شوند، زمانی که نوع نقشه kGMSTypeNormal باشد. POIهای تجاری نشان‌دهنده مشاغلی مانند مغازه‌ها، رستوران‌ها، هتل‌ها و موارد دیگر هستند.

یک POI مطابق با Place ID است که در Places SDK برای iOS تعریف شده است. برای مثال، پارک‌های تفریحی POI هستند، اما چیزهایی مانند فواره‌های آب معمولاً POI نیستند (مگر اینکه از اهمیت ملی یا تاریخی برخوردار باشند).

گوش دادن به رویدادهای کلیک در POIها

اگر می‌خواهید به ضربه زدن کاربر روی یک POI پاسخ دهید، GMSMapViewDelegate را پیاده‌سازی کنید و متد mapView(_:didTapPOIWithPlaceID:name:location:) را همانطور که در مثال زیر نشان داده شده است، پیاده‌سازی کنید:

سویفت

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)")
  }
}
      

هدف-سی

#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) به طور پیش‌فرض روی نقشه ظاهر می‌شوند، اما هیچ رابط کاربری پیش‌فرضی برای کلیک وجود ندارد (API به طور خودکار پنجره اطلاعات یا هیچ رابط کاربری دیگری را هنگام ضربه زدن کاربر روی یک POI نمایش نمی‌دهد). مثال زیر نحوه استفاده از یک نشانگر برای نمایش پنجره اطلاعات برای یک POI را نشان می‌دهد:

سویفت

// 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.
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ها را پنهان کنید.

اعلان سبک JSON زیر تمام POI های تجاری را روی نقشه پنهان می‌کند:

[
  {
    "featureType": "poi.business",
    "stylers": [
      { "visibility": "off" }
    ]
  }
]

به عنوان مثالی دیگر، JSON زیر نمایش همه دسته‌های POIها را ساده می‌کند:

[
  {
    "featureType": "poi",
    "stylers": [
      { "visibility": "simplified" }
    ]
  }
]

برای جزئیات بیشتر، به راهنمای پنهان کردن عوارض نقشه با استفاده از استایل‌بندی مراجعه کنید.