Une fenêtre pop-up affiche du contenu (généralement du texte ou des images) dans une infobulle au-dessus de la carte, à un emplacement donné. La fenêtre pop-up se compose d'une zone de contenu et d'un pied effilé. L'extrémité du pied est reliée à un point géographique spécifié sur la carte.
En règle générale, vous associez une fenêtre pop-up à un
repère, mais vous pouvez également
l'associer à une coordonnée LatLng spécifique.
Ajouter une fenêtre pop-up
Pour ajouter une fenêtre pop-up, créez un objet Popover et définissez ses options, y compris le mode de position et d'altitude. La position est un objet LatLng qui inclut la latitude, la longitude et l'altitude, ce qui détermine l'emplacement où la fenêtre pop-up s'affiche. Si vous l'ancrez à un repère, la position de ce dernier est utilisée à la place.
Vous pouvez également contrôler la façon dont l'altitude est interprétée en définissant le mode d'altitude.
Le contenu d'une fenêtre pop-up doit être contenu dans un AndroidView. Les fenêtres pop-up sont défilables par défaut et ont une hauteur maximale prédéfinie.
Ancrer une fenêtre pop-up à un repère
Vous pouvez ancrer des fenêtres pop-up à des repères. Lorsque vous ajoutez une fenêtre pop-up ancrée à un repère, vous devez l'associer à un objet Marker.
class MapManager(private val map: MapView) {
/**
* Adds a popover anchored to a marker.
* @param context The Context required to instantiate UI views.
*/
fun addPopoverToMarker(context: Context) {
// 1. Create a marker
val markerOptions = markerOptions {
position = latLngAltitude {
latitude = 37.422
longitude = -122.084
altitude = 0.0
}
}
val marker = map.addMarker(markerOptions) ?: return
// 2. Create the custom view using the passed-in context
val textView = TextView(context).apply {
text = context.getString(R.string.popover_hello)
setPadding(16, 16, 16, 16)
setBackgroundColor(Color.WHITE)
setTextColor(Color.BLACK)
}
// 3. Configure and display the popover
val options = popoverOptions {
content = textView
positionAnchor = marker
altitudeMode = AltitudeMode.RELATIVE_TO_GROUND
}
val popover = map.addPopover(options)
popover.show()
}
}
Ajouter une fenêtre pop-up configurée
L'exemple suivant ajoute une fenêtre pop-up qui se ferme automatiquement lorsque l'utilisateur appuie en dehors de celle-ci et qui ne se déplace pas automatiquement vers les fenêtres pop-up nouvellement ouvertes :
/**
* Adds a configured popover (auto-close enabled, auto-pan disabled).
* @param context The Context used to inflate the UI and retrieve string resources.
*/
fun addConfiguredPopover(context: Context) {
// 1. Initialize the view with the explicit context
val textView = TextView(context).apply {
text = context.getString(com.example.snippets.common.R.string.popover_info)
setPadding(12, 12, 12, 12)
setBackgroundColor(Color.WHITE)
setTextColor(Color.BLACK)
}
// 2. Configure popover behavior
val options = popoverOptions {
content = textView
// Setting a fixed coordinate anchor
positionAnchor = latLngAltitude {
latitude = 0.0
longitude = 0.0
altitude = 0.0
}
autoCloseEnabled = true // Closes automatically when the map is tapped elsewhere
autoPanEnabled = false // Map camera remains stationary when popover appears
}
// 3. Add to the map instance
map.addPopover(options)
}