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 do widoku protokół GMSMapViewDelegate i wdrażając odpowiednią funkcję zwracającą wywołanie zwrotne. W tym przykładzie identyfikuje 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ść 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 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;