Cela semble possible uniquement en CSS. Ci-dessous, je remplace (avec !important
) seulement trois éléments CSS et j'ajoute un :before
pseudo-élément. Je suis essentiellement en train d'aligner la fenêtre contextuelle avec le haut au lieu du bas , où cela 55px
dépend simplement de votre marqueur choisi et de vos goûts personnels.
Je déplace ensuite la "pointe" de la fenêtre contextuelle de bas en haut top:0px
et découvre qu'elle n'est pas faite à l'aide de l'astuce "normale" (c'est-à-dire: positionnez d'abord sur le bord de la bulle un pseudo-élément de taille 0x0 avec une bordure transparente épaisse, puis colorez cette couleur frontière opposée de l'élément de l'endroit où vous voulez pointer; dans notre cas, la bordure inférieure). Au lieu de cela, il semble être fait à partir d'un rectangle tourné à partir de quelque part en haut à gauche (peut-être: parce qu'il force le navigateur à utiliser le GPU et accélère donc tout?) Et je ne comprends pas assez bien le point (pardonnez le jeu de mots) ( ma pointe est au bon endroit mais invisible); donc je supprime juste l'ombre de la boîte qui est maintenant au mauvais endroit et laisse le tout tel quel --- quiconque comprend la "vieille astuce" s'il vous plaît ajustez cela.
Donc, au lieu de cela, je fais ma propre astuce, avec le processus "normal" (si vous n'êtes pas sûr, changez les quatre couleurs de bordure ci-dessous, au lieu de 3x transparent et 1x blanc --- par exemple border-bottom-color: blue; border-left-color: green; border-top-color: yellow' border-right-color: red
).
#map {
position: absolute;
top: 0;
right: 0;
left: 0;
bottom: 0;
z-index: 0;
}
.leaflet-popup {top: 55px !important;}
/* Here I move the "tip" to the right location, but didn't succeed in making it visible. So I just remove the box-shadow and leave it: */
.leaflet-popup-tip-container {
top: 0px !important;
}
.leaflet-popup-tip {
box-shadow: none !important;
}
.leaflet-popup:before
{
content: "";
position: absolute;
border: 13px solid transparent;
border-bottom-color: white;
bottom: 0px;
margin-left: -13px;
}
Comme le démontre ce JSFiddle , aucun problème avec différentes tailles de popup (largeur différente, hauteur de texte différente) si vous essayez les deux marqueurs.
Dans l'ensemble, cela semble robuste contre les mises à jour dans Leaflet car les éléments que je remplace ne semblent pas susceptibles de changer.