Zdarzenia i gesty znacznika

Gdy ustawisz określone zaawansowane właściwości markera, możesz monitorować zdarzenia markera, takie jak kliknięcia i gesty. Po kliknięciu znacznika można wyświetlić dodatkowe informacje, takie jak tytuł znacznika lub krótki opis. Przesuwane markery można też przesuwać za pomocą gestu długiego naciśnięcia.

Odpowiadanie na zdarzenia związane ze znacznikami

Możesz odpowiadać na zdarzenia znacznika, dodając do widoku protokół GMSMapViewDelegate i wdrażając odpowiednie wywołanie zwrotne. W tym przykładzie zidentyfikowano titlesnippet wybranego markera.

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 różnych poziomach 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;
}

Umożliwianie przeciągania markera

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 wartość true.

Swift

marker.draggable = true

Objective-C

marker.draggable = YES;