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

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

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