Zdarzenia i gesty znacznika

Po ustawieniu określonych właściwości znacznika zaawansowanego możesz monitorować zdarzenia znacznika, takie jak kliknięcia i gesty. Po kliknięciu znacznika można zobaczyć dodatkowe informacje, takie jak tytuł znacznika lub fragment kodu. Można też przesuwać znaczniki, które można przeciągać, przytrzymując je.

Reagowanie na zdarzenia związane ze znacznikami

Możesz reagować na zdarzenia znacznika, dodając do widoku protokół GMSMapViewDelegate i implementując odpowiednie wywołanie zwrotne. W tym przykładzie określono title i snippet dla 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ą znaczników według poziomu powiększenia mapy

Aby kontrolować widoczność elementu 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 znacznika

Gdy włączysz właściwość draggable, użytkownicy będą mogli przeciągać znaczniki na mapie za pomocą gestu przytrzymania. Aby umożliwić przeciąganie znacznika, ustaw właściwość GMSMarker.draggable na wartość true.

Swift

marker.draggable = true

Objective-C

marker.draggable = YES;