OpenLayers 3 中Layers的相关知识
昨天自己一遍又一遍的把API里Accessible map那个例子写下来,终于好像有熟悉一点点。找到一篇博文详细讲Layers的。整理一下贴出来(本来想在网上做笔记可以重新排版,比写在本子上要容易有结构些。奈何自己学的零零散散,结果还是乱成一团了。)
在 OpenLayers 中,图层是使用 layer 对象表示的,主要有:
热度图层(heatmaplayer)、
图片图层(imagelayer)、
切片图层(tilelayer)
矢量图层(vectorlayer) 四种类型,它们都是继承 Layer 类的
首先,OpenLayers的地图核心组成部分有:
地图(Map),对应的类是ol.Map,之前已有接触。从代码上来看,它就像是一个空壳子,感觉没做什么实事,因为具体事务都由其他组成部分处理了。但没有它,整个地图的其他组成部分就不能有效协调,组织在一起。同时对于开发者而言,它就是第一个入口,我们必须要掌握。
- 视图(View),对应的类是
ol.View,之前已有接触,控制地图显示的中心位置,范围,层级等,此处不再过多介绍。关于其详细说明参见View。 - 图层(Layer),OpenLayers 3有多种多样用于不同业务的图层,每一种图层在实现上都对应于一个类,放在包
ol.layer下面,之前已接触过的ol.layer.Tile就是其中的一种。OpenLayers 3允许多个layer重叠在一起,相互之间互不干扰,是一种图形显示和管理的有效方式。应用这种方式能有效处理地图数据来源的多样性和复杂性问题。对开发者而言,它更多的表现为组织管理的类。 - 数据源(Source),它是和图层一一对应的,OpenLayers 3也存在多种不同的数据源,每一种在实现上也对应于一个具体的类,它们都放在包
ol.source下面,之前接触过的ol.source.OSM就是其中的一种。 毫无 疑问,它是整个地图背后真正的核心。 如果没有数据,那么渲染引擎将没有任何价值。在数据技术(Data Technology)大行其道的今天,GIS引擎将需要支持各式各样的数据来源。目前ol3也确实是这样做的,已支持多种多样在线或离线的数据源;可以是静态图或者瓦片图;也可以是栅格化的或者矢量的。如果你想在地图上加载某种格式的数据,或者某种服务提供的数据,都可以优先查看一下OpenLayers 3是否已经支持了。图层和数据源是密不可分的,详情可参见Source和Layer。 - 控件(Control),它为用户提供了和地图交互的入口。 针对不同的用途,具有不同的控件。其实现类都放在包
ol.control下面,在此之前还没有具体接触过,但我们在地图上看到的放大缩小按钮就是众多控件中的一种。控件具备相同的一个特性,就是一直保持在地图的某个固定位置,不会随着地图移动而移动,也不会随着地图放大缩小而变化,一直处于地图的最上层。关于控件更详细的说明参见Control。 - 交互(Interaction),这是所有软件都具备的一个组成部分,直观地是看不见的,其实现类放在包
ol.interaction下面,之前也没具体接触过,但其实是使用到了,如果没有它,我们就没有办法直接用鼠标控制地图放大、缩小、移动。这并不仅仅存在于GIS引擎中,它存在于任何产品中。任何优秀的产品必然有着良好的交互能力,即使没有任何GIS知识,也能体会到它的作用和重要性。
layer 是一个虚基类,只用于让子类型继承和实现,自身不能实例化。主要功能是对 矢量地图数据 和 栅格地图数据的可视化表达。图层的外观,主要与数据渲染方式有关,与数据的来源关系不大。
初始化时,传入的参数有:
- brightness,亮度,默认为
0; - contrast,对比度,默认为
1; - hue,色调,默认为
0; - opacity,透明度,默认为
1,即完全透明; - saturation,饱和度,默认为
1; - source,图层的来源,如果在构造函数中没有传入相应的参数,可以调用
ol.layer.Layer#setSource方法来设置来源:layer.setSource(source); - visible,是否可见,默认为
true; - extent,图层渲染的区域,即浏览器窗口中可见的地图区域。extent 是一个矩形范围,格式是
[number, number, number, number]分别代表[left, bottom, right, top]。如果没有设置该参数,图层就不会显示; - minResolution,图层可见的最小分辨率,当图层的缩放级别小于这个分辨率时,图层就会隐藏;
- maxResolution,图层可见的最大分辨率,当图层的缩放级别等于或超过这个分辨率时,图层就会隐藏。
包含的共有方法有:
- getLayersArray( ),得到所有图层组成的数组;
- getLayerStatesArray( ),得到所有图层状态组成的数组;
- getSource( ),得到相应图层的来源;
- getSourceState( ),得到相应图层的来源状态;
- handleSourceChange_( ),处理 source 变动的函数;
- handleSourcePropertyChange_( ),处理 source 属性变动的函数;
- setSource( ),设置图层 source 属性,参数为一个 source 对象。
包含的私有方法有:
- visibleAtResolution( ),参数是 layerState 和 resolution,如果图层可见,返回 true ,如果传入了 resolution,也会比较 resolution 是否在 minResolution 和 maxResolution 之间。
先贴到这里,后续的我看明白了在来写。
OpenLayers 3 中Layers的相关知识的更多相关文章
- java中的字符串相关知识整理
字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...
- [转]java中的字符串相关知识整理
字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...
- Android中的Activity相关知识总结
一.什么是Activity? 简单理解:Activity是Android组件中最基本也是最为常见用的四大组件之一.是一个与用户交互的系统模块,一个Activity通常就是一个单独的屏幕(页面), 它上 ...
- java中数组的相关知识
1. 2.数组的命名方法 1)int[]ages=new int[5]; 2) int[]ages; ages=new int[5]; 3)int[]ags={1,2,3,4,5}; 4)int[ ...
- iOS中XML的相关知识
1.什么是XML “当 XML(扩展标记语言)于 1998 年 2 月被引入软件工业界时,它给整个行业带来了一场风暴.有史以来第一次,这个世界拥有了一种用来结构化文档和数据的通用且适应性强的格式,它不 ...
- java NIO中的Reactor相关知识汇总 (转)
一.引子 nio是java的IO框架里边十分重要的一部分内容,其最核心的就是提供了非阻塞IO的处理方式,最典型的应用场景就是处理网络连接.很多同学提起nio都能说起一二,但是细究其背后的原理.思想往往 ...
- golang中并发的相关知识
golang中done channel理解:https://segmentfault.com/a/1190000006261218 golang并发模型之使用Context:https://segme ...
- C语言中宏的相关知识
2019/04/27 16:02 1.宏的定义:宏定义就是预处理命令的一种,它允许用一个标识符来表示一个字符串.格式如下: #define name(宏名) stuff(字符串) 本质就是使用宏名去替 ...
- 《Python网络编程》学习笔记--从例子中收获的计算机网络相关知识
从之前笔记的四个程序中(http://www.cnblogs.com/take-fetter/p/8278864.html),我们可以看出分别使用了谷歌地理编码API(对URL表示地理信息查询和如何获 ...
随机推荐
- Spring配置文件详解 - applicationContext.xml文件路径
spring的配置文件applicationContext.xml的默认地址在WEB-INF下,只要在web.xml中加入代码 org.springframework.web.context.Cont ...
- linux系统下,查看端口号被哪个应用占用
netstat -tunlp 会把所有端口和所有对应的程序显示出来. 用grep管道可过滤出来需要的信息.比如,17059端口号被占用了. 第一步:netstat -tunlp | grep 1705 ...
- URL参数为url,获取不到部分参数问题
url1中的参数含有url2,在页面上获取url时发现url后面跟的参数获取不到,其实是浏览器把url2中&后的参数作为url1的参数来处理了. 如:http://www.ilcng.com/ ...
- Telnet弱口令猜解【Python脚本】
telnet 弱口令猜解脚本 测试环境:window2003.centos7 #! /usr/bin/env python # _*_ coding:utf-8 _*_ import telnetli ...
- html页面元素事件丢失
前段时间做网站包括最近用mvc做oa都发现这个奇怪现象,就是页面加载完毕后页面元素事件(比如按钮点击.复选框change)一切正常,但是当执行查询或者其他操作后页面事件丢失.具体原因暂没有时间分析,现 ...
- MySql分组函数-Group by与having理解
注意:select 后的字段,必须要么包含在group by中,要么包含在having 后的聚合函数里. 1. GROUP BY 是分组查询, 一般 GROUP BY 是和聚合函数配合使用 group ...
- 偶然翻出很久很久以前写的一款sqlmap UI,有点年头了
- 深度学习框架 Torch 7 问题笔记
深度学习框架 Torch 7 问题笔记 1. 尝试第一个 CNN 的 torch版本, 代码如下: -- We now have 5 steps left to do in training our ...
- c# List去重
1 list如果数据是值类型,比如list<int> 这种,添加linq之后就可以使用list = list.Distinct().ToList(); 2 如果是数据是引用类型,比如中间是 ...
- 其他信息: 未找到源,不过,未能搜索部分或所有事件日志。 若要创建源,您需要用于读取所有事件日志的权限以确保新的源名称是唯一的。 不可访问的日志: Security。
其他信息: 未找到源,不过,未能搜索部分或所有事件日志. 若要创建源,您需要用于读取所有事件日志的权限以确保新的源名称是唯一的. 不可访问的日志: Security. System.Diagnos ...