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

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

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