Zdarzenia i gesty znacznika

Po ustawieniu odpowiednich właściwości markera zaawansowanego możesz monitorować zdarzenia związane z markerem, np. 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ą 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ą wartość z poziomu funkcji zwracającej wartość. 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;