Eventos y gestos del marcador

Cuando se establecen propiedades avanzadas específicas de los marcadores, puedes supervisar eventos de marcadores, como toques y gestos. Si se presiona un marcador, se puede ver información adicional, como un título o un fragmento. También se pueden mover los marcadores que se pueden arrastrar con un gesto de mantener presionado.

  • Para hacer un seguimiento de los eventos de marcadores, agrega GMSMapViewDelegate a tu view.
  • Para configurar un marcador para que sea arrastrable, establece la propiedad GMSMarker.draggable.
  • Si deseas establecer texto descriptivo para un marcador, usa la propiedad GMSMarker.title.

Cómo responder a eventos de marcadores

Para responder a los eventos de marcadores, agrega el protocolo GMSMapViewDelegate a tu vista y, luego, implementa la devolución de llamada correspondiente. En este ejemplo, se identifican title y snippet para un marcador seleccionado.

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;
}

Cómo controlar la visibilidad de un marcador según el nivel de zoom del mapa

Para controlar la visibilidad de GMSMarker, implementa el protocolo GMSMapViewDelegate y agrega una condición para establecer 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;
}

Configura un marcador para que sea arrastrable

Cuando habilitas la propiedad draggable, los usuarios pueden arrastrar marcadores en el mapa con un gesto de mantener presionado. Si deseas configurar un marcador para que sea arrastrable, establece la propiedad GMSMarker.draggable en verdadero.

Swift

marker.draggable = true

Objective-C

marker.draggable = YES;