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

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

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