Configurer une carte

Sélectionnez une plate-forme:Android iOS

Cet article explique comment configurer une carte que vous avez 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 paramètres initiaux et d'exécution. Pour savoir comment ajouter un conteneur de carte, consultez Ajouter une carte.

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

  • La position de la caméra, y compris l'emplacement, le niveau de zoom, la direction et l'inclinaison (consultez Caméra et vue pour plus de détails sur la position de la caméra)
  • Le type de carte
  • Les composants d'UI à afficher tels que les boutons de zoom et la boussole
  • Les gestes à activer

Au moment de l'exécution, vous pouvez configurer ces paramètres et certains paramètres d'ajout en mettant à jour 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 sa représentation globale. Par exemple, un atlas contient généralement des cartes politiques qui mettent l'accent sur les limites, et des cartes route qui montrent toutes les routes d'une ville ou d'une région. Le SDK Maps pour iOS propose les types de carte suivants:

Type de carte
Normal
Valeur : kGMSTypeNormal
Carte de routes typique. Affiche les routes, certains éléments construits 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 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 photographie 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 et des libellés, ainsi que des ombres pour la perspective. Certaines routes et certains libellés sont également visibles.
Aucune
Valeur : kGMSTypeNone
Aucune tuile de carte. Le rendu des tuiles de carte de base n'est pas effectué. Ce mode est utile avec les couches de tuile. 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'un mappage, 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 = .satellite
      

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 compare une carte de relief, de cartes de normales et de cartes hybrides pour le même lieu:

Plans d'intérieur

À des niveaux de zoom élevés, le SDK Maps pour iOS affiche les plans d'étage à l'intérieur des espaces comme les aéroports, les centres commerciaux, les grands magasins et les stations de transports en commun. Les plans d'étage 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 s'effacent en 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 aussi désactiver uniquement la commande du sélecteur d'étage.

Ajouter des plans d'étage

Les plans d'étage sont disponibles dans certains lieux. Si les données du 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'étages à Google Maps directement. Vos forfaits seront alors disponibles pour tous les utilisateurs de Google Maps.
  • Affichez un plan d'étage en tant que superposition au sol. Cela permettra uniquement aux utilisateurs de votre application d'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.

Carte Google affichant 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. Des éléments d'accessibilité seront alors générés pour les objets de 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 UIAccessibility informel, mais la valeur par défaut dans le 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 également la position actuelle de l'utilisateur via la propriété myLocation. Cette propriété peut ne pas être immédiatement disponible, par exemple si l'utilisateur est invité par iOS à autoriser l'accès à ces données. Dans ce cas, il est nul.

Swift

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

Objective-C

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

Des bâtiments 3D

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

Une carte 3D des bâtiments de Seattle, Washington.

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

Swift

mapView.isBuildingsEnabled = false
      

Objective-C

[mapView setBuildingsEnabled:NO];
      

Marge intérieure de carte

Une carte Google est conçue pour remplir toute la région 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 la caméra reflète le centre de la zone remplie.
  • Les commandes de 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 la totalité du conteneur, mais le positionnement du texte et des commandes, les gestes sur la carte et les mouvements de caméra s'effectuent comme si l'espace était plus restreint. Cela entraîne les changements suivants :

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

Ajouter 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 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 délimitée, 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 inté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;