¿Activando evento de clic en el mapa de folleto?

14

¿Es posible hacer que ocurra un evento de clic en un lat / lon particular en un mapa de folleto?

Me gustaría hacer aparecer una ventana emergente asociada con un punto en una ubicación particular.

He intentado varias combinaciones de map.fireEvent('click', latLon)y map.fire('click', latLon)pero no puedo encontrar ejemplos o referencias que describan este enfoque. ¿Es esto algo que se puede hacer?

Un enfoque que he intentado (y que funciona) es identificar el objeto en la capa de folleto y activar un evento de clic usando layer[id].fireEvent('click'). Sin embargo, esto requiere que conozca la ID del objeto y me gustaría poder usar un lat / lon para activar este clic.


Me gustaría abrir una ventana emergente en la ubicación en la que se hizo clic y no quiero agregar un marcador o agregar una nueva ventana emergente en esta ubicación. Lo que intento hacer es activar un evento de clic en un lat / lon particular donde ya existe un punto y activar la ventana emergente que ya existe.

djq
fuente

Respuestas:

21

¡Creo que estás pensando que es más complejo de lo que piensas!

Prueba esto:

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);

Fuente de la excelente documentación .

Sé lo que quieres hacer ahora. Así es como puede abrir una ventana emergente en una ubicación arbitraria en la que se hace clic:

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);        
    });

Edición final: creo seriamente que si quieres disparar un evento de 'clic' para lograr algo que tu diseño necesita ser visto. Si realmente quieres hacerlo, parece posible en javascript . Sin embargo, no es una pregunta SIG.

Alex Leith
fuente
Gracias por la sugerencia. ¿Sabes si es posible activar esto, sin crear una ventana emergente? En mi caso, agrego 70 puntos a un mapa (enlazar una ventana emergente) y deseo activar una de estas ventanas emergentes más adelante.
djq
Puede crear todas las ventanas emergentes, almacenarlas de alguna manera / donde, luego simplemente abrirlas en el mapa. Lea la documentación y pruébela. No entiendo lo que intentas hacer. ¿Quizás debería editar su pregunta para definir su punto final?
Alex Leith
Entiendo cómo abrir la ventana emergente si está almacenada en una matriz, quiero intentar abrirla haciendo clic en un lugar del mapa. Intentaré aclarar esto en la pregunta.
djq
¿Entonces quieres abrir la ventana emergente más cercana a un clic? ¿O abrir una ventana emergente en la ubicación en la que se hizo clic? ¿Y no quieres marcadores?
Alex Leith
Me gustaría abrir una ventana emergente en la ubicación en la que se hizo clic y no quiero marcadores.
DJ
1

Estoy usando la otra respuesta en un mapa de folleto para permitir que los usuarios me envíen solicitudes de funciones basadas en la ubicación en la que se hizo clic en un mapa, que luego abre un formulario de Google precargado con el lat largo desde esa posición. Esos puntos se muestran en el mapa usando sheetsee / tabletop. Agregué un map.hasLayer (mi capa de solicitudes) para que el usuario no siempre vea la ventana emergente cuando se hace clic en el mapa:

    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);
    }
});
malcolm
fuente