Markierungsereignisse und Gesten

Wenn bestimmte erweiterte Markierungseigenschaften festgelegt sind, können Sie Markierungselemente wie Taps und Gesten beobachten. Wenn auf eine Markierung getippt wird, sind zusätzliche Informationen wie ein Markierungstitel oder ein Snippet zu sehen. Verschiebbare Markierungen lassen sich auch durch langes Drücken verschieben.

  • Wenn Sie Markierungsereignisse erfassen möchten, fügen Sie GMSMapViewDelegate in Ihre view ein.
  • Um eine Markierung ziehbar zu machen, müssen Sie die Eigenschaft GMSMarker.draggable festlegen.
  • Um beschreibenden Text für eine Markierung festzulegen, verwenden Sie das Attribut GMSMarker.title.

Auf Markierungsereignisse reagieren

Sie können auf Markierungsereignisse reagieren, indem Sie das Protokoll GMSMapViewDelegate zu Ihrer Ansicht hinzufügen und den entsprechenden Callback implementieren. In diesem Beispiel werden die title und snippet für eine ausgewählte Markierung ermittelt.

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;
}

Sichtbarkeit von Markierungen nach Kartenzoomstufe steuern

Um die Sichtbarkeit von GMSMarker zu steuern, implementieren Sie das Protokoll GMSMapViewDelegate und fügen Sie eine Bedingung hinzu, um GMSMarker.map festzulegen.

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;
}

Markierungen ziehbar machen

Wenn Sie die draggable-Eigenschaft aktivieren, können Nutzer Markierungen auf der Karte durch langes Drücken verschieben. Um eine Markierung ziehbar zu machen, muss die Eigenschaft GMSMarker.draggable auf „true“ gesetzt werden.

Swift

marker.draggable = true

Objective-C

marker.draggable = YES;