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