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

É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 leurs icônes correspondantes. Les POI incluent les parcs, les écoles, les bâtiments administratifs, etc. Par ailleurs, les POI de type établissement sont affichés par défaut sur la carte lorsque le type de la carte est défini sur kGMSTypeNormal. Ces POI représentent des établissements tels que des magasins, des restaurants, des hôtels, etc.

Un POI correspond à un lieu, tel que défini dans Google Places API. Par exemple, les parcs de loisirs sont des POI, mais les monuments comme les fontaines ne sont en général pas considérés comme des POI (à moins qu'ils ne revêtent une importance historique ou nationale).

Écouter des événements de clic sur des POI

Si vous souhaitez répondre à un utilisateur qui appui sur un POI, implémentez GMSMapViewDelegate, puis implémentez la méthode mapView(_:didTapPOIWithPlaceID:name:location:), tel qu'illustré dans l'exemple suivant :

Swift

import UIKit
import GoogleMaps

class ViewController: UIViewController, GMSMapViewDelegate {

...

  override func loadView() {
    let camera = GMSCameraPosition.camera(withLatitude: 47.603,
                                          longitude:-122.331,
                                          zoom:14)
    let mapView = GMSMapView.map(withFrame: .zero, camera: camera)
    mapView.delegate = self
    self.view = mapView
  }

  func mapView(_ mapView: GMSMapView, didTapPOIWithPlaceID placeID: String,
               name: String, location: CLLocationCoordinate2D) {
    print("You tapped \(name): \(placeID), \(location.latitude)/\(location.longitude)")
  }

}

Objective-C

#import "ViewController.h"
# import <GoogleMaps/GoogleMaps.h>

@interface ViewController ()

@end

@implementation ViewController

...

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

#pragma mark - GMSMapViewDelegate

- (void)mapView:(GMSMapView *)mapView
    didTapPOIWithPlaceID:(NSString *)placeID
                    name:(NSString *)name
                location:(CLLocationCoordinate2D)location {
  NSLog(@"You tapped %@: %@, %f/%f", name, placeID, location.latitude, location.longitude);
}

@end

L'exemple précédent part du principe que vous avez implémenté le protocole GMSMapViewDelegate dans l'en-tête de votre contrôleur d'affichage. Pour plus d'informations, voir Événements.

Afficher les détails dans une fenêtre d'info

Les POI sont affichés sur la carte par défaut, mais il n'y a pas d'interface utilisateur de clic par défaut (l'API n'affiche pas automatiquement une fenêtre d'info ou toute autre interface utilisateur lorsque l'utilisateur appuie sur un POI). L'exemple suivant montre comment utiliser un marqueur afin d'afficher une fenêtre d'info pour un POI :

Swift

// Declare GMSMarker instance at the class level.
let infoMarker = GMSMarker()

// Attach an info window to the POI using the GMSMarker.
func mapView(_ mapView: GMSMapView, didTapPOIWithPlaceID placeID: String,
             name: String, location: CLLocationCoordinate2D) {
  infoMarker.snippet = placeID
  infoMarker.position = location
  infoMarker.title = name
  infoMarker.opacity = 0;
  infoMarker.infoWindowAnchor.y = 1
  infoMarker.map = mapView
  mapView.selectedMarker = infoMarker
}

Objective-C

// Declare a GMSMarker instance at the class level.
GMSMarker *infoMarker;

// Attach an info window to the POI using the GMSMarker.
- (void)mapView:(GMSMapView *)mapView
    didTapPOIWithPlaceID:(NSString *)placeID
                    name:(NSString *)name
                location:(CLLocationCoordinate2D)location {
  infoMarker = [GMSMarker markerWithPosition:location];
  infoMarker.snippet = placeID;
  infoMarker.title = name;
  infoMarker.opacity = 0;
  CGPoint pos = infoMarker.infoWindowAnchor;
  pos.y = 1;
  infoMarker.infoWindowAnchor = pos;
  infoMarker.map = mapView;
  mapView.selectedMarker = infoMarker;
}

Masquer des POI sur la carte

Vous pouvez masquer des points d'intérêt (POI) sur la carte en appliquant des styles personnalisés à tous les POI ou à certaines catégories de POI seulement.

La déclaration de style JSON suivante masque tous les POI de type « établissement » sur la carte :

[
  {
    "featureType": "poi.business",
    "stylers": [
      { "visibility": "off" }
    ]
  }
]

Dans cet autre exemple, la déclaration JSON simplifie l'affichage de toutes les catégories de POI :

[
  {
    "featureType": "poi",
    "stylers": [
      { "visibility": "simplified" }
    ]
  }
]

Pour plus de détails, voir le guide qui explique comment masquer des fonctionnalités de la carte avec des styles.

Envoyer des commentaires concernant…

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