Processing math: 100%

22 votos

¿Disparar un evento de clic en el mapa del folleto?

¿Es posible hacer que un evento de clic se produzca en una lat/lon concreta de un mapa de folletos?

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

He probado varias combinaciones de map.fireEvent('click', latLon) y map.fire('click', latLon) pero no encuentro ejemplos o referencias que describan este enfoque. ¿Se puede hacer esto?

Un método que he probado (y que funciona) es identificar el objeto en la capa de folletos y activar un evento de clic utilizando layer[id].fireEvent('click') . Sin embargo, esto requiere que yo sepa el ID del objeto y me gustaría ser capaz de utilizar sólo un lat/lon para desencadenar este clic.


Me gustaría abrir una ventana emergente en la ubicación pulsada y no quiero añadir un marcador o añadir una nueva ventana emergente en esta ubicación. Lo que estoy tratando de hacer es disparar un evento de clic en un particular lat / lon donde ya existe un punto y activar la ventana emergente que ya existe.

27voto

Ricardo Reyes Puntos 3428

Creo que está pensando que es más complejo de lo que cree.

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

Procedente de la excelente documentación .

Sé lo que quieres hacer ahora. Así es como se puede abrir una ventana emergente en una ubicación arbitraria 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 'click' para conseguir algo que tu diseño necesita ser revisado. Si realmente quieres hacerlo, parece posible en javascript . Sin embargo, no es una pregunta GIS.

2voto

VinnyDBA Puntos 191

Estoy utilizando el otra respuesta en un mapa de folletos para permitir a los usuarios enviarme solicitudes de características basadas en la ubicación pulsada en un mapa, que luego abre un formulario de google pre-llenado con la lat long de esa posición. Esos puntos se muestran en el mapa utilizando sheetsee/tabletop. He añadido un map.hasLayer(mi capa de solicitudes) por lo que el usuario no siempre está viendo 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);
    }
});

1voto

Jon Puntos 6

Las soluciones reales son las siguientes y funcionan.

function onEachFeature(feature, layer) {
    var coords = new Array();
    coords.push([feature.geometry.coordinates[1], feature.geometry.coordinates[0]]);
    var popupContent = " <strong>Name:</strong> " +
        feature.properties.Name +
        " <br /><br /> " +
        " <strong>Description:</strong> " +
        feature.properties.description +
        " <br /><br /> " +
        " <strong>LAT/LONG:</strong> " +
        " <a href='https://www.google.com/maps/search/?api=1&query=" + feature.geometry.coordinates[1] + "," + feature.geometry.coordinates[0] + "'" + " target='_blank'>" + feature.geometry.coordinates[1] + "," + feature.geometry.coordinates[0] + "</a>" +
        " <br /><br /> " +
        "<strong>Geometry Type:</strong> " +
        feature.geometry.type;

    if (feature.properties && feature.properties.popupContent) {
        popupContent += feature.properties.popupContent;
    }

    layer.bindPopup(popupContent);

}

0voto

latheiere Puntos 128

Si un marcador no está completamente fuera de la discusión, puede hacerlo transparente. Sólo tiene que utilizar un divIcon transparente personalizado para el icono del marcador y establecer la anchura y la altura para un área de clic más grande/pequeña. Incluso puede utilizar un polígono transparente si desea cubrir un área específica.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X