我使用OpenLayers 3.9繪圖功能來創建圖層並將它們保存在PostgreSQL數據庫中,並使用geoserver發佈它們,以便我可以使用WMS顯示保存的圖層。保存繪製圖層並更新圖層切換器而無需重新加載頁面
每當加載地圖頁面時,我使用一個運行循環並定義所有現有圖層(如drw1,drw2,...)的php腳本生成以下JavaScript文件,以便從geoserver獲取圖層並使用ol3-layerswitcher
列出所有加載的圖層。
var drw1 = new ol.layer.Tile({
title: 'draw_test_1',
source: new ol.source.TileWMS(({
url: 'http://localhost:8080/geoserver/TEST/wms',
params:{
'LAYERS': 'draw_test_1',
'TILED': true
},
serverType: 'geoserver'
})),
});
目前,我刷新每當一個新層,保存,這樣的js文件被更新,新層將被添加和被顯示在layerswitcher地圖頁面。
我想保存圖層並刷新圖層切換器而不重新加載地圖。我嘗試使用ajax保存圖層並在後臺更新js文件並再次添加更新後的js文件。
<script>
$('#savelayer').click(function() {
$.ajax({
type: 'POST',
url: 'savelyr.php',
data: 'slyrname='+$('#slyrname').val()+'&getdrawn='+$('#getdrawn').val(),
success: function(msg) {
console.log(msg);
}
});
$.ajax({
url: 'maplayers.php',
success: function() {
var s1 = document.createElement("script");
s1.src = "src/ol/map.js";
s1.innerHTML = null;
document.getElementById("scripts").innerHTML = "";
document.getElementById("scripts").appendChild(s1);
console.log("Success 2");
}
});
});
</script>
JS文件更新,並且被添加到地圖頁面,但我不知道如何更新層切換到顯示在列表中的新層。我相信ol3-layerswitcher中的renderPanel()函數會在每次關閉並打開時自動更新列表。但它似乎並不奏效。
所以我認爲問題是我在保存後添加js文件的方式。有人能讓我知道問題出在哪裏,或者我需要做什麼才能在不重新加載頁面的情況下更新圖層切換器?