אירועים ותנועות של סמנים

כשמוגדרים מאפיינים מתקדמים של סמנים, אפשר לעקוב אחר אירועי סמנים כמו הקשות ותנועות. אם מקישים על סמן, אפשר לראות מידע נוסף, כמו כותרת או קטע טקסט של סמן. אפשר גם להזיז סמנים שניתנים לגרירה באמצעות תנועת לחיצה ארוכה.

  • כדי לעקוב אחר אירועי סמנים, צריך להוסיף את 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;