وقتی ویژگیهای پیشرفتهی نشانگر تنظیم شوند، میتوانید رویدادهای نشانگر مانند ضربهها و حرکات را زیر نظر بگیرید. اگر روی یک نشانگر ضربه زده شود، میتوان اطلاعات اضافی مانند عنوان نشانگر یا قطعه کد را مشاهده کرد. همچنین میتوان نشانگرهای قابل جابجایی را با استفاده از یک حرکت فشار طولانی جابجا کرد.
- To track marker events, add the
GMSMapViewDelegateto yourview. - To make a marker draggable, set the
GMSMarker.draggableproperty. - To set descriptive text for a marker, use the
GMSMarker.titleproperty.
پاسخ به رویدادهای نشانگر
شما میتوانید با اضافه کردن پروتکل 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; }
کنترل میزان دید نشانگرها با سطح بزرگنمایی نقشه
To control the visibility of GMSMarker , implement the GMSMapViewDelegate protocol and add a condition to set 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; }
یک نشانگر را قابل کشیدن کنید
When you enable the draggable property users can drag markers on the map with a long press gesture. To make a marker draggable, set the GMSMarker.draggable property to true.
سویفت
marker.draggable = true
هدف-سی
marker.draggable = YES;