عند ضبط سمات متقدّمة محدّدة للعلامة، يمكنك تتبُّع أحداث العلامة، مثل النقرات والإيماءات. في حال النقر على أحد العلامات، يمكن للمستخدم الاطّلاع على معلومات إضافية، مثل عنوان العلامة أو مقتطف عنها. يمكن أيضًا نقل العلامات القابلة للسحب باستخدام إيماءة الضغط مع الاستمرار.
- لتتبُّع أحداث العلامات، أضِف
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;