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