Un popover affiche du contenu (généralement du texte ou des images) dans une boîte de dialogue au-dessus de la carte, à un emplacement donné. Le pop-over 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. Les pop-ups s'affichent sous la forme d'une boîte de dialogue pour les lecteurs d'écran.
En général, vous associez un pop-up à un repère interactif, mais vous pouvez également l'associer à une coordonnée LatLngAltitude spécifique ou le décaler par rapport à un repère.
Ajouter un pop-over
Le constructeur PopoverElement utilise un littéral d'objet PopoverElementOptions, qui spécifie les paramètres initiaux d'affichage du pop-over.
Le littéral d'objet PopoverElementOptions contient les champs suivants :
positionAnchor: positionLatLngAltitudeà laquelle afficher le repère. Si vous utilisez un repère, sa position sera utilisée à la place.altitudeMode: interprétation de l'altitude du pop-over.lightDismissDisabled: indique si le pop-up reste ouvert lorsque l'utilisateur clique en dehors ou appuie sur la toucheEsc. Lorsque cette option est définie surtrue, plusieurs pop-upslightDismissDisabledpeuvent s'afficher simultanément sur la carte.open: indique si le pop-up doit être ouvert ou non. La valeur par défaut estfalse.
PopoverElement peut contenir une chaîne de texte, un extrait de code HTML ou un élément DOM. Vous définissez le contenu en l'ajoutant explicitement à l'PopoverElement dans l'emplacement header ou default.
Si vous souhaitez dimensionner explicitement le contenu, vous pouvez le placer dans un élément <div> et appliquer un style à cet élément <div> avec le CSS. Les pop-overs sont défilables par défaut et ont une hauteur maximale prédéfinie.
Ancrer un pop-over à une coordonnée LatLngAltitude
Lorsque vous créez un pop-over, il ne s'affiche pas automatiquement sur la carte. Pour rendre le pop-over visible, vous devez définir l'option open sur true dans PopoverElement. Vous pouvez effectuer cette action pendant la construction ou après l'instanciation.
async function init() { const { AltitudeMode, Map3DElement, MapMode, PopoverElement } = await google.maps.importLibrary("maps3d"); const map = new Map3DElement({ center: { lat: 37.8204, lng: -122.4783, altitude: 0.407 }, range: 4000, tilt: 74, heading: 38, mode: MapMode.HYBRID, gestureHandling: "COOPERATIVE" }); const popover = new PopoverElement({ altitudeMode: AltitudeMode.ABSOLUTE, open: true, positionAnchor: { lat: 37.819852, lng: -122.478549, altitude: 150 }, }); popover.append('Golden Gate Bridge'); map.append(popover); document.body.append(map); } init();
Ancrer un pop-over à un repère
Vous pouvez ancrer des popovers à des repères. Lorsque vous ajoutez un pop-over ancré à un repère, vous définissez l'option PopoverElement.positionAnchor pour utiliser le repère.
async function init() { const { AltitudeMode, Map3DElement, Marker3DInteractiveElement, MapMode, PopoverElement } = await google.maps.importLibrary("maps3d"); const map = new Map3DElement({ center: { lat: 37.8204, lng: -122.4783, altitude: 0.407 }, range: 4000, tilt: 74, heading: 38, mode: MapMode.HYBRID, gestureHandling: "COOPERATIVE" }); // Popovers can only be added to interactive Markers const interactiveMarker = new Marker3DInteractiveElement({ altitudeMode: AltitudeMode.ABSOLUTE, position: { lat: 37.819852, lng: -122.478549, altitude: 100 } }); const popover = new PopoverElement({ open: false, positionAnchor: interactiveMarker, }); popover.append('Golden Gate Bridge'); interactiveMarker.addEventListener('gmp-click', (event) => { // toggle the marker to the other state (unlee you are clicking on the marker itself when it reopens it) popover.open = !popover.open; }); map.append(interactiveMarker); map.append(popover); document.body.append(map); } init();
Ancrer un pop-over à un repère à l'aide de HTML
Vous pouvez également ancrer des pop-ups à des repères sans écrire de code JavaScript, comme indiqué ci-dessous :
<gmp-map-3d mode="hybrid" center="37.819852,-122.478549" tilt="75" range="2000" heading="330">
<gmp-marker-3d-interactive gmp-popover-target="my-popover" position="37.819852,-122.478549,100"></gmp-marker-3d-interactive>
<gmp-popover id="my-popover">
Golden Gate Bridge
</gmp-popover>
</gmp-map-3d>
<script async src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDGl0teQ6qwaBEdHazOWIEXd8XGWOZvoaM&v=beta&libraries=maps3d">
</script>
Ajouter du contenu personnalisé à un pop-over
Vous pouvez ajouter du contenu personnalisé aux pop-ups en définissant les options header et content :
async function init() {
const {Map3DElement, MapMode, PopoverElement, AltitudeMode} = await google.maps.importLibrary('maps3d');
const map = new Map3DElement({
center: { lat: 37.819852, lng: -122.478549, altitude: 2000 },
tilt: 75,
heading: 330,
mode: MapMode.SATELLITE,
});
const popover = new PopoverElement({
altitudeMode: AltitudeMode.ABSOLUTE,
open: true,
positionAnchor: {lat: 37.819852, lng: -122.478549, altitude: 100},
});
const header = document.createElement('div');
header.style.fontWeight = 'bold';
header.slot = 'header';
header.textContent = 'Golden Gate Bridge';
const content = document.createElement('div');
content.textContent = 'Iconic orange bridge connecting San Francisco to Marin.';
popover.append(header);
popover.append(content);
document.body.append(map);
map.append(popover);
}
init();