Markierungsereignisse und Gesten

Wenn bestimmte Eigenschaften für erweiterte Markierungen festgelegt sind, können Sie Markierungsereignisse wie Tippen und Touch-Gesten im Blick behalten. Wenn auf eine Markierung getippt wird, werden zusätzliche Informationen wie der Titel oder ein Ausschnitt der Markierung angezeigt. Ziehbare Markierungen können auch durch langes Drücken verschoben werden.

  • Wenn Sie Markierungsereignisse erfassen möchten, fügen Sie den GMSMapViewDelegate zu view hinzu.
  • Wenn eine Markierung ziehbar sein soll, müssen Sie die Eigenschaft GMSMarker.draggable festlegen.
  • Wenn Sie beschreibenden Text für eine Markierung festlegen möchten, verwenden Sie die Eigenschaft GMSMarker.title.

Auf Markierungsereignisse reagieren

Wenn Sie auf Markierungsereignisse reagieren möchten, fügen Sie Ihrer Ansicht das Protokoll GMSMapViewDelegate hinzu und implementieren Sie den entsprechenden Callback. In diesem Beispiel werden die title und snippet für eine ausgewählte Markierung identifiziert.

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

Implementieren Sie zum Steuern der Sichtbarkeit von GMSMarker 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 die Eigenschaft draggable aktiviert ist, können Nutzer Markierungen auf der Karte durch langes Drücken ziehen. Um eine Markierung ziehbar zu machen, muss die Eigenschaft GMSMarker.draggable auf „true“ gesetzt werden.

Swift

marker.draggable = true

Objective-C

marker.draggable = YES;