Isso parece ser possível apenas em CSS. Abaixo, estou substituindo (com !important
) apenas três elementos CSS e adicionando um :before
pseudo-elemento. Estou essencialmente alinhando o pop-up com a parte superior em vez da inferior , onde 55px
depende apenas do marcador escolhido e do gosto pessoal.
Em seguida, movo a "dica" do pop-up da mesma forma de baixo para baixo top:0px
e descobri que ela não foi criada usando o truque "normal" (ou seja: primeira posição na borda da bolha, um pseudoelemento do tamanho 0x0 com uma borda transparente grossa e depois pintei borda oposta do elemento de onde você deseja apontar; no nosso caso, a borda inferior). Em vez disso, parece ser feito de um retângulo girado de algum lugar no canto superior esquerdo (talvez: porque força o navegador a usar a GPU e, portanto, acelera tudo?) E eu não entendi bem (desculpe o trocadilho) o suficiente ( minha dica está no lugar certo, mas invisível); então apenas removo a sombra da caixa que está no lugar errado e deixo tudo como está - quem entende a "dica antiga", ajuste-a.
Então, em vez disso, faço minha própria dica, com o processo "normal" (se não tiver certeza, altere as quatro cores da borda abaixo, em vez de 3x transparente e 1x branco --- por exemplo 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;
}
Como este JSFiddle demonstra, não há problema com tamanhos de pop-up diferentes (largura diferente, altura de texto diferente) se você tentar os dois marcadores.
Tudo isso parece robusto em relação às atualizações no Leaflet, pois os itens que estou substituindo provavelmente não mudam.