כשמגדירים מאפיינים ספציפיים של סמנים מתקדמים, אפשר לעקוב אחרי אירועים של סמנים, כמו הקשות ותנועות. אם מקישים על סמן, אפשר לראות מידע נוסף כמו כותרת הסמן או קטע קוד. אפשר גם להזיז סמנים שניתנים לגרירה באמצעות תנועת לחיצה ארוכה.
- כדי לעקוב אחרי אירועי סמנים, צריך להוסיף את
GMSMapViewDelegateל-view. - כדי להפוך סמן לניתן לגרירה, מגדירים את המאפיין
GMSMarker.draggable. - כדי להגדיר טקסט תיאורי לסמן, משתמשים במאפיין
GMSMarker.title.
תגובה לאירועים של סמנים
כדי להגיב לאירועי סמן, מוסיפים את הפרוטוקול GMSMapViewDelegate לתצוגה ומטמיעים את פונקציית ה-callback המתאימה. בדוגמה הזו, המערכת מזהה את 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;