Zdarzenia i gesty znacznika

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

Odpowiadanie na zdarzenia związane ze znacznikami

Możesz odpowiadać na zdarzenia znacznika, dodając protokół GMSMapViewDelegate. zaimplementowanie odpowiedniego wywołania zwrotnego. W tym przykładzie pokazano title oraz 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ą znacznika na podstawie poziomu powiększenia mapy

Aby kontrolować widoczność GMSMarker, zaimplementuj funkcję Protokół GMSMapViewDelegate i dodaj warunek do ustawienia 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

Po włączeniu właściwości draggable użytkownicy mogą przeciągać znaczniki na mapie za pomocą gestu przytrzymania. Aby znacznik można było przeciągać, ustaw GMSMarker.draggable na wartość true (prawda).

Swift

marker.draggable = true

Objective-C

marker.draggable = YES;