Acionando evento de clique no mapa do Leaflet?


14

É possível fazer um evento de clique ocorrer em um determinado lat / lon em um mapa de folheto?

Gostaria de fazer aparecer um pop-up associado a um ponto em um local específico.

Eu tentei várias combinações de map.fireEvent('click', latLon)e map.fire('click', latLon)mas não consigo encontrar uma exemplos ou referências que descrevem esta abordagem. Isso é algo que pode ser feito?

Uma abordagem que tentei (e que funciona) é identificar o objeto na camada de folheto e acionar um evento de clique usando layer[id].fireEvent('click'). No entanto, isso exige que eu conheça o ID do objeto e gostaria de poder usar apenas um lat / lon para acionar esse clique.


Gostaria de abrir um pop-up no local clicado e não quero adicionar um marcador ou adicionar um novo pop-up nesse local. O que estou tentando fazer é disparar um evento de clique em um determinado lat / lon onde um ponto já existe e acionar o pop-up que já existe.

Respostas:


21

Eu acho que você está pensando que é mais complexo do que você pensa!

Tente o seguinte:

var popLocation= new L.LatLng(-42.8585,147.2468);
var popup = L.popup()
    .setLatLng(popLocation)
    .setContent('<p>Hello world!<br />This is a nice popup.</p>')
    .openOn(map);

Originado da excelente documentação .

Eu sei o que você quer fazer agora. Veja como você pode abrir um pop-up em um local clicado arbitrário:

map.on('click', function(e) {        
        var popLocation= e.latlng;
        var popup = L.popup()
        .setLatLng(popLocation)
        .setContent('<p>Hello world!<br />This is a nice popup.</p>')
        .openOn(map);        
    });

Edição final: eu acho seriamente que, se você deseja disparar um evento de 'clique' para alcançar algo em que seu design precisa ser observado. Se você realmente deseja fazer isso, parece possível em javascript . Não é uma pergunta GIS, no entanto.


Obrigado pela sugestão. Você sabe se é possível acionar isso, sem criar um pop-up? No meu caso, adiciono 70 pontos a um mapa (vinculando um pop-up) e desejo acionar um desses pop-ups mais tarde.
DJQ

Você pode criar todos os pop-ups, armazená-los de alguma forma / onde, em seguida, basta abri-los no mapa. Leia a documentação e experimente. Não entendo o que você está tentando fazer. Talvez você deva editar sua pergunta para definir seu ponto final?
Alex Leith

Eu entendo como abrir o pop-up, se ele estiver armazenado em uma matriz, quero tentar abri-lo com base em clicar em um local no mapa. Vou tentar deixar isso mais claro na pergunta.
DJQ

Então você deseja abrir o pop-up mais próximo com um clique? Ou abrir um pop-up no local clicado? E você não quer marcadores?
Alex Leith

Gostaria de abrir um pop-up no local clicado e não quero marcadores.
DJQ

1

Estou usando a outra resposta em um mapa de folheto para permitir que os usuários me enviem solicitações de recursos com base no local clicado em um mapa, que abre um formulário do Google pré-preenchido com o lat long a partir dessa posição. Esses pontos são mostrados no mapa usando planilha / mesa. Eu adicionei um map.hasLayer (camada de pedidos) para que o usuário nem sempre veja o pop-up quando o mapa é clicado:

    map.on('click', function(e) { 
    if (map.hasLayer(requests)) {
        var requestform = e.latlng;
        var formpopup = L.popup();
        .setLatLng(requestform)
        .setContent('<a href=" google form ' + e.latlng.lat + 
                    '" target="_blank">Form</a>') 
        .openOn(map);
    }
});
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.