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 les options initiales et l'environnement d'exécution de la carte. Pour savoir comment ajouter un conteneur de carte, consultez la section Ajouter 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 Voir Caméra et vue pour en savoir plus sur la position de la caméra
- Couleur d'arrière-plan de la carte
- Le type de carte
- Les composants d'interface utilisateur à afficher, tels que les boutons de zoom et boussole.
- Les gestes à activer
Lors de l'exécution, vous pouvez configurer ces paramètres, ainsi que d'autres paramètres supplémentaires, en procédant comme suit :
en mettant à jour
GMSMapView
.
Options de la carte
Lors de l'initialisation de la vue plan, les options de configuration sont définies avec
GMSMapViewOptions
Les propriétés de l'option incluent frame
, camera
, mapID
ou
backgroundColor
Options de carte | |
---|---|
cadre | Valeur :
CGRect Cadre de carte. La valeur par défaut est CGRectZero.
|
appareil photo | Valeur :
GMSCameraPosition Position par défaut de la caméra sur la carte.
|
mapID | Valeur :
GMSMapID ID de carte Google. Paramètre facultatif.
|
backgroundColor | Valeur :
UIColor La valeur par défaut est UIColor.lightGray.
|
Configurer les options de la carte
Vous pouvez définir vos propres propriétés d'option ou transmettre une valeur
GMSMapViewOptions
par les valeurs par défaut, directement sur 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 dans 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 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 régit la représentation globale de la carte. Par exemple, un atlas contient généralement des cartes politiques qui montrent les frontières et des cartes routières qui montrent toutes les routes d’une ville ou d’une région. Le SDK Maps pour iOS propose types de cartes suivants:
Type de carte | |
---|---|
Normale | Valeur :
kGMSTypeNormal Carte routière classique. Affiche les routes, certains éléments construits par
humains et d'é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 pour suivre les paramètres du système.
|
Hybride | Valeur :
kGMSTypeHybrid Données de photographies satellite avec l'ajout de cartes routières Route et élément géographique
sont également visibles. |
Satellite | Valeur :
kGMSTypeSatellite Données de photographies satellite. Les libellés des routes et des éléments géographiques
visible.
|
Relief | Valeur :
kGMSTypeTerrain Données topographiques. La carte comprend des couleurs, des lignes de contour et des libellés,
et l'ombre de la perspective. Certaines routes et certains libellés sont également visibles. Compatible
en définissant le jeu de couleurs de la carte sur sombre, clair ou pour suivre les paramètres système.
|
Aucun | Valeur :
kGMSTypeNone Aucune tuile de carte. Le rendu des tuiles de carte de base n'est pas effectué. Ce mode est
utile en conjonction avec
couches. 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 à 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 des cartes en relief, normales et hybrides pour les même lieu:
Plans d'intérieur
À des niveaux de zoom élevés, le SDK Maps pour iOS affiche des plans d'étage pour
Espaces intérieurs tels que les aéroports, les centres commerciaux, les grands magasins et les transports en commun
stations. Les plans d'étages de l'intérieur sont intégrés aux tuiles de carte par défaut de
'normal' type de carte (kGMSTypeNormal
) et sont automatiquement activées lorsque le
l'utilisateur fait un zoom avant et disparaît lorsque l'utilisateur fait un zoom arrière sur la carte.
Vous pouvez désactiver les plans d'intérieur en définissant la propriété indoorEnabled
de
GMSMapView
à NO
.
Swift
mapView.isIndoorEnabled = false
Objective-C
mapView.indoorEnabled = NO;
Sinon, vous pouvez désactiver uniquement Commande de sélecteur d'étage :
Ajout de plans d'étages
Les plans d'étages sont disponibles dans certains emplacements. Si les données de plan d'étage ne sont pas disponibles pour un bâtiment que vous souhaitez mettre en évidence dans votre candidature, vous pouvez:
- Ajouter un étage forfaits directement dans Google Maps. Vos forfaits seront ainsi disponibles pour tous les utilisateurs de Google Maps.
- Affichez un plan d'étage en tant que superposition au sol. Cela permet uniquement les utilisateurs de votre application pour voir vos plans d'étages.
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 ou désactiver le calque de trafic en appelant
la
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
à NO
. Des éléments d'accessibilité sont alors générés
des objets en superposition (tels que GMSMarker
, 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 propriété
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 bouton bleu
Lieu" direction des points et de la boussole en activant myLocationEnabled
GMSMapView
Swift
mapView.isMyLocationEnabled = true
Objective-C
mapView.myLocationEnabled = YES;
L'activation de cette fonctionnalité indique la position actuelle de l'utilisateur via les
myLocation
. Il est possible que cette propriété ne soit pas disponible immédiatement - pour
par exemple, si l'utilisateur est invité par iOS à autoriser l'accès à ces données. Il est
nil
dans ce cas.
Swift
print("User's location: \(String(describing: mapView.myLocation))")
Objective-C
NSLog(@"User's location: %@", mapView.myLocation);
Bâtiments 3D
Lorsqu'elles sont visualisées de près, les bâtiments 3D de nombreuses villes sont visibles, sur l'image de Seattle (Washington) ci-dessous.
![Carte en 3D de bâtiments à Seattle, dans l'État de Washington.](https://developers.google.cn/static/maps/documentation/ios-sdk/images/ios-3d-buildings.png?authuser=3&hl=fr)
Vous pouvez désactiver les bâtiments 3D en définissant
GMSMapView
en Swift ou Objective-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 délimitée.
- 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
padding
. La carte continue de se remplir
l'ensemble du conteneur, mais le positionnement du texte et des commandes, les gestes sur la carte et
mouvements se comportent comme s'ils étaient placés
dans un espace plus petit. Cela se traduit par
les modifications suivantes:
- Mouvements de caméra à l'aide d'appels d'API ou d'appuis sur un bouton (boussole, mon emplacement) sont par rapport à la zone délimitée.
GMSMapView
.projection
renvoie une projection qui n'inclut que les éléments avec remplissage. dans la même région.- Les commandes de l'interface utilisateur sont décalées par rapport au bord du conteneur de la valeur le nombre de points.
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, sur l'image, la carte comporte une marge extérieure en haut et à droite. Les commandes de carte et le texte légal sont visibles sur les bords de la marge intérieure. (en vert) alors que la carte continue à remplir l'intégralité du conteneur, affiché en bleu. Dans cet exemple, vous pourriez flotter un menu sur le côté droit de sans masquer les commandes de la carte.
Pour ajouter une marge extérieure à votre carte, créez un objet UIEdgeInsets
et transmettez-le au
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;
Jeu de couleurs de la carte
Pour les cartes de type normal et relief, vous pouvez définir le jeu de couleurs sur sombre, ou utiliser les paramètres système actuels. Par exemple, vous pouvez assombrir ou éclaircir la palette de couleurs de la carte en fonction de l'heure ou d'une utilisation en intérieur ou en extérieur de l'appareil.
Utiliser 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;