1
我有一個非常基本的小冊子地圖,使用leaflet-panel-layers
創建漂亮的圖層控件。我有兩個功能來創建我的圖層和覆蓋。我的數據是在外部geoJSON-文件什麼似乎是我的問題,因爲傳單不提供任何東西來獲得外部geoJSON。我也使用proj4leaflet
庫來使用我的json中給出的投影。 因此谷歌告訴我使用關於哪個我不知道任何東西的ajax。我複製粘貼這樣的事情:處理小冊子地圖中的阿賈克斯請求
function getOverlays(){
var url = 'myServerUrl';
overlays = [];
$.ajax({
url: url,
dataType: 'jsonp',
jsonpCallback: 'getJson',
success: function(response) {
overlays.push({
name: "Something",
layer: L.Proj.geoJson(response, {
...
}
});
}
});
return overlays;
}
我的地圖是建立這樣的:
var map = L.map('map', {
layers: layers[0].layer
});
var layers = getBaseLayers();
var overlays = getOverlays();
var panelLayers = new L.Control.PanelLayers(layers,overlays);
map.addControl(panelLayers);
如果我想層直接添加到地圖這實際上工作得很好。但在我的情況下,異步請求似乎已準備好我的圖層切換器添加到我的地圖,所以圖層不會出現在那裏。 有沒有什麼辦法可以解決這個問題,而不會潛入回調?
謝謝,對於一層工作正常 - 如果我有更大數量的圖層,讓我們說在for循環。如何在** last **圖層完成後初始化地圖? – Krxldfx
我最好看看你的代碼。無論如何,以同樣的方式做 - 創建一個標誌,指示一個加載的所有圖層(例如,如果你的循環完成),並呼叫回調,如果你的標誌變爲'真' –
謝謝,現在它按我的預期工作。 – Krxldfx