2017-05-10 48 views
0

我需要動態添加額外圖層。該圖層也需要在圖層菜單中可見。我如何解決這個問題?GUIDE4YOU - 如何添加圖層並使其在圖層菜單中可見

的更具體我有一個例子:

問題#1:不顯示在地圖上層。我錯了什麼?沒有javascript錯誤。

問題2:如何在layermenu上添加圖層?

createG4U('#g4u-map', 'conf/client.commented.json', 'conf/layers.commented.json').then(function (map) { 
    map.asSoonAs('ready', true, function() { 

     var openSeaMap_layer = new ol.layer.Tile({ 
      title: 'OpenSeaMap', 
      name: 'OpenSeaMap', 
      code: 'OpenSeaMap', 
      datalayer: 'N', 
      source: new ol.source.OSM({ 
       crossOrigin: null, 
       url: 'http://t1.openseamap.org/seamark/{z}/{x}/{y}.png' 
      }) 
     }); 

     alert('Visibility: ' + openSeaMap_layer.getVisible()); 

     map.get('api').addLayer(openSeaMap_layer); 
     }); 
}); 

提前感謝!

親切的問候,

山姆

回答

0

你有兩個選擇,以實現這一目標,立足於不同的方法來創建圖層。

第一:如果您喜歡使用api函數,則可以傳遞與layerConfig.json文件中的對象相同的layerConfigObjects。 (他們在這裏描述:https://github.com/KlausBenndorf/guide4you/blob/31e118c8f4bc5490dec92d4a03bc53fff08258fd/src/configurators/LayerFactory.js#L37)。

可用的API函數addBaseLayer(底層其中停用彼此,出現在layerselector映射),addFeatureLayer(在baselayers的頂層,可以結合,出現在layerselector)和addFixedFeatureLayer(如FeatureLayers,但總是可見並且它們不會出現在圖層選擇器中)。 (順便說一句,addLayer不是一個API函數,應該拋出一個javascript錯誤)(你可以看看所有的API方法https://github.com/KlausBenndorf/guide4you/blob/master/src/API.js

這些函數對應於直接在layerConfig中添加相同的對象。

另一種方式做,這是創建層作爲的OpenLayers層(如你在例子中所做的那樣),並直接將其添加到它應該出現在圖層組,該layergroups可以通過map.get('baseLayers'),​​,map.get('fixedFeatureLayers')訪問。這些有一個addLayer方法,你可以使用這些。

無論採用哪種方式將圖層顯示在圖層選擇器中,您必須調用map.get('UIConfigurator').configureUI()來更新UI。

0

謝謝Simon!

我找到了與下面的代碼工作:

createG4U('#g4u-map', 'conf/client.commented.json', 'conf/layers.commented.json').then(function (map) { map.asSoonAs('ready', true, function() { var openSeaMap_layer = { "id": "f0", "title": { "en": "OpenSeaMap", "de": "OpenSeaMap" }, "type": "OSM", "source": { "url": " http://t1.openseamap.org/seamark/ {z}/{x}/{y}.png", "crossOrigin": null, "attribution": { "en": "© http://www.openseamap.org/\" target=\"_blank\">OpenSeaMap contributors", "de": "© http://www.openseamap.org/\" target=\"_blank\">OpenSeaMap Mitwirkende" } }, "visible": true }; map.get('api').addFeatureLayer(openSeaMap_layer); //Make the layer visible in the layermenu map.get('UIConfigurator').configureUI(); }); });

相關問題