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

Objets de carte

Remarque : Ce document explique comment ajouter une carte Google Map dans une application iOS. Si vous souhaitez savoir comment lancer l'application autonome Google Maps, reportez-vous à la documentation sur le Modèle d'URL .

Dans l'API, les cartes sont représentées par la classe GMSMapView, une sous-classe de UIView. La carte est l'objet le plus important dans Google Maps SDK for iOS, et fournit les méthodes nécessaires pour ajouter, supprimer et gérer d'autres objets comme des marqueurs et des polylignes.

Introduction

Google Maps SDK for iOS Vous permet d'afficher une carte Google dans votre application iOS. Ces cartes ont la même apparence que celles qui apparaissent dans l'application iOS Google Maps, et le SDK présente de nombreuses fonctionnalités identiques.

Outre la fonctionnalité de cartographie, l'API prend aussi en charge une gamme d'interactions conformes au modèle de l'interface utilisateur iOS. Vous pouvez, par exemple, paramétrer des interactions sur une carte en définissant des répondeurs qui réagissent aux gestes de l'utilisateur, comme le fait de toucher ou de toucher deux fois.

La classe principale lors de l'utilisation d'un objet de carte est la classe GMSMapView. GMSMapView gère automatiquement les opérations suivantes :

  • Connexion au service Google Maps.
  • Téléchargement des tuiles de carte.
  • Affichage des tuiles sur l'écran de l'appareil.
  • Affichage de diverses commandes comme le panorama et le zoom.
  • Réponse aux gestes de panoramique et de zoom en déplaçant la carte et en effectuant un zoom avant ou arrière.
  • Réponse aux gestes à deux doigts en inclinant l'angle de vue de la carte.

En plus de ces opérations automatiques, vous pouvez contrôler le comportement et l'apparence des cartes à l'aide des propriétés et des méthodes présentées par la classe GMSMapView. GMSMapView vous permet d'ajouter et de supprimer des marqueurs, des superpositions au sol et des polylignes, de modifier le type de carte affiché et de contrôler ce qui apparaît sur la carte via la classe GMSCameraPosition.

Ajouter une carte

Les principales étapes pour ajouter une carte sont :

  1. (une seule fois) Suivez les étapes décrites dans Premiers pas pour télécharger le SDK, obtenir une clé et ajouter les frameworks obligatoires.
  2. Dans votre AppDelegate, fournissez votre clé d'API à la méthode de la classe provideAPIKey: sur GMSServices.
  3. Créez ou mettez à jour un ViewController. Si la carte est affichée lorsque ce contrôleur d'affichage devient visible, assurez-vous de le créer dans la méthode loadView.
    1. Créez un objet GMSCameraPosition qui spécifie le centre et le niveau de zoom de la carte. Lorsque vous instanciez l'objet GMSMapView, vous devez spécifier l'objet GMSCameraPosition en tant que paramètre obligatoire.
    2. Créez et instanciez une classe GMSMapView en utilisant laGMSMapView méthode mapWithFrame:. Si la carte est destinée à être utilisée comme vue unique du contrôleur d'affichage, alors CGRectZero peut être utilisé comme cadre de la carte — la carte est redimensionnée automatiquement.
    3. Définissez l'objet GMSMapView comme vue du contrôleur d'affichage. Par exemple, self.view = mapView;.

Dans l'exemple ci-dessous, une carte, centrée sur le centre-ville de Singapour, est ajoutée à une application.

Swift

import UIKit
import GoogleMaps

class DemoViewController: UIViewController {
  override func loadView() {
    let camera = GMSCameraPosition.camera(withLatitude: 1.285, longitude: 103.848, zoom: 12)
    let mapView = GMSMapView.map(withFrame: .zero, camera: camera)
    self.view = mapView
  }
}

Objective-C

#import "DemoViewController.h"
@import GoogleMaps;

@implementation DemoViewController

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

@end

Une fois que vous avez suivi ces étapes, vous pouvez configurer l'objet GMSMapView .

Types de carte

Vous pouvez personnaliser votre carte grâce à l'un des nombreux types de carte. Le type d'une carte régit la représentation générale de cette carte. Par exemple, un atlas contient généralement des cartes politiques qui mettent l'accent sur les frontières et des cartes routières qui montrent toutes les routes d'une ville ou d'une région. Google Maps SDK for iOS propose les types de carte suivants :

Type de carte
Normal
Value: kGMSTypeNormal
Carte routière classique. Affiche les routes, certains ouvrages construits par l'homme et les éléments naturels importants comme les rivières. Les libellés des routes et des caractéristiques sont également visibles. Il s'agit du mode de carte par défaut dans Google Maps for iOS.
Hybrid
Value: kGMSTypeHybrid
Données de photographies satellite avec l'ajout de cartes routières. Les libellés des routes et des caractéristiques sont également visibles. Il est possible d'afficher ce type de carte sur l'application Google Maps for iOS en activant la vue Satellite.
Satellite
Value: kGMSTypeSatellite
Données de photographies satellite. Les libellés des cartes et des caractéristiques ne sont pas visibles. Ce mode n'est pas disponible dans Google Maps for iOS.
Terrain
Value: kGMSTypeTerrain
Données topographiques. La carte inclut des couleurs, des lignes de contour, des libellés et des ombres pour la perspective. Certaines routes et certains libellés sont également visibles.
None
Value: kGMSTypeNone
Aucune tuile de carte. Le rendu des tuiles de carte de base n'est pas effectué. Ce mode s'avère utile lorsqu'il est combiné avec des calques de tuiles . L'affichage des données de trafic est désactivé lorsque le type de carte est défini sur « None ».

Changer de type de carte

Pour définir le type d'une carte, attribuez une nouvelle valeur à la propriété GMSMapView.mapType . Par exemple, pour afficher une carte de type Satellite :

Swift

let camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6)
let mapView = GMSMapView.map(withFrame: .zero, camera: camera)
mapView.mapType = kGMSTypeSatellite

Objective-C

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                        longitude:151.2086
                                                             zoom:6];
GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
mapView.mapType = kGMSTypeSatellite;

Le sélecteur ci-dessous montre une comparaison de cartes de type « Terrain », « Normal » et « Hybrid » pour un même point géographique :

Cartes d'intérieur

À un niveau de zoom élevé, Google Maps SDK for iOS affiche les plans d'étage à l'intérieur des bâtiments comme les aéroports, les centres commerciaux, les grands magasins et les arrêts de transports en commun. Les plans d'étage intérieurs sont intégrés aux tuiles de carte par défaut pour le type de carte « Normal » (kGMSTypeNormal). Ils sont automatiquement activés dès que l'utilisateur effectue un zoom avant et disparaissent lorsqu'il effectue un zoom arrière sur la carte.

Vous pouvez désactiver les cartes d'intérieur en définissant la propriété indoorEnabled de GMSMapView sur NO.

Swift

var mapView = GMSMapView.map(withFrame: .zero, camera:camera)
mapView.isIndoorEnabled = false

Objective-C

GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
mapView.indoorEnabled = NO;

Vous pouvez également simplement désactiver la commande de sélecteur d'étage.

Ajouter des plans d'intérieur

Les plans d'intérieur sont disponibles dans certains lieux seulement. Si les données de plan d'intérieur ne sont pas disponibles pour un bâtiment que vous souhaiteriez faire figurer dans votre application, vous pouvez :

  • Ajouter des plans d'intérieur directement à Google Maps. Vos plans d'intérieur seront ainsi mis à la disposition de tous les utilisateurs de Google Maps.
  • Afficher un plan d'intérieur en tant que superposition au sol. Dans ce cas, seuls les utilisateurs de votre application pourront afficher vos plans d'intérieur.

Accessibilité

Par défaut, les éléments d'accessibilité de la carte sont masqués. Vous pouvez activer l'accessibilité en définissant la propriété accessibilityElementsHidden de GMSMapView sur NO. Ainsi, des éléments d'accessibilité sont générés pour les objets de superposition (comme GMSMarker et les fenêtres d'info, GMSPolyline etc.).

Swift

mapView.accessibilityElementsHidden = false

Objective-C

mapView.accessibilityElementsHidden = NO;

Cette propriété respecte le protocole UIAccessibility informel, à la différence que la valeur par défaut dans Google Maps SDK for iOS est YES.

Ma position

Par défaut, aucune donnée de localisation n'est affichée sur la carte. Vous pouvez activer le point bleu « Ma position » et la direction de la boussole en définissant myLocationEnabled sur GMSMapView.

Swift

mapView.isMyLocationEnabled = true

Objective-C

mapView.myLocationEnabled = YES;

L'activation de cette fonctionnalité permet également à l'utilisateur de connaître sa position actuelle grâce à la propriété myLocation. Il est possible que la propriété ne soit pas immédiatement disponible, par exemple, si l'utilisateur est invité par iOS à autoriser l'accès à ces données. Dans ce cas, celle-ci est nulle.

Swift

// The myLocation attribute of the mapView may be null
if let mylocation = mapView.myLocation {
  print("User's location: \(mylocation)")
} else {
  print("User's location is unknown")
}

Objective-C

NSLog(@"User's location: %@", mapView.myLocation);

Ajout d'une marge extérieure à la carte

Une carte Google est conçue pour remplir toute la zone définie par GMSMapView. Plusieurs aspects liés à l'apparence et au comportement de la carte sont définis par les dimensions de la vue :

  • La cible de l'appareil photo reflète le centre de la zone remplie.
  • Les commandes de la carte sont positionnées par rapport aux bords de la carte.
  • Les informations légales, comme les déclarations de droits d'auteur ou le logo Google apparaissent sur le bord inférieur de la carte.

Vous pouvez ajouter une marge extérieure le long des bords de la carte en utilisant la propriété GMSMapView.padding. La carte continue de remplir la totalité du conteneur, mais le placement du texte et des commandes, les gestes sur la carte et les mouvements de l'appareil photo se comportent comme s'ils avaient été placés dans un espace plus restreint. Cela entraîne les changements suivants :

  • Les mouvements de l'appareil photo via les appels d'API ou les pressions sur les boutons (boussole, Ma position, par exemple) sont effectués par rapport à la zone remplie.
  • GMSMapView.projection renvoie une projection qui inclut uniquement la zone remplie.
  • Les commandes de l'interface utilisateur sont décalées du nombre de points indiqué par rapport au bord du conteneur.

L'ajout d'une marge extérieure peut être utile lors de la conception d'interfaces utilisateur qui chevauchent une partie de la carte. Par exemple, dans l'image ci-dessous, la carte présente une marge extérieure sur les bords supérieur et droit. Les commandes et le texte légal visibles de la carte s'affichent alors le long des bords de la zone remplie, affichée en vert, tandis que la carte continue de remplir l'intégralité du conteneur, affiché en bleu. Dans cet exemple, vous pourriez ajouter un menu sur la partie droite de la carte sans en masquer les commandes.

Marge extérieure de carte

Pour ajouter une marge extérieure à votre carte, créez un objet UIEdgeInsets et spécifiez-le dans la propriété GMSMapView.padding.

Swift

let mapInsets = UIEdgeInsets(top: 100.0, left: 0.0, bottom: 0.0, right: 300.0)
mapView.padding = mapInsets

Objective-C

// Insets are specified in this order: top, left, bottom, right
UIEdgeInsets mapInsets = UIEdgeInsetsMake(100.0, 0.0, 0.0, 300.0);
mapView.padding = mapInsets;

Remarque : Conformément aux Conditions de service de Google Maps API, votre application ne doit pas retirer ou masquer le logo Google ou les mentions de droits d'auteur. L'ajout d'une marge extérieure à la carte vous permet néanmoins de repositionner ces éléments si nécessaire. Si vous affichez des éléments d'interface utilisateur personnalisés au bas de la carte, ajoutez une marge extérieure au bas de la carte afin que le logo et les mentions légales restent toujours visibles.

Envoyer des commentaires concernant…

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