Attivazione dell'evento clic sulla mappa Leaflet?


14

È possibile fare in modo che si verifichi un evento click in un particolare lat / lon su una mappa di opuscoli?

Vorrei far apparire un popup associato a un punto in una determinata posizione.

Ho provato diverse combinazioni di map.fireEvent('click', latLon)e map.fire('click', latLon)ma non riesco a trovare esempi o riferimenti che descrivano questo approccio. È qualcosa che si può fare?

Un approccio che ho provato (e che funziona) è quello di identificare l'oggetto nel livello del volantino e di attivare un evento clic layer[id].fireEvent('click'). Tuttavia, ciò richiede che conosca l'ID oggetto e vorrei poter usare solo un lat / lon per attivare questo clic.


Vorrei aprire un popup nella posizione selezionata e non voglio aggiungere un marcatore o aggiungere un nuovo popup in questa posizione. Quello che sto cercando di fare è lanciare un evento click in un particolare lat / lon in cui esiste già un punto e attivare il popup già esistente.

Risposte:


21

Penso che tu stia pensando che sia più complesso di quanto pensi!

Prova questo:

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

Proveniente dalla documentazione eccellente .

So cosa vuoi fare adesso. Ecco come puoi aprire un popup in una posizione cliccata arbitrariamente:

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

Modifica finale: penso seriamente che se vuoi lanciare un evento "click" per ottenere qualcosa che il tuo design deve essere visto. Se vuoi davvero farlo, sembra possibile in JavaScript . Non è una domanda GIS, però.


Grazie per il suggerimento Sai se è possibile attivare questo, senza creare un popup? Nel mio caso aggiungo 70 punti a una mappa (vincolando un popup) e desidero attivare uno di questi popup in un secondo momento.
DJ

Puoi creare tutti i popup, archiviarli in qualche modo / dove, quindi semplicemente aprirli sulla mappa. Leggi la documentazione e provala. Non capisco cosa stai cercando di fare. Forse dovresti modificare la tua domanda per definire il tuo end-point?
Alex Leith

Capisco come aprire il popup se è archiviato in un array, voglio provare ad aprirlo in base al clic in un punto della mappa. Proverò a renderlo più chiaro nella domanda.
DJ

Quindi vuoi aprire il popup più vicino a un clic? O aprire un popup nella posizione selezionata? E tu non vuoi marcatori?
Alex Leith

Vorrei aprire un popup nella posizione selezionata e non desidero i marker.
DJ

1

Sto usando l' altra risposta in una mappa di opuscoli per consentire agli utenti di inviarmi richieste di funzionalità in base alla posizione cliccata in una mappa, che quindi apre un modulo google precompilato con il lat lungo da quella posizione. Questi punti vengono quindi mostrati sulla mappa usando il foglio di lavoro / tavolo. Ho aggiunto un map.hasLayer (livello delle mie richieste) in modo che l'utente non visualizzi sempre il popup quando si fa clic sulla mappa:

    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);
    }
});
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.