Wyzwalanie zdarzenia kliknięcia na mapie Ulotki?

15

Czy jest możliwe, aby zdarzenie kliknięcia miało miejsce w określonym czasie / miejscu na mapie ulotki?

Chciałbym, aby pojawiło się okienko wyskakujące związane z punktem w określonej lokalizacji.

Próbowałem kilka kombinacji map.fireEvent('click', latLon)i map.fire('click', latLon), ale nie może znaleźć przykłady lub odwołania opisujące to podejście. Czy to coś, co można zrobić?

Jednym ze sposobów, które wypróbowałem (i które działa), jest zidentyfikowanie obiektu w warstwie ulotki i wywołanie zdarzenia kliknięcia za pomocą layer[id].fireEvent('click'). Wymaga to jednak znajomości identyfikatora obiektu i chciałbym móc po prostu użyć lat / lon do uruchomienia tego kliknięcia.


Chciałbym otworzyć wyskakujące okienko w klikniętym miejscu i nie chcę dodawać znacznika ani dodawać nowego wyskakującego okienka w tym miejscu. To, co próbuję zrobić, to uruchomić zdarzenie kliknięcia w określonym miejscu, w którym punkt już istnieje, i uruchomić wyskakujące okienko, które już istnieje.

djq
źródło

Odpowiedzi:

21

Myślę, że myślisz, że jest bardziej złożony niż myślisz!

Spróbuj tego:

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

Pozyskano z doskonałej dokumentacji .

Wiem, co chcesz teraz zrobić. Oto jak możesz otworzyć wyskakujące okienko w dowolnym klikniętym miejscu:

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

Edycja końcowa: poważnie myślę, że jeśli chcesz uruchomić zdarzenie „kliknięcia”, aby osiągnąć coś, na co trzeba przyjrzeć się projektowi. Jeśli naprawdę chcesz to zrobić, wydaje się to możliwe w javascript . Ale to nie jest pytanie GIS.

Alex Leith
źródło
Dziękuję za sugestię. Czy wiesz, czy można to uruchomić bez tworzenia wyskakującego okienka? W moim przypadku dodaję 70 punktów do mapy (wiążąc wyskakujące okienko) i chcę wywołać jedno z tych wyskakujących okienek później.
djq
Możesz utworzyć wszystkie wyskakujące okienka, zapisać je w jakiś sposób / gdzie, a następnie po prostu otworzyć je na mapie. Przeczytaj dokumentację i wypróbuj ją. Nie rozumiem, co próbujesz zrobić. Być może powinieneś edytować swoje pytanie, aby zdefiniować swój punkt końcowy?
Alex Leith,
Rozumiem, jak otworzyć wyskakujące okienko, jeśli jest przechowywane w tablicy, chcę spróbować otworzyć to na podstawie kliknięcia w miejsce na mapie. Spróbuję to wyjaśnić w pytaniu.
djq
Więc chcesz otworzyć najbliższe okienko do kliknięcia? Lub otwórz wyskakujące okienko w klikniętej lokalizacji? I nie chcesz markerów?
Alex Leith,
Chciałbym otworzyć wyskakujące okienko w klikniętej lokalizacji i nie chcę markerów.
djq
1

Korzystam z drugiej odpowiedzi na mapie ulotki, aby umożliwić użytkownikom wysyłanie mi zapytań o funkcje na podstawie klikniętej lokalizacji na mapie, która następnie otwiera wstępnie wypełniony formularz google z długością od tej pozycji. Punkty te są następnie wyświetlane na mapie za pomocą arkusza / blatu stołu. Dodałem map.hasLayer (warstwa moich żądań), aby użytkownik nie zawsze widział wyskakujące okienko po kliknięciu mapy:

    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
źródło