gpt4 book ai didi

javascript - 传单:在光标位置而不是 LineString 中心打开弹出窗口

转载 作者:行者123 更新时间:2023-11-30 08:28:27 34 4
gpt4 key购买 nike

我有一张带有 LineString 的传单 map 。

// a GeoJSON LineString
var geojson = {
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [[-101.123, 40.2500], [-101.123, 40.2503]]
}
};

// create map and add json
var map = L.map('map');
var geojsonLayer = new L.GeoJSON(geojson).addTo(map);
map.fitBounds(geojsonLayer.getBounds())

// add popup for the line
geojsonLayer.eachLayer(function (layer) {
var popup = L.popup();
popup.setContent('text');

layer.bindPopup(popup);
layer.on('click mouseover', function () {
layer.openPopup();
});
});

当我越过它时,会在 LineString 中心打开一个弹出窗口。

如何让它在光标位置打开?

这是一个简单的工作示例:http://jsfiddle.net/wuu8Lv2t/1/

最佳答案

不要让图层打开弹出窗口,而是使用 openOn(map) 设置事件坐标的位置 e.latlng

// add popup for the line
geojsonLayer.eachLayer(function (layer) {
var popup = L.popup();
popup.setContent('text');
layer.bindPopup(popup);

layer.on('mouseover', function (e) {
var popup = e.target.getPopup();
popup.setLatLng(e.latlng).openOn(map);
});

layer.on('mouseout', function(e) {
e.target.closePopup();
});

layer.on('mousemove', function (e) {
e.target.closePopup();
var popup = e.target.getPopup();
popup.setLatLng(e.latlng).openOn(map);
});
});

请注意,在您的问题中有一个错误:您不能在事件处理程序中使用变量 layer,您必须使用 e.target(参见 doc ).

关于javascript - 传单:在光标位置而不是 LineString 中心打开弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41522376/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com