閱讀599 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Openlayers中layer介紹

1.base layers & overlay layers

base layer:最底層的layer,其他的圖層是在他之上,最先加入的圖層默認作為base layer.

overlay layer:不是base layer的layer就是overlay layer

2.使用layer的步驟:

  1.   創建layer
  2. 把layer添加到Map中,可以用map.addlayer(layer)或map.addLayers([layer1,layer2,.....]
3.樣例:創建一個多圖層的地圖

 <!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

  上一篇:go android儀表統計柱狀等圖標的繪製(開源庫XCL-Charts)
  下一篇:go Swift靜態屬性