Événements et gestes de repère

Lorsque des propriétés de repère avancées spécifiques sont définies, vous pouvez surveiller les événements de repère tels que les appuis et les gestes. Si l'utilisateur appuie sur un repère, des informations supplémentaires, telles que le titre ou l'extrait du repère, peuvent s'afficher. Vous pouvez également déplacer des repères déplaçables en appuyant de manière prolongée.

Répondre aux événements de repère

Vous pouvez répondre aux événements de repère en ajoutant le protocole GMSMapViewDelegate à votre vue et en implémentant le rappel correspondant. Cet exemple identifie les valeurs title et snippet pour un repère sélectionné.

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

Contrôler la visibilité du repère par niveau de zoom sur la carte

Pour contrôler la visibilité de GMSMarker, implémentez le protocole GMSMapViewDelegate et ajoutez une condition pour définir 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;
}

Rendre un repère déplaçable

Lorsque vous activez la propriété draggable, les utilisateurs peuvent faire glisser des repères sur la carte en appuyant de manière prolongée. Pour rendre un repère déplaçable, définissez la propriété GMSMarker.draggable sur "true".

Swift

marker.draggable = true

Objective-C

marker.draggable = YES;