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

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

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