OpenLayers 6 学习笔记
这个是真的学习笔记!不是教程
基于openlayers 6.x
api不太好查,就基于腾讯课堂老胡的课做记录。
openlayers与arcgis jsapi最大的不同,喜欢用setXXX/getXXX这种非常具有“java/C++”风格的封装方法来封装对象的属性,arcgis jsapi喜欢用类似于C#.NET一样的属性访问;构造时则与arcgis jsapi一样。
ol支持非常复杂的坐标系(通过proj4支持),仅支持2d,支持使用npm&webpack进行包管理,系原生sdk(arcgis jsapi基于dojo封装),ol5/6支持es6语法。
ol支持二维数据格式很多,可以是ogc规范的网络GIS数据服务,可以是独立的数据文件等;ol支持空间分析扩展,例如d3/turf/jsts。
1. 一组概念 map&view
与arcgis jsapi不同,ol的map对象占据了非常高的位置
[ol.Map]模块
- 负责数据管理(layers属性,又叫图层管理)
- 负责数据渲染(render,并由target属性绑定dom元素)
- 负责处理交互和触发事件
- 负责管理控件(controls属性)
- 负责管理叠加层(overlay属性)
在ol5中,当Map模块不足以支撑海量数据时,需要用WebGLMap模块来加速。在ol6里默认使用WebGL,不存在WebGLMap模块。
[ol.View]模块
视图的意思,负责管理页面端的视图参数:
- 缩放等级(zoom属性)
- 坐标系(projection属性)
- 中心点(center属性)
- 旋转角度(rotation属性)
- 分辨率
- 范围框
- ...
2. 数据
ol的数据由layer管理、加载。
layer(图层)是数据的容器,它负责把别处弄来的数据源(source)“翻译”成map能渲染的东西。
[ol.layer]模块
- 承载并解析数据源(source属性)
- 管理图层样式(styles属性)
- 管理图层属性(叠加顺序/透明度)
- (补充中)...
常见图层
- ol.layer.Tile
- ol.layer.Vector
- ol.layer.GeoJson
- ...(补充中)
常见数据源
- ol.source.OSM
- ...
3. 样式与制图
有了数据,当然还要给数据加点嫁妆。由第2节得知,style(样式)由图层管理。
格网、导出pdf也是制图的一部分
4. 前端交互
包括ol.interaction这个交互模块对数据进行交互,也包括前端交互的效果(跳转、限制等)
5. 坐标系转换
所有的坐标系概念、定义有关的类均位于ol.proj模块下。
其中,ol.proj.Projection类代表坐标系统本身的定义,通常使用ProjectionLike字符串来表示。ProjectionLike的意思是类似"EPSG:XXXX"的字符串,EPSG这个专有词必须大写,XXXX代表的是坐标系的WKID。
[ol.proj]模块
主要提供坐标系的转换等操作,默认是4326和3857的转换。
- proj.addCoordinateTransforms():添加地理转换方法
- proj.fromLonLat():将经纬度坐标转换到目标坐标系的坐标(默认4326到3857)
- proj.get():根据给定ProjectionLike字符串获取Projection对象
- proj.getTransform():获取地理转换方法
- proj.toLonLat():和fromLonLat是反运算
- proj.transform():转换坐标值,根据给定的原坐标系和目标坐标系,有可能需要地理转换
- proj.transformExtent():转换矩形边界框,参数同transform
[ol.proj.proj4]模块
需要引入proj4.js库,通过调用其register方法为页面注册一个ol本身没有的坐标系。
将proj4全局变量传递给register()方法后,ol即获取一个自定义坐标系。proj4全局变量通过defs()方法注册一个坐标系。
6. 细品矢量数据
可以从各种手段获取第三和第四层数据,及要素、要素对应的几何与属性数据。
7. 高级绘图与性能优化
这里肯定有WebGL和canvas,但是我不太会也不太擅长。
8. 控件与叠加层
这部分属于定制、扩展的功能
OpenLayers 6 学习笔记的更多相关文章
- OpenLayers 6 学习笔记2 WMS服务避坑记录
心血来潮,花1小时安装软件写代码+复习api,顺便熟悉一波wms 再次强化认知了wms获取要素的能力没有wfs强,有待考究 原文链接(转载请声明@秋意正寒 博客园/知乎/B站/csdn/小专栏):h ...
- JavaWeb和WebGIS学习笔记(五)——使用OpenLayers显示地图
系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...
- geodjango七日学习笔记 (7.30整理本地笔记上传到网络)
第一天进行到现在,在开端的尾巴,想起来写一个学习笔记, 开发环境已搭好,用的是pycharm 环境是本机已有的interpreter python3.7 接下来要做的是新建一个geodjango项 ...
- JavaWeb和WebGIS学习笔记(七)——MapGuide Open Source安装、配置以及MapGuide Maestro发布地图——超详细!目前最保姆级的MapGuide上手指南!
JavaWeb和WebGIS学习笔记(七)--MapGuide Open Source安装.配置以及MapGuide Maestro发布地图 超详细!目前最保姆级的MapGuide上手指南! 系列链接 ...
- JavaWeb和WebGIS学习笔记(六)——使用ArcGIS for Server发布地图服务
系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...
- JavaWeb和WebGIS学习笔记(四)——使用uDig美化地图,并叠加显示多个图层
系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...
- JavaWeb和WebGIS学习笔记(三)——GeoServer 发布shp数据地图
系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
随机推荐
- 【JDK1.8】 Java小白的源码学习系列:HashMap
目录 Java小白的源码学习系列:HashMap 官方文档解读 基本数据结构 基本源码解读 基本成员变量 构造器 巧妙的tableSizeFor put方法 巧妙的hash方法 JDK1.8的putV ...
- C语言—期末小黄衫获奖感言
小黄衫获奖感言 一,感谢环节 非常感谢邹欣,周筠老师给提供的小黄衫,我非常荣幸的能够获得这个奖项,我感到无比自豪.感谢两位老师对教学事业的大力支持,对我们学生的亲切关怀.同时感谢我的C语言老师彭琛(琛 ...
- svg微信公众号推文实现点击显示答案
svg微信公众号推文实现点击显示答案 大家都知道微信公众号推文不能写js 所以不能加点击事件 其实是对的 确实不能写js 但是点击事件可以用svg写 svg代码可不会隐蔽 下面我直接贴代码 < ...
- SpringCloud与微服务系列专栏
一. 前置知识 学习SpringCloud之前需要具备和掌握如下框架和工具的使用:SpringMVC,Spring,Spring Boot,Mybatis,Maven,Git. SpringCloud ...
- Java:谈谈控制线程的几种办法
目录 Java:谈谈控制线程的几种办法 join() sleep() 守护线程 主要方法 需要注意 优先级 弃用三兄弟 stop() resume suspend 中断三兄弟 interrupt() ...
- 第一篇:CDH配置本地http服务
在我们安装cdh的时候,避免不了要安装一大堆软件,包括cm的服务器,hadoop的各种组件.这些组件的文件都比较大,所以我们会在本地配置一个http服务,以便于在安装cdh服务的时候能快速的安装完.本 ...
- C++类中拷贝构造函数详解
a. C++标准中提到"The default constructor, copy constructor and copy assignment operator, and destruc ...
- js笔记(3)--js实现数组转置(两种方法)
js实现数组转置 第一种方法: <script> window.onload=function(){ var array1=[[11,22,33,333],[4 ...
- python 函数(实参与形参、传递参数)
函数 什么是函数?函数是带名字的代码块,用于完成具体的工作.写出一个函数后,就可以一直调用. 定义函数,函数的基本组成: 1.1 向函数传递参数 向函数中传递任意参数,这样打印出的结果就可以根据自己的 ...
- python 类 - 继承
继承 什么是继承? 编写类时,并非总要从空白开始.如果要编写的类是另一个现成类的特殊版本,可使用继承. 一个类继承另一个类时,将自动获得另一个类的所有属性和方法.现有的类称为父类,而新类称为子类. 子 ...