Zdarzenia i gesty znacznika

Po ustawieniu odpowiednich 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 fragment. Można też przenosić znaczniki za pomocą gestów długiego naciśnięcia.

Odpowiadanie na zdarzenia znacznika

Możesz reagować na zdarzenia markera, dodając protokół GMSMapViewDelegate do widoku i wdrażając odpowiednią funkcję zwracającą wywołanie zwrotne. W tym przykładzie identyfikuje się titlesnippet 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ść elementu GMSMarker, zaimplementuj protokół GMSMapViewDelegate i dodaj warunek, aby ustawić parametr 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 w stanie przeciągania

Gdy włączysz usługę draggable, użytkownicy będą mogli przeciągać znaczniki na mapie za pomocą długiego naciśnięcia. Aby umożliwić przeciąganie znacznika, ustaw właściwość GMSMarker.draggable na wartość Prawda.

Swift

marker.draggable = true

Objective-C

marker.draggable = YES;