重新绘制地图时,是否可以保持弹出窗口打开



我有一个完美工作的地图,这并不是问题,但当我在弹出触发的情况下切换图层时,弹出窗口消失了,我想知道当加载另一个图层时,它是否有可能保持打开。或者获取点击坐标以再次调用,诸如此类。这是我调用弹出窗口的代码的一部分;

var container = document.getElementById('popup');
var content = document.getElementById('popup-content');
var closer = document.getElementById('popup-closer');

/**
* Create an overlay to anchor the popup to the map.
*/
var overlay = new ol.Overlay({
element: container,
autoPan: true,
autoPanAnimation: {
duration: 250
}
});
let zoomMapInit = 5;
if ($(document).width() <= 768) {
zoomMapInit = 4;
chartWidth = 200, chartHeight = 100;
showZoomMap = false;
}
const view = new ol.View({
projection: 'EPSG:4326',
center: [-54.672122, -13.746438],
zoom: zoomMapInit
});
const map = new ol.Map({
target: 'map',
layers: [new ol.layer.Tile({
source: new ol.source.OSM({
attributions: [
'&copy; <a href="http://www.i3gs.org/" target="_blank">i3GS</a> | ',
ol.source.OSM.ATTRIBUTION
],
})
}), switcherLayersGroupBiomas, switcherLayersGroupCamadas],
overlays: [overlay],
controls: ol.control.defaults({
zoom: showZoomMap,
}),
view: view
});
const layerSwitcher = new ol.control.LayerSwitcher({
tipLabel: 'Layers',
groupSelectStyle: 'children',
collapse: false,
});
map.addControl(layerSwitcher);
addNewUniqueLayer(geoserverGetLayerHome());
map.on('singleclick', function (event) {
overlay.setPosition(undefined);
currentYearValue = '';
insertChart(event);
cleanMunicipio();
$("#map").click();
});

我设法解决了这个问题,但这不是最好的方法,我相信这甚至不是最专业的方法。我创建了一个函数,该函数将在每次单击时接收保存在变量中的lat和long。这在当时是一个更好的解决方案,但我相信它可以随着时间的推移而改进。不要忘记在重新绘制图层后调用此函数。


var new_coordinate;
function updatePopup() {
if (new_coordinate != undefined) {
insertChart(new_coordinate);
} else {
true
}
}
map.on('singleclick', function (event) {
overlay.setPosition(undefined);
currentYearValue = '';
insertChart(event.coordinate);
cleanMunicipio();
new_coordinate = event.coordinate;
});

最新更新