Zdarzenia i gesty znacznika

Gdy ustawisz określone właściwości znacznika zaawansowanego, możesz monitorować zdarzenia znacznika takie jak kliknięcia i gesty. Jeśli klikniesz znacznik, zobaczysz dodatkowe informacje, takie jak tytuł lub fragment znacznika. Możesz też przesuwać znaczniki, które można przeciągać, za pomocą gestu długiego naciśnięcia.

Odpowiadanie na zdarzenia znacznika

Możesz odpowiadać na zdarzenia znacznika przez dodanie protokołu GMSMapViewDelegate do widoku i implementację odpowiedniego wywołania zwrotnego. Ten przykład identyfikuje title i snippet wybranego znacznika.

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

Sterowanie widocznością znacznika według poziomu powiększenia mapy

Aby kontrolować widoczność GMSMarker, zaimplementuj protokół GMSMapViewDelegate i dodaj warunek ustawienia 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;
}

Ustawianie znacznika jako przeciąganego

Gdy włączysz właściwość draggable, użytkownicy będą mogli przeciągać znaczniki na mapie za pomocą gestu długiego naciśnięcia. Aby można było przeciągać znacznik, ustaw właściwość GMSMarker.draggable na true.

Swift

marker.draggable = true

Objective-C

marker.draggable = YES;