Eventos y gestos del marcador

Cuando se configuran propiedades de marcadores avanzados específicas, puedes supervisar los eventos de marcadores como toques y gestos. Si se presiona un marcador, se puede ver información adicional, como el título. o un fragmento. También es posible mover marcadores arrastrables con un gesto de mantener presionado.

Cómo responder a eventos de marcador

Para responder a los eventos de marcador, agrega el protocolo GMSMapViewDelegate a tu vista y implementa la devolución de llamada correspondiente. En este ejemplo, se identifican los objetos title 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 la 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. Para que un marcador sea arrastrable, establece la GMSMarker.draggable propiedad como true.

Swift

marker.draggable = true

Objective-C

marker.draggable = YES;