Dans mon cas, aucune classe css n'était appliquée en fonction du niveau de zoom. Ce que j'ai fait, c'est de forcer l'application d'une classe personnalisée à partir d'un listener en fonction du niveau de zoom. Quelque chose comme :
this.map.on('zoom', () => {
if (this.map.getZoom() > 8) {
// zooming in, remove offset to position
var popups: any = document.getElementsByClassName("mapboxgl-popup");
for (let popup of popups) {
if (popup.classList.contains("my-offset-class")) {
popup.classList.remove("my-offset-class");
}
}
} else {
// zooming out, add left offset to position
var popups: any = document.getElementsByClassName("mapboxgl-popup");
for (let popup of popups) {
if (!popup.classList.contains("my-offset-class")) {
popup.classList.add("my-offset-class");
}
}
}
});
Ici mapboxgl-popup
est la classe css standard pour les popups (vous pouvez utiliser n'importe quelle classe personnalisée à condition de l'appliquer à vos popups), tandis que my-offset-class
est la classe css pour l'application du décalage.