在传单地图上触发点击事件?


15

是否可以在传单地图上的特定纬度/经度处发生点击事件?

我想显示一个弹出窗口,该弹出窗口与特定位置的点关联。

我曾尝试的几种组合map.fireEvent('click', latLon)map.fire('click', latLon),但我无法找到描述这种方法的例子或引用。这是可以做的事情吗?

我尝试过(并且可行)的一种方法是在传单层中标识对象并使用触发click事件layer[id].fireEvent('click')。但是,这需要我知道对象ID,并且我希望能够仅使用纬度/经度来触发此点击。


我想在单击的位置打开一个弹出窗口,并且我不想在此位置添加标记或添加新的弹出窗口。我想做的是在已经存在某点的特定经纬度上触发click事件,并触发已经存在的弹出窗口。

Answers:


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中实现。不过,这不是GIS问题。


感谢您的建议。您知道是否可以在不创建弹出窗口的情况下触发它吗?以我为例,我在地图上添加了70个点(绑定了一个弹出窗口),并希望稍后触发这些弹出窗口之一。
djq 2014年

您可以创建所有弹出窗口,以某种方式/在某些地方存储它们,然后只需在地图上打开它们即可。阅读文档并尝试一下。我不明白您要做什么。也许您应该编辑问题以定义终点?
Alex Leith 2014年

我了解如何将弹出式窗口存储在数组中,我想根据在地图上的某个位置单击来尝试打开它。我会尽力使这个问题更清楚。
djq 2014年

因此,您想打开最接近点击的弹出窗口吗?还是在单击的位置打开一个弹出窗口?而且您不需要标记?
Alex Leith 2014年

我想在单击的位置打开一个弹出窗口,并且我不需要标记。
djq 2014年

1

我在传单地图中使用其他答案,以允许用户根据地图中单击的位置向我发送功能请求,然后打开一个预先填充的Google表单,该表单的纬度早于该位置。然后使用sheetsee / tabletop在地图上显示这些点。我添加了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);
    }
});
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.