这个是真的学习笔记!不是教程

转载请声明:https://www.cnblogs.com/onsummer/p/12159366.html

基于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 学习笔记的更多相关文章

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

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

  2. JavaWeb和WebGIS学习笔记(五)——使用OpenLayers显示地图

    系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...

  3. geodjango七日学习笔记 (7.30整理本地笔记上传到网络)

    第一天进行到现在,在开端的尾巴,想起来写一个学习笔记, 开发环境已搭好,用的是pycharm 环境是本机已有的interpreter python3.7   接下来要做的是新建一个geodjango项 ...

  4. JavaWeb和WebGIS学习笔记(七)——MapGuide Open Source安装、配置以及MapGuide Maestro发布地图——超详细!目前最保姆级的MapGuide上手指南!

    JavaWeb和WebGIS学习笔记(七)--MapGuide Open Source安装.配置以及MapGuide Maestro发布地图 超详细!目前最保姆级的MapGuide上手指南! 系列链接 ...

  5. JavaWeb和WebGIS学习笔记(六)——使用ArcGIS for Server发布地图服务

    系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...

  6. JavaWeb和WebGIS学习笔记(四)——使用uDig美化地图,并叠加显示多个图层

    系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...

  7. JavaWeb和WebGIS学习笔记(三)——GeoServer 发布shp数据地图

    系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...

  8. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  9. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

随机推荐

  1. 机器学习环境配置系列三之Anaconda

    1.下载Anaconda文件 进入anaconda的官网 选择对应的系统 选择希望下载的版本(本人下载的是Anaconda 5.3 For Linux Installer Python 3.7 ver ...

  2. GitHub学习之路1

    对于代码的管理以及维护上,GitHub不失为一个较为明智的选择.而对于GitHub的灵活应用也是相当重要的,以下记录为以防自己忘记. 1. 创建SSH Key ssh-keygen -t rsa –C ...

  3. es6 promise 简单总结

    话不多说,直捣主题. promise用途:异步编程的一种解决方案. 优点:比传统的解决方案——回调函数和事件——更合理和更强大. 三种状态:pending(进行中).fulfilled(已成功)和re ...

  4. 自学前端开发,现在手握大厂offer,我的故事还在继续

    简要背景 我是一个非科班出身的程序员,而且是连续跨专业者,用一句话总结就是:16 届本科学完物流,保送研究生转交通,自学前端开发的休学创业者. 17 年休学创业,正式开始学习前端,离开创业公司后,我又 ...

  5. svg微信公众号推文实现点击显示答案

    svg微信公众号推文实现点击显示答案 大家都知道微信公众号推文不能写js 所以不能加点击事件 其实是对的 确实不能写js 但是点击事件可以用svg写  svg代码可不会隐蔽 下面我直接贴代码 < ...

  6. 安装jrebel并激活

    1.File-Settings-Plugins搜索jrebel,找到JRebel for IntelliJ ,点击install(我这里已经安装过了,所以显示的是更新) 2.重启idea 3.激活步骤 ...

  7. 前端 JS/TS 调用 ASP.NET Core gRPC-Web

    前言 在上两篇文章中,介绍了ASP.NET Core 中的 gRPC-Web 实现 和 在 Blazor WebAssembly 中使用 gRPC-Web,实现了 Blazor WebAssembly ...

  8. 【动手学pytorch】softmax回归

    一.什么是softmax? 有一个数组S,其元素为Si ,那么vi 的softmax值,就是该元素的指数与所有元素指数和的比值.具体公式表示为: softmax回归本质上也是一种对数据的估计 二.交叉 ...

  9. Lighthouse

    北大程郁缀教授: 一,"日月之行,若出其中,星汉灿烂,若出其里."要找机会去感受大海,男人要有大海一样的胸怀,大气者方能成大器. 二,"亦余心之所善兮,虽九死其而未悔.& ...

  10. java架构之路-(netty专题)初步认识BIO、NIO、AIO

    本次我们主要来说一下我们的IO阻塞模型,只是不多,但是一定要理解,对于后面理解netty很重要的 IO模型精讲  IO模型就是说用什么样的通道进行数据的发送和接收,Java共支持3种网络编程IO模式: ...