Questo sembra essere possibile solo nei CSS. Di seguito sovrascrivo (con !important
) solo tre elementi CSS e aggiungo uno :before
pseudo-elemento. In sostanza, per prima cosa sto allineando il popup con la parte superiore anziché inferiore , dove 55px
dipende solo dal marker scelto e dal gusto personale.
Sposto quindi la "punta" del popup in modo simile dal basso verso top:0px
, e scopro che non è stato realizzato usando il trucco "normale" (ovvero: prima posizione sul bordo della bolla uno pseudo-elemento di dimensioni 0x0 con un bordo trasparente spesso, quindi colora quello bordo opposto dell'elemento rispetto al punto in cui si desidera puntare; nel nostro caso, il bordo inferiore). Invece sembra essere fatto da un rettangolo ruotato da qualche parte in alto a sinistra (forse: perché forza il browser a usare la GPU e quindi accelera tutto?) E non capisco abbastanza bene il punto (scusate il gioco di parole) ( il mio consiglio è nel posto giusto ma invisibile); quindi rimuovo solo l'ombra della scatola che ora è nel posto sbagliato e lascio tutto così com'è --- chiunque capisca il "vecchio consiglio", per favore, aggiusta quello.
Quindi invece faccio il mio suggerimento, con il processo "normale" (se non sei sicuro, cambio i quattro colori del bordo in basso, invece di 3x trasparenti e 1x bianco --- ad es 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;
}
Come dimostra questo JSFiddle , nessun problema con diverse dimensioni di popup (diversa larghezza, diversa altezza del testo) se provi entrambi i marcatori.
Tutto sommato, questo sembra robusto rispetto agli aggiornamenti in Leaflet poiché gli elementi che sto sovrascrivendo non sembrano cambiare.