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