وقتی ویژگیهای نشانگر پیشرفته خاصی تنظیم شده باشد، میتوانید رویدادهای نشانگر مثل تکضربها و اشارهها را پایش کنید. اگر روی نشانگری تکضرب زده شود، میتوان اطلاعات بیشتری مثل عنوان نشانگر یا گزیده را دید. همچنین میتوان نشانگرهای کشیدنی را بااستفاده از اشاره فشار طولانی جابهجا کرد.
- برای ردیابی رویدادهای نشانگر،
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;