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

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

  • برای ردیابی رویدادهای نشانگر، 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
}

هدف-سی

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

هدف-سی

// MARK: GMSMapViewDelegate

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

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

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

سویفت

marker.draggable = true

هدف-سی

marker.draggable = YES;