Configurer une carte

Sélectionnez une plate-forme:Android iOS

Cette présentation explique comment configurer une carte ajoutée à une application iOS à l'aide du SDK Maps pour iOS.

Présentation

Après avoir ajouté une carte à votre application, vous pouvez configurer ses options initiales et ses paramètres d'exécution. Pour savoir comment ajouter un conteneur de carte, consultez Ajouter une carte.

Les paramètres initiaux de la carte incluent les éléments suivants :

Lors de l'exécution, vous pouvez configurer ces paramètres et d'autres en mettant à jour l'objet GMSMapView.

Options de la carte

Lors de l'initialisation de votre vue plan, les options de configuration sont définies avec GMSMapViewOptions. Les propriétés de l'option incluent frame, camera, mapID, backgroundColor ou screen.

Options de carte
cadre
Valeur : CGRect
Le cadre de la carte. La valeur par défaut est CGRectZero.
appareil photo
Valeur : GMSCameraPosition
Position par défaut de la caméra de la carte.
mapID
Valeur : GMSMapID
ID de carte Google Paramètre facultatif.
backgroundColor
Valeur : UIColor
La valeur par défaut est UIColor.lightGray.
écran
Valeur : UIScreen
Requis pour CarPlay. Implique une valeur par défaut pour l'écran principal.

Configurer les options de la carte

Vous pouvez définir vos propres propriétés d'option ou transmettre un GMSMapViewOptions instancié avec des valeurs par défaut directement à GMSMapView.

Swift

let options = GMSMapViewOptions()
options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6)
let mapView = GMSMapView(options:options)

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                        longitude:151.2086
                                                             zoom:6];
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

Voici un exemple de transmission directe d'un objet GMSMapViewOptions avec des valeurs par défaut à GMSMapView.

Swift

let options = GMSMapViewOptions()
let mapView = GMSMapView(options:options) //initialized with default values

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; //initialized with default values

Configurer la couleur d'arrière-plan

Lorsque vous travaillez en mode sombre ou passez d'une vue à l'autre de la carte, il peut être utile de remplacer la couleur d'arrière-plan par défaut de la carte. Pour ce faire, définissez la propriété des options de carte backgroundColor.

Swift

let options = GMSMapViewOptions()
options.backgroundColor = UIColor.yellowColor
let mapView = GMSMapView(options:options)

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.backgroundColor = UIColor.yellowColor;
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

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 globale de cette carte. Par exemple, un atlas contient généralement des cartes politiques qui mettent l'accent sur les limites et des cartes routières qui montrent toutes les routes d'une ville ou d'une région. Le SDK Maps pour iOS propose les types de cartes suivants:

Type de carte
Normal
Valeur : kGMSTypeNormal
Feuille de route classique. Affiche les routes, certains caractéristiques construites par l'homme et les éléments naturels importants comme les rivières. Les libellés des routes et des éléments géographiques sont également visibles.
Hybride
Valeur : kGMSTypeHybrid
Données de photographies satellite avec l'ajout de cartes routières Les libellés des routes et des éléments géographiques sont également visibles.
Satellite
Valeur : kGMSTypeSatellite
Données de photographies satellite. Les libellés des routes et des éléments géographiques ne sont pas visibles.
Relief
Valeur : kGMSTypeTerrain
Données topographiques. La carte comprend des couleurs, des lignes de contour, des libellés et des ombres pour la perspective. Certaines routes et certains libellés sont également visibles.
Aucun
Valeur : kGMSTypeNone
Aucune tuile de carte Le rendu des tuiles de carte de base n'est pas effectué. Ce mode est utile conjointement avec les calques de tuiles. L'affichage des données de trafic est désactivé lorsque le type de carte est défini sur "aucun".

Modifier le 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 options = GMSMapViewOptions()
options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6)
let mapView = GMSMapView(options:options)
mapView.mapType = .satellite

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                  longitude:151.2086
                                                        zoom:6];
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
mapView.mapType = kGMSTypeSatellite;

Le sélecteur ci-dessous montre une comparaison de cartes de relief, de cartes normales et hybrides pour un même point géographique:

Plans d'intérieur

À des niveaux de zoom élevés, le SDK Maps pour iOS affiche des plans d'étage à l'intérieur des bâtiments tels que les aéroports, les centres commerciaux, les grands magasins et les stations de transports en commun. Les plans d'étage d'intérieur sont intégrés aux tuiles de carte par défaut pour le type de carte "normal" (kGMSTypeNormal). Ils sont automatiquement activés lorsque l'utilisateur fait un zoom avant et disparaît en fondu lorsque l'utilisateur fait un zoom arrière.

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

Swift

mapView.isIndoorEnabled = false
      

Objective-C

mapView.indoorEnabled = NO;
      

Vous pouvez également désactiver uniquement la commande du sélecteur d'étage.

Ajout de plans d'étage...

Les plans d'étage sont disponibles dans certains pays uniquement. Si les données de plan d'étage ne sont pas disponibles pour un bâtiment que vous souhaitez mettre en évidence dans votre application, vous pouvez:

  • Ajoutez des plans d'étage à Google Maps directement. Vos forfaits sont ainsi disponibles pour tous les utilisateurs de Google Maps.
  • Affichez un plan d'étage en tant que superposition au sol. Seuls les utilisateurs de votre application pourront afficher vos plans d'étage.

Le calque de trafic

Vous pouvez donner à vos utilisateurs la possibilité d'afficher la carte en y superposant des informations sur la densité du trafic. Cela leur permet d'obtenir un aperçu visuel des conditions de circulation locales. Vous pouvez activer et désactiver le calque de trafic en appelant la méthode trafficEnabled. L'exemple suivant montre comment le calque de trafic peut apparaître sur une carte.

Une carte Google montrant le calque
de trafic

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. Cela entraîne la génération d'éléments d'accessibilité pour les objets en superposition (tels que GMSMarker et les fenêtres d'informations, GMSPolyline, etc.).

Swift

mapView.accessibilityElementsHidden = false
      

Objective-C

mapView.accessibilityElementsHidden = NO;
      

Cette propriété est conforme au protocole informel UIAccessibility, si ce n'est que la valeur par défaut du SDK Maps pour iOS est YES.

Mon emplacement

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é indique la position actuelle de l'utilisateur via la propriété myLocation. Il est possible que cette propriété ne soit pas disponible immédiatement, par exemple si l'utilisateur est invité par iOS à autoriser l'accès à ces données. Dans ce cas, il s'agit de nil.

Swift

print("User's location: \(String(describing: mapView.myLocation))")
      

Objective-C

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

Bâtiments 3D

En vue très rapprochée, il est possible d'afficher les bâtiments en 3D pour de nombreuses villes, comme illustré sur l'image de Seattle, dans l'État de Washington, ci-dessous.

Une carte en 3D de bâtiments à Seattle, dans l'État de Washington.

Vous pouvez désactiver les bâtiments 3D en définissant la propriété GMSMapView correspondante dans Swift ou Objectif-C, comme indiqué ci-dessous:

Swift

mapView.isBuildingsEnabled = false
      

Objective-C

[mapView setBuildingsEnabled:NO];
      

Marge extérieure de la carte

Une carte Google Maps est conçue pour remplir toute la région définie par le 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 la caméra 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 méthode GMSMapViewpadding. La carte continue de remplir l'intégralité du conteneur, mais le positionnement du texte et des commandes, les gestes sur la carte et les mouvements de caméra se comportent comme s'il avait été placé dans un espace plus petit. Cela entraîne les modifications suivantes:

  • Les mouvements de caméra lors d'appels d'API ou d'appuis sur les boutons (boussole, position, par exemple) sont effectués par rapport à la zone délimitée.
  • GMSMapView.projection renvoie une projection qui n'inclut que la région délimitée.
  • Les commandes de l'interface utilisateur sont décalées du nombre de points spécifié à partir du bord du conteneur.

L'ajout d'une marge extérieure peut être utile lorsque vous concevez des interfaces utilisateur qui chevauchent une partie de la carte. Par exemple, dans l'image, la carte comporte une marge extérieure en haut et à droite. Les commandes et le texte légal visibles de la carte s'affichent le long des bords de la zone délimitée (en vert), tandis que la carte continue de remplir l'intégralité du conteneur (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 transmettez-le à GMSMapView.padding.

Swift

// Insets are specified in this order: top, left, bottom, right
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;