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