Javascript 如何向地图添加自定义关联菜单

Javascript 如何向地图添加自定义关联菜单,javascript,html,openlayers,Javascript,Html,Openlayers,我想连接它:与此:和添加到上下文菜单的一个选项,以添加一个弹出窗口 var popup = new ol.Overlay.Popup(); map.addOverlay(popup); 请帮助1)在HTML代码中添加一个弹出窗口div 2) 使用HTML弹出窗口添加一个覆盖 new ol.Overlay(({ element: document.getElementById('popup'), })); mapTiles.addOverlay(overlay); 3) 使用外

我想连接它:与此:和添加到上下文菜单的一个选项,以添加一个弹出窗口

var popup = new ol.Overlay.Popup();
map.addOverlay(popup);
请帮助

1)在HTML代码中添加一个
弹出窗口
div

2) 使用HTML
弹出窗口添加一个
覆盖

new ol.Overlay(({
    element: document.getElementById('popup'),    
}));
mapTiles.addOverlay(overlay);
3) 使用外部库添加一个
contextMenu
https://unpkg.com/ol3-contextmenu

这里有工作

proj4.defs('EPSG:2180',“+proj=tmerc+lat_0=0+lon_0=19+k=0.9993+x_0=500000+y_0=-5300000+ellps=GRS80+units=m+no_defs”);
var p=ol.proj.get('EPSG:2180');
var mapTiles=新ol.Map({
目标:“地图”,
渲染器:“画布”,
图层:[
新ol.layer.Tile({
来源:新ol.source.TileWMS({
网址:'http://mapy.geoportal.gov.pl/wss/service/img/guest/ORTO/MapServer/WMSServer',
参数:{
“图层”:“光栅”,
‘CRS’:‘EPSG:2180’,
“版本”:“1.1.1”
}
}),
isBaseLayer:是的,
投影:p
})
],
视图:新ol.view({
中心:ol.proj.transform([19,52],'EPSG:4326','EPSG:2180'),
缩放:6,
投影:p
})
});
变量上下文菜单项=[{
文本:“添加弹出窗口”,
类名:“粗体”,
回调:弹出
},
“-”//这是一个分隔符
];
var contextmenu=新建contextmenu({
宽度:180,
项目:上下文菜单项
});
addControl(上下文菜单);
var content=document.getElementById('popup-content');
var closer=document.getElementById('popup-closer');
closer.onclick=函数(){
覆盖设置位置(未定义);
closer.blur();
返回false;
};
功能弹出窗口(obj){
overlay=新的ol.overlay(/**@type{olx.OverlayOptions}*/({
元素:document.getElementById('popup'),
自动扫描:是的,
自动规划:{
持续时间:250
}
}));
mapTiles.addOverlay(覆盖);
content.innerHTML='您单击此处:

'+obj.coordinate+'
'; 叠加设置位置(目标坐标); }
.ol弹出窗口{
位置:绝对位置;
背景色:白色;
-webkit过滤器:投影(0 1px4pRGBA(0,0,0,0.2));
滤镜:阴影(0.1px4pRGBA(0,0,0,0.2));
填充:15px;
边界半径:10px;
边框:1px实心#中交;
底部:12px;
左:-50px;
}
.ol弹出窗口:之后,
.ol弹出窗口:之前{
最高:100%;
边框:实心透明;
内容:“;
身高:0;
宽度:0;
位置:绝对位置;
指针事件:无;
}
.ol弹出窗口:在{
边框顶色:白色;
边框宽度:10px;
左:48px;
左边距:-10px;
}
.ol弹出窗口:之前{
边框顶色:#中交;
边框宽度:11px;
左:48px;
左边距:-11px;
}
.ol弹出式关闭器{
文字装饰:无;
位置:绝对位置;
顶部:2个;
右:8px;
}
.ol弹出式关闭器:之后{
内容:“✖";
}

1)在HTML代码中添加一个
弹出窗口
div

2) 使用HTML
弹出窗口添加一个
覆盖

new ol.Overlay(({
    element: document.getElementById('popup'),    
}));
mapTiles.addOverlay(overlay);
3) 使用外部库添加一个
contextMenu
https://unpkg.com/ol3-contextmenu

这里有工作

proj4.defs('EPSG:2180',“+proj=tmerc+lat_0=0+lon_0=19+k=0.9993+x_0=500000+y_0=-5300000+ellps=GRS80+units=m+no_defs”);
var p=ol.proj.get('EPSG:2180');
var mapTiles=新ol.Map({
目标:“地图”,
渲染器:“画布”,
图层:[
新ol.layer.Tile({
来源:新ol.source.TileWMS({
网址:'http://mapy.geoportal.gov.pl/wss/service/img/guest/ORTO/MapServer/WMSServer',
参数:{
“图层”:“光栅”,
‘CRS’:‘EPSG:2180’,
“版本”:“1.1.1”
}
}),
isBaseLayer:是的,
投影:p
})
],
视图:新ol.view({
中心:ol.proj.transform([19,52],'EPSG:4326','EPSG:2180'),
缩放:6,
投影:p
})
});
变量上下文菜单项=[{
文本:“添加弹出窗口”,
类名:“粗体”,
回调:弹出
},
“-”//这是一个分隔符
];
var contextmenu=新建contextmenu({
宽度:180,
项目:上下文菜单项
});
addControl(上下文菜单);
var content=document.getElementById('popup-content');
var closer=document.getElementById('popup-closer');
closer.onclick=函数(){
覆盖设置位置(未定义);
closer.blur();
返回false;
};
功能弹出窗口(obj){
overlay=新的ol.overlay(/**@type{olx.OverlayOptions}*/({
元素:document.getElementById('popup'),
自动扫描:是的,
自动规划:{
持续时间:250
}
}));
mapTiles.addOverlay(覆盖);
content.innerHTML='您单击此处:

'+obj.coordinate+'
'; 叠加设置位置(目标坐标); }
.ol弹出窗口{
位置:绝对位置;
背景色:白色;
-webkit过滤器:投影(0 1px4pRGBA(0,0,0,0.2));
滤镜:阴影(0.1px4pRGBA(0,0,0,0.2));
填充:15px;
边界半径:10px;
边框:1px实心#中交;
底部:12px;
左:-50px;
}
.ol弹出窗口:之后,
.ol弹出窗口:之前{
最高:100%;
边框:实心透明;
内容:“;
身高:0;
宽度:0;
位置:绝对位置;
指针事件:无;
}
.ol弹出窗口:在{
边框顶色:白色;
边框宽度:10px;
左:48px;
左边距:-10px;
}
.ol弹出窗口:之前{
边框顶色:#中交;
边框宽度:11px;
左:48px;
左边距:-11px;
}
.ol弹出式关闭器{
文字装饰:无;
位置:绝对位置;
顶部:2个;
右:8px;
}
.ol弹出式关闭器:之后{
内容:“✖";
}