Zdarzenia i gesty znacznika

Po ustawieniu określonych właściwości zaawansowanych znaczników możesz monitorować zdarzenia związane ze znacznikiem, takie jak kliknięcia i gesty. Po kliknięciu znacznika pojawią się dodatkowe informacje, np. jego tytuł lub fragment. Znaczniki, które można przeciągać, można też przesuwać, naciskając i przytrzymując znaczniki.

Odpowiadanie na zdarzenia związane ze znacznikiem

Aby odpowiedzieć na zdarzenia oznaczone jako znaczniki, dodaj do widoku protokół GMSMapViewDelegate i zaimplementuj odpowiednie wywołanie zwrotne. Ten przykład identyfikuje 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;
}

Kontrolowanie widoczności znaczników według poziomu powiększenia mapy

Aby kontrolować widoczność obszaru GMSMarker, wdróż protokół GMSMapViewDelegate i dodaj warunek ustawiający 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;
}

Dodawanie znacznika do przeciągania

Po włączeniu właściwości draggable użytkownicy mogą przeciągać znaczniki na mapie gestami opartymi na długim naciśnięciu. Aby umożliwić przeciąganie znacznika, ustaw we właściwości GMSMarker.draggable wartość true.

Swift

marker.draggable = true

Objective-C

marker.draggable = YES;