عند ضبط خصائص محدّدة للعلامات المتقدّمة، يمكنك تتبُّع أحداث العلامات، مثل النقرات والإيماءات. إذا تم النقر على محدّد موقع، يمكن الاطّلاع على معلومات إضافية، مثل عنوان محدّد الموقع أو مقتطف. يمكن أيضًا نقل العلامات القابلة للسحب باستخدام إيماءة الضغط مع الاستمرار.
- لتتبُّع أحداث العلامات، أضِف
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 }
Objective-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
.
Swift
// MARK: GMSMapViewDelegate func mapView(_ mapView: GMSMapView, didChange position: GMSCameraPosition) { marker.map = position.zoom >= 14 ? mapView : nil }
Objective-C
// MARK: GMSMapViewDelegate - (void)mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position { marker.map = position.zoom >= 14 ? mapView : nil; }
إتاحة سحب علامة
عند تفعيل الموقع draggable
، يمكن للمستخدمين سحب العلامات على الخريطة من خلال الضغط مع الاستمرار. لإتاحة سحب العلامة، اضبط السمة GMSMarker.draggable
على true.
Swift
marker.draggable = true
Objective-C
marker.draggable = YES;