Vous êtes prêt !

Pour passer à l'étape de développement, accédez à notre documentation pour les développeurs.

Activer Google Maps SDK for iOS

Pour commencer, nous allons vous guider à travers la console Google Developers et effectuer deux ou trois petites choses :

  1. Créer ou choisir un projet
  2. Activer Google Maps SDK for iOS
  3. Créer les clés appropriées
Continuer

Événements

Google Maps SDK for iOS vous permet d'écouter des événements qui se produisent sur la carte, comme des événements de modification de l'appareil photo ou des événements de pression sur un marqueur.

Introduction

Pour écouter ces événements, vous devez implémenter le protocole GMSMapViewDelegate. En règle générale, ce protocole est implémenté sur le contrôleur d'affichage qui affiche la carte. Voici ci-dessous un exemple de fichier d'en-tête :

Swift

import UIKit
import GoogleMaps

class DemoViewController: UIViewController, GMSMapViewDelegate {
}

Objective-C

@import UIKit;
@import GoogleMaps;

@interface DemoViewController : UIViewController<GMSMapViewDelegate>
@end

Lorsque GMSMapView est créé, vous pouvez paramétrer son délégué sur votre contrôleur d'affichage. GMSMapViewDelegate fournit uniquement des méthodes facultatives. Pour écouter un événement en particulier, vous devez implémenter la méthode pertinente.

Swift

override func loadView() {
  let camera = GMSCameraPosition.camera(withLatitude: 1.285,
                                        longitude: 103.848,
                                        zoom: 12)

  let mapView = GMSMapView.map(withFrame: .zero, camera: camera)
  mapView.delegate = self
  self.view = mapView
}

// MARK: GMSMapViewDelegate

func mapView(_ mapView: GMSMapView, didTapAt coordinate: CLLocationCoordinate2D) {
  print("You tapped at \(coordinate.latitude), \(coordinate.longitude)")
}

Objective-C

- (void)loadView {
  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:1.285
                                                          longitude:103.848
                                                               zoom:12];
  GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
  mapView.delegate = self;
  self.view = mapView;
}

#pragma mark - GMSMapViewDelegate

- (void)mapView:(GMSMapView *)mapView
    didTapAtCoordinate:(CLLocationCoordinate2D)coordinate {
  NSLog(@"You tapped at %f,%f", coordinate.latitude, coordinate.longitude);
}

Position de l'appareil photo

GMSMapViewDelegate vous permet d'écouter les changements de la position de l'appareil photo, laquelle est utilisée pour le rendu de la carte. Il existe trois événements différents.

  • mapView:willMove: indique que la position de l'appareil photo est sur le point de changer. Si l'argument gesture est défini sur YES, cela est dû à un utilisateur effectuant un geste naturel sur GMSMapView comme un panorama ou une inclinaison. Sinon, NO indique qu'il fait partie d'un changement programmé, en utilisant, par exemple, des méthodes telles que animateToCameraPosition: ou la mise à jour directe du calque de la carte. Cela peut également être NO si un utilisateur a touché le bouton Ma position ou celui de la boussole, ce qui entraîne des animations qui modifient l'appareil photo.

Cette méthode peut être appelée plusieurs fois avant d'appeler mapView:idleAtCameraPosition:, bien que cela ne se produise généralement que si des animations et des gestes se produisent en même temps. Un geste annule toute animation actuelle, par exemple, et appelle mapView:willMove: une deuxième fois.

  • mapView:didChangeCameraPosition: est appelé de façon répétée pendant un geste ou une animation, toujours après un appel de mapView:willMove:. La position intermédiaire de l'appareil photo est transmise.

  • Enfin, mapView:idleAtCameraPosition: est appelé une fois que la position de l'appareil photo sur GMSMapView devient inactive, et spécifie la position pertinente de l'appareil photo. À ce stade, toutes les animations et tous les gestes ont cessé.

Les applications peuvent utiliser cet événement pour déclencher une actualisation des marqueurs ou d'un autre contenu en cours d'affichage sur GMSMapView, plutôt que de recharger le contenu à chaque changement de l'appareil photo, par exemple.

Par exemple, une application peut effacer GMSMapView en mouvement, puis effectuer un géocodage inversé de la position où l'appareil photo s'arrête.

Swift

// Store GMSGeocoder as an instance variable.
let geocoder = GMSGeocoder()

...

func mapView(_ mapView: GMSMapView, willMove gesture: Bool) {
  mapView.clear()
}

func mapView(_ mapView: GMSMapView, idleAt cameraPosition: GMSCameraPosition) {
    geocoder.reverseGeocodeCoordinate(cameraPosition.target) { (response, error) in
      guard error == nil else {
        return
      }

      if let result = response?.firstResult() {
        let marker = GMSMarker()
        marker.position = cameraPosition.target
        marker.title = result.lines?[0]
        marker.snippet = result.lines?[1]
        marker.map = mapView
      }
    }
  }
}

Objective-C

// You must define a GMSGeocoder property in your .h file and initialize it
// in your initializer or viewDidLoad() method.

#pragma mark - GMSMapViewDelegate

- (void)mapView:(GMSMapView *)mapView willMove:(BOOL)gesture {
  [mapView clear];
}

- (void)mapView:(GMSMapView *)mapView
    idleAtCameraPosition:(GMSCameraPosition *)cameraPosition {
  id handler = ^(GMSReverseGeocodeResponse *response, NSError *error) {
    if (error == nil) {
      GMSReverseGeocodeResult *result = response.firstResult;
      GMSMarker *marker = [GMSMarker markerWithPosition:cameraPosition.target];
      marker.title = result.lines[0];
      marker.snippet = result.lines[1];
      marker.map = mapView;
    }
  };
  [self.geocoder reverseGeocodeCoordinate:cameraPosition.target completionHandler:handler];
}

Événements sur les établissements et autres points d'intérêt

Par défaut, les points d'intérêt (POI) sont affichés sur la carte de base avec les icônes qui leur correspond. Les POI comprennent d'une part les parcs, écoles, bâtiments administratifs, etc., et d'autre part les POI commerciaux (magasins, restaurants et hôtels, par exemple).

Vous pouvez répondre aux événements de clic sur un POI. Voir le guide dédié aux établissements et autres points d'intérêt.

Autres événements

Pour en savoir plus sur la liste complète des méthodes de GMSMapViewDelegate, voir le guide de référence.

Envoyer des commentaires concernant…

Google Maps SDK for iOS
Google Maps SDK for iOS
Besoin d'aide ? Consultez notre page d'assistance.