如何模拟Mapbox markerLayer上的点击

时间:2016-07-12 13:31:36

标签: javascript jquery onclick leaflet mapbox

我有一个markerLayer.on('click', function() {...})事件连接到我的Mapbox,我试图在有人点击相关表项时触发它。表项具有lat / long内置,因此它们已经平移到正确的标记,但它不一定会触发onclick事件。有没有一种简单的方法来改变它?

特定功能详细信息:通常单击Mapbox标记会显示一个弹出窗口,其中包含有关该位置的一些信息。每个位置在表格中显示为一行,理想情况下单击关联的行也会显示Mapbox弹出窗口。

2 个答案:

答案 0 :(得分:2)

为什么不这样做...为init循环中的每个标记创建一个唯一的顺序id ...在创建它时将它设置在选项中并存储在一个对象中......比如

mapMarkers = {};
mapMarkers[currentIndex] = L.marker([35.2,25.4],{my_seq_id:currentIndex};
markerLayer.addLayer(mapMarkers[currentIndex]);
currentIndex++;

并为每个表格行设置与data-myseqid(或任何你想要的)相同的顺序ID ...

然后通过一个统一的位置代理这两个操作(映射点击和表格点击)。然后您可以轻松地将更多处理程序绑定到此。

function doMapAction(id) {
    mapMarkers[id].openPopup()
    //plus whatever else you need to do after a click
}

markerLayer.on('click', function(layer) {
    doMapAction(layer.options.my_seq_id);
})
$(document).on('click','td button', function(ev) {
    doMapAction(parseInt($(ev.target).data('myseqid')));
})

答案 1 :(得分:1)

  

如何模拟Mapbox markerLayer上的点击

请注意,Mapbox标记也是Leaflet标记。因此,您可以使用Leaflet事件方法,尤其是markerLayer.fireEvent("click")

至于检索正确的标记以触发事件,并可能简化算法,请参考snkashis'的好答案。