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