Cette présentation explique comment configurer une carte que vous avez ajoutée à une application iOS à l'aide du SDK Maps pour iOS.
Présentation
Une fois que vous avez ajouté une carte à votre application, vous pouvez configurer les options initiales et les paramètres d'exécution de la carte. Pour en savoir plus sur l'ajout d'un conteneur de carte, consultez la section Ajouter une carte.
Les paramètres initiaux de la carte incluent les éléments suivants :
- La position de la caméra, y compris l'emplacement, le niveau de zoom, la direction et l'inclinaison Pour en savoir plus sur le positionnement de la caméra, consultez la section Caméra et vue.
- La couleur d'arrière-plan de la carte
- 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 d'autres en mettant à jour l'objet GMSMapView
.
Options de carte
Lors de l'initialisation de la vue de la carte, les options de configuration sont définies avec GMSMapViewOptions
.
Les propriétés d'option incluent frame
, camera
, mapID
ou backgroundColor
.
Options de carte | |
---|---|
cadre | Valeur :
CGRect Cadre de la carte. Valeur par défaut : CGRectZero.
|
appareil photo | Valeur :
GMSCameraPosition Position de la caméra de la carte par défaut.
|
mapID | Valeur :
GMSMapID ID de carte Google. Paramètre facultatif.
|
backgroundColor | Valeur :
UIColor Valeur par défaut : UIColor.lightGray
|
Configurer les options de la carte
Vous pouvez définir vos propres propriétés d'option ou transmettre directement un GMSMapViewOptions
instancié avec des valeurs par défaut à 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 d'un objet GMSMapViewOptions
avec des valeurs par défaut directement à 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 que vous passez d'une vue de carte à une autre, 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é backgroundColor
des options de la carte.
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 de carte détermine la représentation globale de la carte. Par exemple, un atlas contient généralement des cartes politiques qui se concentrent 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 | |
---|---|
Normale | Valeur :
kGMSTypeNormal Carte routière type. 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 éléments géographiques sont également visibles. Permet de définir le jeu de couleurs de la carte sur "Sombre", "Clair" ou "Suivre les paramètres système".
|
Hybride | Valeur :
kGMSTypeHybrid Données de photographies satellite avec des cartes routières ajoutées. Les libellés de route et d'éléments sont également visibles. |
Satellite | Valeur :
kGMSTypeSatellite Données de photographies satellites. Les libellés de route et d'é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 qu'un ombrage en perspective. Certaines routes et certains libellés sont également visibles. Permet de définir le jeu de couleurs de la carte sur "Sombre", "Clair" ou "Suivre les paramètres système".
|
Aucun | Valeur :
kGMSTypeNone Aucune carte en mosaïque. Le rendu des tuiles de carte de base n'est pas effectué. Ce mode est utile avec les couches de tuiles. L'affichage des données sur le 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 compare les cartes de relief, normales et hybrides pour le même emplacement:
Plans d'intérieur
À un niveau de zoom élevé, le SDK Maps pour iOS affiche les plans d'étage à l'intérieur des bâtiments comme les aéroports, les centres commerciaux, les grands magasins et les stations 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 lorsque l'utilisateur fait un zoom avant et disparaissent lorsque la carte est 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 également désactiver uniquement le sélecteur de niveau.
Ajouter des plans d'étage
Les plans d'étage sont disponibles dans certains lieux. Si les données de plan d'étage ne sont pas disponibles pour un bâtiment que vous souhaitez mettre en avant dans votre demande, vous pouvez:
- Ajouter des plans d'étage directement à Google Maps Vos plans seront alors accessibles à tous les utilisateurs de Google Maps.
- Afficher un plan d'étage en tant que superposition au sol. Seuls les utilisateurs de votre application pourront ainsi consulter 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 la couche de trafic en appelant la méthode trafficEnabled
. L'exemple suivant montre comment le calque de trafic peut apparaître sur une carte.
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é sont ainsi générés pour les objets en superposition (comme les 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, à l'exception de la valeur par défaut du SDK Maps pour iOS, qui 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é fournit 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 iOS invite l'utilisateur à autoriser l'accès à ces données. Il s'agit de nil
dans ce cas.
Swift
print("User's location: \(String(describing: mapView.myLocation))")
Objective-C
NSLog(@"User's location: %@", mapView.myLocation);
Bâtiments 3D
Dans de nombreuses villes, les bâtiments en 3D sont visibles en gros plan, comme dans l'image de Seattle, dans l'État de Washington, ci-dessous.
![Carte 3D des bâtiments de Seattle (Washington, États-Unis).](https://developers.google.cn/static/maps/documentation/ios-sdk/images/ios-3d-buildings.png?authuser=0&hl=fr)
Vous pouvez désactiver les bâtiments 3D en définissant la propriété GMSMapView
correspondante en Swift ou en Objective-C, comme indiqué ci-dessous:
Swift
mapView.isBuildingsEnabled = false
Objective-C
[mapView setBuildingsEnabled:NO];
Marge extérieure de la carte
Une carte Google est conçue pour remplir toute la région définie par la GMSMapView
.
Plusieurs aspects de l'affichage et du 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 GMSMapView
Propriété padding
. La carte continue de remplir l'intégralité du conteneur, mais le positionnement du texte et des commandes, les gestes de la carte et les mouvements de la caméra se comportent comme s'ils avaient été placés dans un espace plus petit. Cela entraîne les modifications suivantes:
- Les mouvements de l'appareil photo à l'aide d'appels d'API ou d'appuis sur des boutons (par exemple, boussole, ma position) sont relatifs à la zone rembourrée.
GMSMapView
.projection
renvoie une projection qui n'inclut que la zone rembourrée.- Les commandes de l'UI sont décalées par rapport au bord du conteneur du nombre de points spécifié.
Le rembourrage peut être utile lorsque vous concevez des UI qui chevauchent une partie de la carte. Par exemple, dans l'image, la carte est mise en retrait sur les bords supérieur et droit. Les commandes de la carte visibles et le texte juridique s'affichent le long des bords de la zone rembourrée, en vert, tandis que la carte continue de remplir l'intégralité du conteneur, en bleu. Dans cet exemple, vous pouvez faire flotter un menu sur le côté droit de la carte sans masquer les commandes de la carte.
Pour ajouter une marge à votre carte, créez un objet UIEdgeInsets
et transmettez-le à GMSMapView
.Propriété 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;
Jeu de couleurs de la carte
Pour les cartes de type "normal" et "terrain", vous pouvez définir le jeu de couleurs de la carte sur "sombre", "clair" ou utiliser les paramètres système actuels. Par exemple, vous pouvez assombrir ou éclaircir le jeu de couleurs de la carte en fonction de l'heure de la journée ou de l'utilisation de l'appareil en intérieur ou en extérieur.
Utilisez GMSMapView
overrideUserInterfaceStyle:
pour définir et mettre à jour le jeu de couleurs de la carte.
Swift
let options = GMSMapViewOptions() // Map is init to use light mode by default. let mapView = GMSMapView(options: options) // Set map to use dark mode. mapView.overrideUserInterfaceStyle = .dark // Set map to use light mode. mapView.overrideUserInterfaceStyle = .light // Set map to use dark/light mode based on the value of traitCollection.userInterfaceStyle mapView.overrideUserInterfaceStyle = .unspecified
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; // Map is init to always use light mode. GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; // Set map to use dark mode. mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleDark; // Set map to use light mode. mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleLight; // Set map to use dark/light mode based on the value of traitCollection.userInterfaceStyle mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleUnspecified;