Une fenêtre d'informations vous permet d'afficher des informations destinées à l'utilisateur lorsqu'il appuie sur un .
Une fenêtre d'informations est orientée par rapport à l'écran de l'appareil, centrée au-dessus au repère qui lui est associé. La fenêtre d'informations par défaut contient le titre en gras, avec l'extrait de texte sous le titre.
Le contenu de la fenêtre d'informations est défini par le title
et
snippet
du repère. Le fait de cliquer sur le repère n'affiche pas
fenêtre d'informations si les propriétés title
et snippet
sont vides ou nil
.
Une seule fenêtre d'informations s'affiche à la fois. Si un utilisateur appuie sur un autre repère, la fenêtre actuelle est masquée et la nouvelle fenêtre d'informations s'affiche. Si l'utilisateur clique sur un repère qui affiche actuellement une fenêtre d'informations, cette la fenêtre d'informations se ferme et s'ouvre à nouveau.
Créez une fenêtre d'informations personnalisée pour ajouter du texte ou des images supplémentaires. Une configuration personnalisée vous permet de contrôler totalement l'apparence de la fenêtre pop-up.
Ajouter une fenêtre d'informations
L'extrait de code suivant crée un repère simple, avec uniquement un titre pour le texte. de la fenêtre d'informations.
Swift
let position = CLLocationCoordinate2D(latitude: 51.5, longitude: -0.127) let london = GMSMarker(position: position) london.title = "London" london.map = mapView
Objective-C
CLLocationCoordinate2D position = CLLocationCoordinate2DMake(51.5, -0.127); GMSMarker *london = [GMSMarker markerWithPosition:position]; london.title = @"London"; london.map = mapView;
La propriété snippet
vous permet d'ajouter du texte supplémentaire qui apparaîtra
sous le titre dans une
police plus petite. Chaînes plus longues que la largeur de
la fenêtre d'informations sont automatiquement
encapsulées sur plusieurs lignes. Très longue
messages peuvent être tronqués.
Swift
london.title = "London" london.snippet = "Population: 8,174,100" london.map = mapView
Objective-C
london.title = @"London"; london.snippet = @"Population: 8,174,100"; london.map = mapView;
Afficher/Masquer une fenêtre d'informations
Les fenêtres d'informations sont conçues pour répondre aux événements tactiles de l'utilisateur sur le repère.
Vous pouvez afficher ou masquer une fenêtre d'informations par programmation en définissant le selectedMarker
propriété de GMSMapView
:
- Définissez
selectedMarker
sur le nom du repère à afficher. - Définissez
selectedMarker
surnil
pour le masquer.
Swift
london.title = "London" london.snippet = "Population: 8,174,100" london.map = mapView // Show marker mapView.selectedMarker = london // Hide marker mapView.selectedMarker = nil
Objective-C
london.title = @"London"; london.snippet = @"Population: 8,174,100"; london.map = mapView; // Show marker mapView.selectedMarker = london; // Hide marker mapView.selectedMarker = nil;
Configurer l'actualisation automatique d'une fenêtre d'informations
Définissez tracksInfoWindowChanges
sur la
Repère sur YES
ou true
si vous souhaitez ajouter de nouvelles propriétés ou le contenu des informations
s'affiche immédiatement en cas de modification, au lieu d'attendre
la fenêtre d'informations pour
masquer, puis afficher à nouveau. La valeur par défaut est NO
ou false
.
Swift
london.tracksInfoWindowChanges = true
Objective-C
london.tracksInfoWindowChanges = YES;
Pour décider quand définir le
tracksInfoWindowChanges
, vous
vous devez évaluer les performances et les avantages
fenêtre d'informations redessinée automatiquement. Exemple :
- Si vous devez effectuer plusieurs modifications, vous pouvez remplacer la propriété par
YES
puis à nouveau surNO
. - Lorsqu'une animation est en cours d'exécution
ou que le contenu est chargé de manière asynchrone,
Vous devez conserver la propriété
YES
jusqu'à ce que les actions soient terminées.
Référez-vous également aux remarques à prendre en considération lorsque
en utilisant la propriété iconView
du repère.
Changer la position d'une fenêtre d'informations
Une fenêtre d'informations est orientée par rapport à l'écran de l'appareil, centrée au-dessus du repère auquel elle est associée. Vous pouvez modifier la position de la fenêtre d'informations
par rapport au repère en définissant la propriété infoWindowAnchor
. Ce
accepte une valeur CGPoint
, définie comme un décalage (x,y) où x et y
compris entre 0,0 et 1,0. Le décalage par défaut est (0,5, 0,0), c'est-à-dire le centre
en haut. Définir le décalage de infoWindowAnchor
est utile pour aligner les informations
sur une icône personnalisée.
Swift
london.infoWindowAnchor = CGPoint(x: 0.5, y: 0.5) london.icon = UIImage(named: "house") london.map = mapView
Objective-C
london.infoWindowAnchor = CGPointMake(0.5, 0.5); london.icon = [UIImage imageNamed:@"house"]; london.map = mapView;
Gérer les événements dans les fenêtres d'informations
Vous pouvez écouter les événements suivants de la fenêtre d'informations:
mapView:markerInfoWindow:
: appelé lorsqu'un repère est sur le point d'être sélectionné. Peut éventuellement renvoyer une fenêtre d'informations personnalisée, en tant queUIView
, à utiliser pour le repère. Pour en savoir plus, consultez la section Fenêtres d'informations personnalisées ci-dessous.mapView:markerInfoContents:
— Appelée lorsquemapView:markerInfoWindow
renvoie nil.mapView:didCloseInfoWindowOfMarker:
: appelé lorsque la fenêtre d'informations du repère est fermée.mapView:didLongPressInfoWindowOfMarker:
: appelé après un appui prolongé sur la fenêtre d'informations d'un repère.
Pour écouter des événements, vous devez implémenter la classe
Protocole GMSMapViewDelegate
. Consultez le
guide des événements et la liste des méthodes disponibles
GMSMapViewDelegate
GitHub inclut des exemples qui montrent comment gérer les événements de la fenêtre d'informations :
Fenêtres d'informations personnalisées
Personnalisez le contenu des fenêtres d'informations en créant une sous-classe de
UIView
qui définit la mise en page de la fenêtre d'informations personnalisée. Dans cette sous-classe,
définir la vue comme vous le souhaitez. Par exemple, vous pouvez utiliser des
UILabel
pour afficher le texte du titre et de l'extrait ainsi que d'autres vues, telles que
UIImageView
pour ajouter les images affichées dans la fenêtre d'informations.
Assurez-vous que votre ViewController
implémente le
GMSIndoorDisplayDelegate
et définit un écouteur pour
mapView:markerInfoWindow:
. Cet écouteur d'événements est appelé lorsqu'un repère est sur le point de devenir
et vous permet de renvoyer une instance de votre classe UIView
personnalisée
définir la fenêtre d'informations personnalisée utilisée par le repère.
Les images ci-dessous montrent une fenêtre d'informations par défaut, une fenêtre d'informations avec du contenu personnalisé, et une fenêtre d'informations avec un cadre et un arrière-plan personnalisés.
Les exemples de code GitHub fournies avec le SDK Maps pour iOS incluent des exemples de fenêtres d'informations personnalisées. Par exemple, consultez la définition de MarkerInfoWindowViewController.m (Objective-C) ou MarkerInfoWindowViewController.swift (Swift).
Consultez des exemples de code pour en savoir plus sur le téléchargement et l'exécution ces exemples.