Zdarzenia i gesty znacznika

Po ustawieniu określonych zaawansowanych właściwości znaczników możesz monitorować zdarzenia związane ze znacznikiem, takie jak kliknięcia i gesty. Po dotknięciu znacznika można wyświetlić dodatkowe informacje, takie jak jego tytuł lub fragment kodu. Możesz też przesunąć znaczniki, które można przeciągnąć, przytrzymując gest.

Odpowiadanie na zdarzenia związane ze znacznikami

Aby odpowiadać na zdarzenia znacznika, dodaj do widoku protokół GMSMapViewDelegate i zaimplementuj odpowiednie wywołanie zwrotne. Ten przykład wskazuje title i snippet 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 z możliwością przeciągania

Gdy włączysz właściwość draggable, użytkownicy będą mogli przeciągać znaczniki na mapie przy użyciu gestu przytrzymania. Aby znacznik był możliwy do przeciągania, ustaw właściwość GMSMarker.draggable na wartość true.

Swift

marker.draggable = true

Objective-C

marker.draggable = YES;