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

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

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