وقایع و حرکات نشانگر

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

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

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

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

سویفت

// 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
}

هدف-C

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

سویفت

// MARK: GMSMapViewDelegate

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

هدف-C

// MARK: GMSMapViewDelegate

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

یک نشانگر قابل کشیدن ایجاد کنید

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

سویفت

marker.draggable = true

هدف-C

marker.draggable = YES;