Leaflet Js:openPopup 不会显示
Leaflet Js: openPopup won't show
我已经阅读了一段时间,但仍然没有找到解决我的问题的方法。
我在地图中加载了一个 GeoJson。我使用标记簇对所有特征进行分组。我将弹出窗口绑定到这些标记并且工作正常:弹出窗口在点击时显示,没问题。
我构建了一个自定义控制区域,其中我有两个输入,以根据价格(最小值和最大值)过滤我的 geojson 数据;然后我在下面加载一个结果列表,它也可以正常工作,当我将鼠标悬停在标记上时,我可以突出显示结果列表的项目。
我的问题:当我点击结果列表中与之对应的项目时,我想在地图中打开标记的弹出窗口。但是弹窗不显示。
地图平移似乎没问题,因为地图正在向标记重新居中。甚至加载了弹出数据(我可以用 console.log(layer.getPopup())
看到)。
但是仍然没有弹窗弹出。
这是一个 jsfiddle http://jsfiddle.net/n3pkzcm7/4/。
openPopup()
调用在 _getHtmlList
函数的第 88 行。
tr.onclick = function() {
console.log(layer.getPopup());
layer.openPopup();
};
如果我将 popupopen 事件绑定到地图本身,我会补充说:
map.on('popupopen', function(){
console.log('open!!');
});
事件被触发,无论我是点击标记还是侧边栏的结果列表项。
您必须在自定义传单控制框上使用传单的 disableClickPropagation
方法。因为否则鼠标事件会传播到它下面的传单地图,这会导致弹出窗口在打开后立即关闭。
这是一个有效的 fiddle:http://jsfiddle.net/vh6do4tm/3/
但是请注意,您的解决方案仍然无法与 markercluster 插件一起很好地工作,因为当前聚集的标记(以及当前视口之外的标记)不会打开弹出窗口:http://jsfiddle.net/vh6do4tm/2/。您将不得不以不同的方式解决这个问题。
我在类似但不同的情况下发生过这种情况(我想单击一个元素以打开另一个元素的弹出窗口)。上面的答案对引导我走上正轨非常有帮助,但是 disableClickPropagation 在这种情况下不可用。
但是,底层 JavaScript 调用 event.stopPropagation()
是。所以我能够做类似的事情:
<... onclick="event.stopPropagation(); places.getLayer(1569).openPopup();">
(其中的地方是geoJSON层)
效果很好。
我已经阅读了一段时间,但仍然没有找到解决我的问题的方法。
我在地图中加载了一个 GeoJson。我使用标记簇对所有特征进行分组。我将弹出窗口绑定到这些标记并且工作正常:弹出窗口在点击时显示,没问题。
我构建了一个自定义控制区域,其中我有两个输入,以根据价格(最小值和最大值)过滤我的 geojson 数据;然后我在下面加载一个结果列表,它也可以正常工作,当我将鼠标悬停在标记上时,我可以突出显示结果列表的项目。
我的问题:当我点击结果列表中与之对应的项目时,我想在地图中打开标记的弹出窗口。但是弹窗不显示。
地图平移似乎没问题,因为地图正在向标记重新居中。甚至加载了弹出数据(我可以用 console.log(layer.getPopup())
看到)。
但是仍然没有弹窗弹出。
这是一个 jsfiddle http://jsfiddle.net/n3pkzcm7/4/。
openPopup()
调用在 _getHtmlList
函数的第 88 行。
tr.onclick = function() {
console.log(layer.getPopup());
layer.openPopup();
};
如果我将 popupopen 事件绑定到地图本身,我会补充说:
map.on('popupopen', function(){
console.log('open!!');
});
事件被触发,无论我是点击标记还是侧边栏的结果列表项。
您必须在自定义传单控制框上使用传单的 disableClickPropagation
方法。因为否则鼠标事件会传播到它下面的传单地图,这会导致弹出窗口在打开后立即关闭。
这是一个有效的 fiddle:http://jsfiddle.net/vh6do4tm/3/
但是请注意,您的解决方案仍然无法与 markercluster 插件一起很好地工作,因为当前聚集的标记(以及当前视口之外的标记)不会打开弹出窗口:http://jsfiddle.net/vh6do4tm/2/。您将不得不以不同的方式解决这个问题。
我在类似但不同的情况下发生过这种情况(我想单击一个元素以打开另一个元素的弹出窗口)。上面的答案对引导我走上正轨非常有帮助,但是 disableClickPropagation 在这种情况下不可用。
但是,底层 JavaScript 调用 event.stopPropagation()
是。所以我能够做类似的事情:
<... onclick="event.stopPropagation(); places.getLayer(1569).openPopup();">
(其中的地方是geoJSON层)
效果很好。