Openlayers中layer介绍

Posted liguangsunls

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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‘,
				  ‘http://vmap0.tiles.osgeo.org/wms/vmap0‘,
				  {layers:‘basic‘},
				  {isBaseLayer:true}
				  );
			  var wmsLayersLabels = new OpenLayers.Layer.WMS(
				   ‘Location Labels‘,
				   ‘http://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 onload=‘init();‘>
      <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?)该參数指定服务端的设置,这些设置影响WMSserver返回的地图图像。当Openlayers向地图server发出请求时,这些键:值对将会附加到openlayers生成的URL地址之后。

    可能的键:值对有:

      layers:指定WMSserver须要返回的图层

      transparent:为标注图层等图层请求透明的图片

      srs:指定投影类型

Options:

      包括clientOpenlaysers图层对象的属性,全部的图层都具有这些參数。主要有:isBaseLayer,opacity,visibility,因为图层属性是client的设置,因此WMSserver(或其它server)不知道这些參数。

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‘,
				  ‘http://vmap0.tiles.osgeo.org/wms/vmap0‘,
				  {layers:‘basic‘},
				  {isBaseLayer:true}
				  );
			  var wmsLayersLabels = new OpenLayers.Layer.WMS(
				   ‘Location Labels‘,
				   ‘http://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‘,
					‘http://labs.metacarta.com/wms/vmap0‘,
					{layers:‘stateboundary‘,
					transparent:true},
					{
					minScale:13841995.078125}
				);
				wmsWaterDepth = new OpenLayers.Layer.WMS(
					‘Water Depth‘,
					‘http://labs.metacarta.com/wms/vmap0‘,
					{layers:‘depthcontour‘,
					transparent:true},
					{opacity:0.8}
				);
				wmsRoads = new OpenLayers.Layer.WMS(
				‘Roads‘,
				‘http://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 onload=‘init();‘>
      <div id=‘map_element‘ style=‘width:800; height: 600px;‘>
      </div>
  </body>
  </html>

程序运行后的结果为:

技术分享

      






以上是关于Openlayers中layer介绍的主要内容,如果未能解决你的问题,请参考以下文章

openlayers-热地图加载(完整版及代码)

OpenLayers绘制图形

创建 openlayers 文本

OpenLayers绘制图形

Openlayers示例12 | Change Tile Layer Style

OpenLayers 4 ol.source 详解