رویدادها و اشاره‌های نشانگر

وقتی ویژگی‌های نشانگر پیشرفته خاصی تنظیم شده باشد، می‌توانید رویدادهای نشانگر مثل تک‌ضرب‌ها و اشاره‌ها را پایش کنید. اگر روی نشانگری تک‌ضرب زده شود، می‌توان اطلاعات بیشتری مثل عنوان نشانگر یا گزیده را دید. همچنین می‌توان نشانگرهای کشیدنی را بااستفاده از اشاره فشار طولانی جابه‌جا کرد.

  • برای ردیابی رویدادهای نشانگر، GMSMapViewDelegate را به view خود اضافه کنید.
  • برای اینکه نشانگر کشیدنی شود، خصوصیت GMSMarker.draggable را تنظیم کنید.
  • برای تنظیم نوشتار توصیفی برای نشانگر، از ویژگی GMSMarker.title استفاده کنید.

پاسخ دادن به رویدادهای نشانگر

می‌توانید با افزودن پروتکل GMSMapViewDelegate به نمای خود و پیاده‌سازی فراخوان مربوطه، به رویدادهای نشانگر پاسخ دهید. این مثال title و snippet را برای نشانگر انتخاب‌شده شناسایی می‌کند.

Swift

// MARK: GMSMapViewDelegate

func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool {
  if let title = marker.title {
    if let snippet = marker.snippet {
      print("marker title: \(title): snippet: \(snippet)")
    }
  }
  return true
}

آبجکتیو-سی

// MARK: GMSMapViewDelegate

-   (BOOL)mapView:(GMSMapView *)mapView didTapMarker:(GMSMarker *)marker {
  if (marker.title && marker.snippet) {
    NSLog(@"marker with title:%@ snippet: %@", marker.title,  marker.snippet)
  }
  return YES;
}

کنترل رؤیت‌پذیری نشانگر براساس سطح بزرگ‌نمایی نقشه

برای کنترل رؤیت‌پذیری GMSMarker، پروتکل GMSMapViewDelegate را پیاده‌سازی کنید و شرطی برای تنظیم GMSMarker.map اضافه کنید.

Swift

// MARK: GMSMapViewDelegate

func mapView(_ mapView: GMSMapView, didChange position: GMSCameraPosition) {
    marker.map = position.zoom >= 14 ? mapView : nil
}

آبجکتیو-سی

// MARK: GMSMapViewDelegate

-   (void)mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position {
  marker.map = position.zoom >= 14 ? mapView : nil;
}

کشیدنی کردن نشانگر

وقتی ویژگی draggable را فعال می‌کنید، کاربران می‌توانند با اشاره طولانی، نشانگرها را روی نقشه بکشند. برای اینکه نشانگر قابل‌کشیدن باشد، ویژگی GMSMarker.draggable را روی true تنظیم کنید.

Swift

marker.draggable = true

آبجکتیو-سی

marker.draggable = YES;