整理转自:http://hi.baidu.com/lixuweiok/item/c406a4e6a6d390e7fa42ba4b

本章我认为是这本书的真正开端,终于开始讲一些有意思的东西了。。

在这一章中我们将要学到

什么是OpenLayers中的Layer(图层)

基层和覆盖层之间的区别

学习Layers对象,以及对象上的属性

学习WMS Layer类

了解Layer对象描述的属性

讲解其他的Layer类

讲解Layer中的方法

什么是Layer

书上有个例子,说如果我们有两个透明的玻璃板,一个板子上用绿色的线描述一个地方的自行车路线,而另一个板子用蓝色的板子来描述汽车

可以行驶的路线,那么当我们将两个板子和在一起,我们就知道这做城市那些地方可以骑自行车,那些地方可以行驶汽车,那么这两个板子我们

就可以认为是Map上的Layer,也就是图层的概念。

至于在OpenLayers中,这个javascript框架拥有很多的Layer类,当我们需要请求WMS Map服务时,使用WMS layer类,当我门使用Google Map时,就使用Layer.google 类。

最后把层添加到Map上,理论上你相加多少层都行,但是考虑到性能的问题,还是加适当的层,这关键取决你电脑的性能。

BaseLayer

我们需要在一个地图上,标示一个基础图层,而别的图层都覆盖到他的上方,默认的情况下第一个添加到Map对象中的Layer,是BaseLayer,也可使用

isBaseLayer属性指定。

需要注意是在一个Map中,只能有一个BaseLayer.但是可以有很多的覆盖层。

Overlay Layers(我们刚提到的覆盖层)

一般称不是基层的所有图层都叫做覆盖层,唯一的区别就是顺序,添加的早的永远在下面。

来我们试着创建一个多层的Map,文件结构不变

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Layer in OpenLayers</title>
<script type="text/javascript" src="OpenLayers.js"></script>
<script type="text/javascript">
var map;
function initMap(){
// 创建Map
map = new OpenLayers.Map('map',{});
//创建BaseLayer,并明确的在初始化时指出来. isBaseLayer:true
var baseLayer = new OpenLayers.Layer.WMS(
'basic layer',
'http://vmap0.tiles.osgeo.org/wms/vmap0',
{layers:'basic'},
{isBaseLayer:true}
);
var wms_layer_labels = new OpenLayers.Layer.WMS(
'Location Labels',
'http://vmap0.tiles.osgeo.org/wms/vmap0',
{layers:'clabel,ctylabel,statelabel',transparent:true},
{opacity:.5}
);
/*
* 向map中添加Layers,这里我们不在使用前两章中的addLayer方法,
* 需要注意的是这个方法的参数,没错是Layer对象的数组
*/
map.addLayers([baseLayer,wms_layer_labels]);
/**
* 现在,我们手动的添加地图的第一控件 Layer Switcher,图层选择器.
* 其中参数也有个匿名对象,不知道要什么参数,或者是继承来的
*/
map.addControl(new OpenLayers.Control.LayerSwitcher({}));
/**
* 最后依然需要设置,地图显示区域 ,如果没有什么特殊的要求,我们可以使用前两章
* 的方法map.zoomToMaxExtent();
* 这里我把地图显示到河北 ,使用坐标和缩放等级的方法,缩放到河北大概在lon 116 lat 39左右
* //lon 经度 lat 纬度
* map.setCenter(new OpenLayers.LonLat(-116,56));
* map.zoomTo(5);
* 或者 map.zoomToExent(new OpenLayers.Bounds([minX,minY,maxX,maxY]));//设置了一个矩形用于显示,
*/
map.setCenter(new OpenLayers.LonLat(116,39));
map.zoomTo(7); }
</script>
</head>
<body onload="initMap()">
<div id="map" style="width: 500px;height: 500px"></div>
</body>
</html>
 

显示效果

我们可以使用图层选择器来完成覆盖层的显示。值得注意的是我们虽然看到图层显示器里面虽然只显示两个图层,但这只是OpenLayers的概念,

实际上他使用了server端4个图层。大家尝试可以使用FireBug观察和检查代码。

OpenLayers中的Layer概念和实践--Openlayers调用WMS服务的更多相关文章

  1. OpenLayers中的球面墨卡托投影

    最近看OpenLayers,研究到地图投影时找到官方的文档,就翻译了一下,由于英文能力差,翻译不好的地方,请看原文 原文地址:http://docs.openlayers.org/library/sp ...

  2. Openlayers中layer介绍

    1.base layers & overlay layers base layer:最底层的layer,其它的图层是在他之上,最先增加的图层默认作为base layer. overlay la ...

  3. OpenLayers中的图层

    OpenLayers有多个不同的图层类,每一个都可以连接到不同的地图服务器.例如通过Layer.WMS类可以连接到WMS地图服务器,通过Layer.Google类可以连接到谷歌地图服务器.OpenLa ...

  4. OpenLayers中的图层(转载)

    作者:田念明出处:http://www.cnblogs.com/nianming/本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法 ...

  5. openlayers中的自定制工具栏,包含画点、线、面

    先是在projectquantan-master这个项目中有一个EditingPanel这个工具条,也挺好的,功能挺全的,但是有一点就是只有画多边形的一个按钮,没有point和path俩个的,所以就想 ...

  6. openlayers中单击获取要素

    openlayers中单击获取要素 分类专栏: GIS 总结 OpenLayers   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接: ...

  7. OpenLayers中地图缩放级别的设置方法

    来源于:http://www.cnblogs.com/sailheart/archive/2011/03/15/1984519.html 一.概述 在OpenLayers中,地图必须具有一个缩放级别的 ...

  8. openlayers中实现自定冒泡的效果

    自定义的Openlayers.Popup.FreshCloud继承自Openlayers.Popup.Framed,实现了比较简洁的冒泡效果,详细代码如下 /** * Class: OpenLayer ...

  9. OpenLayers 6 学习笔记2 WMS服务避坑记录

    心血来潮,花1小时安装软件写代码+复习api,顺便熟悉一波wms 再次强化认知了wms获取要素的能力没有wfs强,有待考究 原文链接(转载请声明@秋意正寒  博客园/知乎/B站/csdn/小专栏):h ...

随机推荐

  1. PAT (Basic Level) Practise (中文)1027. 打印沙漏(20)

    1027. 打印沙漏(20) 时间限制 200 ms 内存限制 32000 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求你写个程序把给定的符号打印成 ...

  2. 七、Android学习笔记_JNI hello world

    1.需要准备的工具,eclipse,cdt(c++)插件,cygwin(unix)和 android ndk. 在cygwin的etc目录下将ndk的路径引入到profile文件中,可以在cygwin ...

  3. 人情世故&潜规则

    大凡成功的牛人,无一例外都明白这一点.他们读懂了社会的本质和人际交往的潜规则,知道对方需要什么,知道对方脑子里在想什么.你几乎看不见他奔波劳碌,但是在不动声色中,他就已经实现人生目标.他们成功的密码是 ...

  4. MVC4 图片上传

    新增 new { enctype = "multipart/form-data" } 这个必须要有 @using (Html.BeginForm(Html.BeginForm(&q ...

  5. IOS自定义场景切换动画。

    IOS中我们可以通过Storyborad以及segue来实现我们自己的场景切换动画,新建项目使用Single View Application模板并取名为MyCustomSegue. 使用storyb ...

  6. 基于python yield机制的异步操作同步化编程模型

    又一个milestone即将结束,有了些许的时间总结研发过程中的点滴心得,今天总结下如何在编写python代码时对异步操作进行同步化模拟,从而提高代码的可读性和可扩展性. 游戏引擎一般都采用分布式框架 ...

  7. 对于javascript的词法作用域的思考

    曾经看到过这样一段有意思的程序: var a=3; function scopeTest(){ console.log(a); var a=2; console.log(a); } scopeTest ...

  8. Codevs 1009 产生数

    题目描述 Description 给出一个整数 n(n<10^30) 和 k 个变换规则(k<=15). 规则: 一位数可变换成另一个一位数: 规则的右部不能为零. 例如:n=234.有规 ...

  9. 试写Python内建函数range()

    还没查阅源码,先试着练手 class my_range(object): def __init__(self, *args): if not args: raise TypeError, 'range ...

  10. 不同浏览器的DNS超时重发机制(一)

    一.Chrome浏览器(37.0.2062.124 m) 1.在Win7环境下,DNS超时重发的时间间隔为:2s.2s.2s.2s(在这个时刻重复发2个DNS请求).2s.4s,再经过大约14s左右, ...