Zdarzenia i gesty znacznika

Gdy ustawisz określone właściwości zaawansowanych znaczników, możesz monitorować zdarzenia związane ze znacznikami, takie jak kliknięcia i gesty. Po kliknięciu znacznika wyświetlają się dodatkowe informacje, takie jak jego tytuł lub krótki opis. Można też przesuwać znaczniki za pomocą gestów przytrzymania.

Odpowiadanie na zdarzenia znacznika

Możesz reagować na zdarzenia markera, dodając protokół GMSMapViewDelegate do widoku i wdrażając odpowiednią funkcję zwracającą wartość z poziomu funkcji zwracającej wartość. W tym przykładzie titlesnippet są identyfikowane w przypadku 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 na podstawie poziomu powiększenia mapy

Aby kontrolować widoczność GMSMarker, zaimplementuj protokół GMSMapViewDelegate i dodaj warunek, aby ustawić 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, naciskając je długo. Aby umożliwić przeciąganie znacznika, ustaw właściwość GMSMarker.draggable na wartość „PRAWDA”.

Swift

marker.draggable = true

Objective-C

marker.draggable = YES;