这一次只适用于一个标记,但是我需要更多的标记:
marker.on('mouseover', function(e){
marker.openPopup();
});
#1 楼
如果您需要显示标记的弹出窗口,则可以使用标记bindPopup方法。,您便有了更多控制权,它将自动绑定到标记。下面的示例可以在用户将鼠标悬停在上面时显示弹出窗口,而在用户将鼠标悬停在弹出窗口时将其隐藏:
当您将鼠标悬停在弹出窗口本身上时,因此您可能需要在其中调整弹出锚点(请参见弹出窗口设置),以使弹出窗口距离标记本身更远,以免消失不易。
评论
悬停在弹出窗口时保持可见的解决方案-jsfiddle.net/sowelie/3JbNY
– rob-gordon
16年4月4日在14:49
#2 楼
如果您使用Leaflet 1.3.x,则工具提示绑定是内置方法。http://leafletjs.com/reference-1.3.0.html#tooltip
var polyline = L.polyline([[StartLat, StartLong],[EndLat,EndLong]]).addTo(this.map);
polyline.bindTooltip("tool tip is bound");
评论
太棒了完全避免了上述的“鼠标悬停” /“鼠标悬停”抖动。
–尼克K9
19年6月10日在20:10
bindTooltip()也可用于单个标记。
– S. Baggy
19年9月12日在6:19
#3 楼
这将有助于在鼠标悬停时显示弹出窗口
marker.on('mouseover', function(e) {
//open popup;
var popup = L.popup()
.setLatLng(e.latlng)
.setContent('Popup')
.openOn(map);
});
评论
谢谢!这段代码帮助我解决了与此问题无关的问题。
–阿巴菲
17年1月6日在2:01
#4 楼
这不是特定于Leaflet的问题,而是Javascript问题。将标记存储在集合中,然后将所有标记都绑定到
openPopup
和'mouseover'
事件。例如,使用数组:
var markers = getAllMarkers(); // up to you to implement, say it returns an Array<L.Marker>
for (var i = 0; i < markers.length; i++) {
var currentMarker = markers[i];
currentMarker.on('mouseover', currentMarker.openPopup.bind(currentMarker));
}
评论
在评论中而不是在答案中发表意见:我认为,悬停打开的弹出窗口在地图上的可用性值得怀疑,根据定义,光标在其中徘徊很多。您是否真的希望用户在标记之间进行寻路,以最终达到他们想要的标记,但是每当他们尝试将光标移向目标时,它们总是隐藏在弹出窗口之后?
– MattiSG
2012年8月23日在9:34
不幸的是,这不是我的选择。我存储的标记像带有Leaflet MarkerCluster的新L.MarkerClusterGroup:var markers = new L.MarkerClusterGroup();您为之编写的代码也可以吗?
–againstflow
2012年8月23日14:03
@againstflow Erm,那么您应该更改您的问题。您不仅要问悬停时打开标记,还问如何在L.MarkerCluster实例中对标记进行迭代……我的答案清楚地显示了如何在悬停时绑定弹出窗口集合。如果您想知道如何从集群中获取集合,那就别无所求了。
– MattiSG
2012年8月24日14:40
#5 楼
就拥有“可用于更多标记”的解决方案而言,这就是我对从GeoJSON加载的点数据的每一层所做的操作:var layerPopup;
featureLayer.on('mouseover', function(e){
var coordinates = e.layer.feature.geometry.coordinates;
var swapped_coordinates = [coordinates[1], coordinates[0]]; //Swap Lat and Lng
if (map) {
layerPopup = L.popup()
.setLatLng(swapped_coordinates)
.setContent('Popup for feature #'+e.layer.feature.properties.id)
.openOn(map);
}
});
featureLayer.on('mouseout', function (e) {
if (layerPopup && map) {
map.closePopup(layerPopup);
layerPopup = null;
}
});
评论
只是好奇,FeatureLayer是什么类型的对象?看起来这是一个很好的解决方案。
–贝hr
15年8月25日在13:40
评论
如果您有两个问题,请打开两个线程,以便分别回答。