Openlayers中layer介紹
1.base layers & overlay layers
base layer:最底層的layer,其他的圖層是在他之上,最先加入的圖層默認作為base layer.
overlay layer:不是base layer的layer就是overlay layer
2.使用layer的步驟:
- 創建layer
- 把layer添加到Map中,可以用map.addlayer(layer)或map.addLayers([layer1,layer2,.....]
<!DOCTYPE html> <html lang='zh-cn'> <head> <meta charset='utf-8' /> <title>Base Layer Test</title> <script type='text/javascript' src='OpenLayers.js'></script> <script type='text/javascript'> var map; function init() { map = new OpenLayers.Map('map_element',{}); var wmsLayerMap = new OpenLayers.Layer.WMS( 'Base layer', 'https://vmap0.tiles.osgeo.org/wms/vmap0', {layers:'basic'}, {isBaseLayer:true} ); var wmsLayersLabels = new OpenLayers.Layer.WMS( 'Location Labels', 'https://vmap0.tiles.osgeo.org/wms/vmap0', {layers:'clabel,ctylabel,statelabel', transparent:true}, {opacity:.5} ); map.addLayers([wmsLayerMap,wmsLayersLabels]); map.addControl(new OpenLayers.Control.LayerSwitcher({})); if(!map.getCenter()) { map.zoomToMaxExtent(); } } </script> </head> <body > <div id='map_element' style='width:800; height: 600px;'> </div> </body> </html>
運行代碼,得到如下結果:
4.Layer.WMS類解析
首先看一下Layer.WMS類的參數:
參數 | 描述 |
name | {string},表示圖層名稱 |
url | {string},表示WMS的基地址 |
params | {object},代表獲取地圖的查詢字符串及參數取值 |
options | {object},添加在圖層上的其他選項的哈希表 |
Name參數:
Layer.WMS類的第一個參數,表示圖層名稱,string類型。圖層名稱要放在引用裏麵用以代表它是string類型。名稱是自己任意取的。如果在地圖中添加了圖層切換控件,圖層名諱出現在該控件中。記住在引用之後有一個逗號。
URL參數:
代表網絡地圖服務的URL地址
Params參數:
是一個包含鍵:值對的匿名對象(object?)該參數指定服務端的設置,這些設置影響WMS服務器返回的地圖圖像。當Openlayers向地圖服務器發出請求時,這些鍵:值對將會附加到openlayers生成的URL地址之後。
可能的鍵:值對有:
layers:指定WMS服務器需要返回的圖層
transparent:為標注圖層等圖層請求透明的圖片
srs:指定投影類型
Options:
包含客戶端Openlaysers圖層對象的屬性,所有的圖層都具有這些參數,主要有:isBaseLayer,opacity,visibility,由於圖層屬性是客戶端的設置,因此WMS服務器(或其他服務器)不知道這些參數。
5.配置圖層參數示例i:
<!DOCTYPE html> <html lang='zh-cn'> <head> <meta charset='utf-8' /> <title>Layer Test</title> <script type='text/javascript' src='OpenLayers.js'></script> <script type='text/javascript'> var map; function init() { map = new OpenLayers.Map('map_element',{}); var wmsLayerMap = new OpenLayers.Layer.WMS( 'Base layer', 'https://vmap0.tiles.osgeo.org/wms/vmap0', {layers:'basic'}, {isBaseLayer:true} ); var wmsLayersLabels = new OpenLayers.Layer.WMS( 'Location Labels', 'https://vmap0.tiles.osgeo.org/wms/vmap0', {layers:'clabel,ctylabel,statelabel', transparent:true}, {visibility:false,opacity:.5} ); var wmsStateLines = new OpenLayers.Layer.WMS( 'State Line Layer', 'https://labs.metacarta.com/wms/vmap0', {layers:'stateboundary', transparent:true}, { minScale:13841995.078125} ); wmsWaterDepth = new OpenLayers.Layer.WMS( 'Water Depth', 'https://labs.metacarta.com/wms/vmap0', {layers:'depthcontour', transparent:true}, {opacity:0.8} ); wmsRoads = new OpenLayers.Layer.WMS( 'Roads', 'https://labs.metacarta.com/wms/vmap0', {layers:'priroad,secroad,rail', transparent:true}, {transistionEffect:'resize'} ); map.addLayers([wmsLayerMap,wmsLayersLabels,wmsStateLines,wmsWaterDepth,wmsRoads]); map.addControl(new OpenLayers.Control.LayerSwitcher({})); if(!map.getCenter()) { map.zoomToMaxExtent(); } } </script> </head> <body > <div id='map_element' style='width:800; height: 600px;'> </div> </body> </html>
程序執行後的結果為:
最後更新:2017-04-03 05:40:10