Запуск натискання події на карті Leaflet?


15

Чи можливо зробити так, щоб подія клацання відбувалася в певному Lat / lon на карті листівки?

Я хотів би, щоб з'явилося спливаюче вікно, яке асоціюється з точкою в певному місці.

Я спробував кілька комбінацій map.fireEvent('click', latLon)і , map.fire('click', latLon)але я не можу знайти приклади або посилання , що описують цей підхід. Це якась річ, яку можна зробити?

Один із підходів, який я спробував (і який працює) - це визначити об'єкт у шарі листівки та запустити подію клацання за допомогою layer[id].fireEvent('click'). Однак для цього потрібно, щоб я знав ідентифікатор об'єкта, і я хотів би мати можливість просто використовувати lat / lon для запуску цього клацання.


Я хотів би відкрити спливаюче вікно у вказаному місці, і я не хочу додавати маркер або додавати нове спливаюче вікно у цьому місці. Що я намагаюся зробити, це запустити подію натискання на певний лат / lon, де точка вже існує, і запустити спливаюче вікно, яке вже існує.

Відповіді:


21

Я думаю, що ваші мислять, що це складніше, ніж ви думаєте!

Спробуйте це:

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

Витіснено з відмінної документації .

Я знаю, що ти хочеш зараз зробити. Ось як можна відкрити спливаюче вікно у довільному кліку:

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

Остаточне редагування: я серйозно думаю, що якщо ви хочете запустити подію "клацання", щоб досягти чогось, що ваш дизайн повинен розглядати. Якщо ви дійсно хочете це зробити, це здається можливим у JavaScript . Це не питання ГІС.


Дякую за пропозицію. Чи знаєте ви, чи можна це запустити, не створюючи спливаюче вікно? У моєму випадку я додаю до точки 70 балів (прив’язуючи спливаюче вікно) і хочу запустити одну з цих спливаючих віз пізніше.
djq

Ви можете створити всі спливаючі вікна, зберегти їх якось / де, а потім просто відкрити їх на карті. Прочитайте документацію та спробуйте. Я не розумію, що ти намагаєшся зробити. Можливо, ви повинні відредагувати своє запитання, щоб визначити свою кінцеву точку?
Алекс Лейт

Я розумію, як відкрити спливаюче вікно, якщо воно зберігається в масиві, я хочу спробувати відкрити його на основі клацання місця на карті. Спробую зробити це зрозумілішим у питанні.
djq

Отже, ви хочете відкрити найближче спливаюче вікно для клацання? Або відкрити спливаюче вікно у вибраному місці? І ви не хочете маркерів?
Алекс Лейт

Я хотів би відкрити спливаюче вікно у вибраному місці, і я не хочу маркерів.
djq

1

Я використовую іншу відповідь на карті листівки, щоб дозволити користувачам надсилати мені запити щодо функцій на основі натиснутого місця на карті, що потім відкриває попередньо заповнену форму google із відрізком, довгим з цієї позиції. Потім ці точки відображаються на карті за допомогою аркуша / стільниці. Я додав map.hasLayer (рівень моїх запитів), тому користувач не завжди бачить спливаюче вікно, коли натискає карту:

    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);
    }
});
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.