Вызывает ли событие клик на карте листовки?

15

Возможно ли, чтобы событие клика происходило в определенное время на листовой карте?

Я хотел бы, чтобы появилось всплывающее окно, которое связано с точкой в ​​определенном месте.

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

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


Я хочу открыть всплывающее окно в выбранном месте, и я не хочу добавлять маркер или новое всплывающее окно в этом месте. То, что я пытаюсь сделать, это запустить событие щелчка на определенном отрезке времени, где точка уже существует, и вызвать всплывающее окно, которое уже существует.

djq
источник

Ответы:

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

Окончательное редактирование: я серьезно думаю, что если вы хотите запустить событие «click», чтобы достичь чего-то, на что нужно обратить внимание в вашем дизайне. Если вы действительно хотите это сделать, это возможно в 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);
    }
});
Малькольм
источник