Gis 之OpenLayers入门简介

OpenLayers(openlayers.org/)是一个用来帮助开发Web地图应用的高性能的、功能丰富的JavaScript类库,可以满足几乎所有的地图开发需求。

API 文档: https://openlayers.org/en/latest/apidoc/

例子: https://openlayers.org/en/latest/examples/

要想在浏览器中显示交互式的地图很难,因为浏览器默认的只是显示静态的图片,如PNG、JPEG等格式,要交互式很难,因为每一个点击和缩放,地图都要做出正确的反应。

OpenLayers是一个JavaScript 类库包,主要是用于开发Web GIS客户端。这就是说,要先在网页中引用OpenLayers的JavaScript文件以及相应的css样式表和资源,根据其提供的功能接口,直接调用。所以关键是了解其提供的接口,这是使用一个类库的关键!如果想要优化相应的功能或者定制化,就要深入地了解其实现细节了,这需要有熟练的JavaScript功底。

OpenLayers支持Google Maps、Yahoo Map、微软Virtual Earth等资源,可以通过WMS服务调用其它服务器上的空间数据,通过WFS服务调用空间服务。在操作方面,OpenLayers 除了可以在浏览器中实现地图浏览的基本效果,如放大、缩小、平移等操作,进行选取面、选取线、要素选择、图层叠加等操作。

有如下特点:

  1. 支持任何XYZ瓦片资源,同时也支持OGC的WMTS规范的瓦片服务以及ArcGIS规范的瓦片服务
  2. 支持瓦片图层,来源OSM, Bing, MapBox, Stamen, MapQuest,或者其他 XYZ 数据源。支持 OGC 绘制服务, 以及非瓦块图层
  3. 可借助 WebGL, Canvas 2D, 等所有HTML5优势进行渲染. 直接用CSS控制map风格
  4. 支持矢量切片,包括pbf、GeoJSON、TopoJSON格式
  5. 支持矢量图层,能渲染GeoJSON、TopoJSON、KML、GML和其他格式的矢量数据
  6. 支持OGC制定的WMS、WFS等GIS网络服务规范
  7. 支持在移动设备上运行,构建轻量级自定义组件配置
  8. 可以通过css来为地图控件设置样式
  9. 面向对象开发方式,在OpenLayers中万物皆对象

Map、Layer、Source和View是OpenLayers框架体系中的核心类,几乎所有的动作都围绕这几个核心类展开,以实现地图的加载与其相关操作。

在OpenLayers的体系框架中:把整个地图看作一个容器(Map),核心为地图图层(Layer),每个图层有对应的数据源(Source),并且由地图视图(View)控制地图表现。地图容器上还支持一些与用户交互的控件(Control和Interaction),另外,OpenLayers还支持事件机制。

1)Target 属性:

首先,大家也注意到了,代码中,new 出的 map 对象要渲染到页面上,需要绑定一个容器,也就是代码注释的挂载点 target 属性,通过这个属性,地图就可以在 render 的时候,渲染到页面上,这里注意,你的容器要是不设置宽高的话,你的地图怕是看不到哟

那么,target 到底可以接收什么样的参数?
来看,来自官方 API 的解释:

target   **HTMLElement | string**
The container for the map, either the element itself or the id of the element. If not specified at construction time, module:ol/Map~Map#setTarget must be called for the map to be rendered.

明白了?简单的说就是要么给 target 传一个 HTMLElement,要么给它一个节点的 id。

2)layers 属性:

接下来,来看 map 对象属性 layers,它是 map 地图上要展示的图层,这个就牛批了。你所看到的地图或者地图上展示的点啊、线啊、或者其他花里胡哨的样式,都是源于 layers。

layers 接收的是一个 layer 集合,也就是一个数组。那么,一个重要的关系需要说明了:一个 map 对象对应多个 layer 图层,一个 layer 图层对应一个 source 资源

所谓的 source,就是图层的资源。图层要展示内容,需要将要素 feature 添加到 source

示例中的 layer 是一个瓦片图层(tileLayer),经常用到的图层类型还有 VectorLayerImageLayer
当然,选择什么样的图层类型,也要结合实际应用以及后台提供的地图服务来决定。

不同类型的图层,拥有的属性也不完全相同,但有些常用的属性一致,比如:

  • className(图层类名,常用来标识图层,可以作为图层过滤条件);
  • source(图层资源,存放图层展示的要素 feature);
  • visible(显示状态,可以用于图层切换控件,控制图层显示状态);
  • zIndex(图层渲染位置,控制图层显示的顺序,或者说多个图层叠加时,图层的位置);
  • extent(图层视角,控制地图展示的视角,[minx, miny, maxx, maxy])等。

3)View 属性:

view 属性用来控制地图展示的中心位置、放大倍数 、坐标参考系、视角等属性。
示例代码只添加了 center 中心和 zoom 放大倍数两个参数。center 中的 fromLonLat() 方法用来转换投影坐标系。来看一个比较详细 view 示例:

view: new View({// 地图中心经纬度坐标center: [120.6, 36.2],// 默认地图放大倍数zoom: 28,// 地图最小放大倍数minZoom: 20,// 地图最大放大倍数maxZoom: 36,// 投影坐标系,默认EPSG:'3857'projection: new Projection({code: 'EPSG:4326',units: 'm',  }),// 地图视角extent: [119.9440044999051, 35.784494675002925, 121.2790759907966, 36.56676312669716],}),

说明:地图的投影坐标系有很多,这里具体用什么参考坐标系,需要根据地图服务来定

Map、View、controls、interaction 之间关系:

ol/Map
视图: getView、setView
图层: getLayers、getLayerGroup、addLayer、removeLayer、setLayers、setLayerGroup
控件: addControl、removeControl、getControls
交互: addInteraction、removeInteraction
DOM:getTarget、getTargetElement、setTarget

Map

主体地图对象 new Map()

controls类型

比例尺 ScaleLine

默认演示

new ScaleLine()

配置样式

new ScaleLine({bar: true,

minWidth: 128,

units: ‘metric’}),

Gis 之OpenLayers入门简介相关推荐

  1. Markdown入门简介

    参考 http://sspai.com/25137 作者: Te_Lee 文章来源: 少数派 Markdown入门简介(使用工具Haroopad) 一.使用的工具----haroopad(http:/ ...

  2. openlayers入门开发系列之地图属性查询篇

    本篇的重点内容是利用openlayers实现地图属性查询功能,效果图如下: 实现思路: 模糊查询点击事件 //模糊查询 $("#swatchQuery").bind("c ...

  3. 分布式文件系统—HDFS—入门简介

    原文作者:Zh_Y_G 原文地址:HDFS入门简介 目录 HDFS是什么? 设计目标: 安装配置 HDFS读写流程图解 CheckPoint HDFS是什么? 易于扩展的分布式文件系统 运行在大量普通 ...

  4. Logstash入门简介

    Logstash入门简介 介绍 Logstash是一个开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到最喜欢的存储库中(我们的存储库当然是ElasticSearch) ...

  5. android 教程概要,Android精通教程-第一节Android入门简介

    前言 大家好,我是 Vic,今天给大家带来Android精通教程-第一节Android入门简介的概述,希望你们喜欢 每日一句 If life were predictable it would cea ...

  6. 车联网大数据框架_大数据基础:ORM框架入门简介

    作为大数据开发技术者,需要掌握扎实的Java基础,这是不争的事实,所以对于Java开发当中需要掌握的重要框架技术,也需要有相应程度的掌握,比如说ORM框架.今天的大数据基础分享,我们就来具体讲一讲OR ...

  7. 掌握 Ajax,第 1 部分: Ajax 入门简介

    2019独角兽企业重金招聘Python工程师标准>>> 掌握 Ajax,第 1 部分: Ajax 入门简介 理解 Ajax 及其工作原理,构建网站的一种有效方法 Ajax 由 HTM ...

  8. 大数据与Hadoop有什么关系?大数据Hadoop入门简介

    学习着数据科学与大数据技术专业(简称大数据)的我们,对于"大数据"这个词是再熟悉不过了,而每当我们越去了解大数据就越发现有个词也会一直被提及那就是--Hadoop 那Hadoop与 ...

  9. Linux防火墙入门:简介(转)

    Linux防火墙入门:简介(转) 前言 一旦连上网络,就充满各种危机. 许多人基于各式各样的理由,想侵入你的系统,这种人俗称为 cracker.尤有甚者,近年来,cracker 圈里流行一种结合病毒行 ...

最新文章

  1. spring-boot学习资料
  2. 企业日志分析之linux系统message收集展示
  3. vim插件推荐之auto-pairs
  4. 元宇宙大潮来袭?业内首个虚拟形象实时互动融合 SDK 来了!
  5. hive cli启动判断hadoop version的问题
  6. 有了 Service Mesh,还需要 API 网关吗?
  7. xp系统开机必须启动的服务器,XP系统如何关闭开机启动项呢?
  8. Oracle和sqlserver数据类型对应
  9. 深度学习解释:Precision、Recall、IoU、Ap/mAp
  10. 银联的bankall_gmc银联接口开发demo
  11. antd vue form 手动校验_vue测试模板与jsonSchema自动生成elment组件
  12. 单片机74LS138应用
  13. waiter.OnGreet(Tom) Delegate event
  14. 树莓派wiringPi输出PMW
  15. VLDB2017论文阅读-Cohort Query Processing
  16. 浏览器指纹技术与浏览器指纹破解办法
  17. NetBeans--员工信息管理系统
  18. 目标检测模型中NMS、soft-NMS、softer-NMS的原理、LNMS文本检测系列(python代码实现)
  19. 计算机无法投影,如果无法连接计算机和投影仪怎么办
  20. Your endpoint configuration is wrong

热门文章

  1. ZFS - 文件系统简介
  2. 增加博客访问量的 5 种方法
  3. xe-utils 函数库、工具类
  4. 微信开发SDK使用教程--手机微信个人号新增好友通知服务端
  5. 射线和立方体相交的判断
  6. 港科资讯 | 香港科技园与香港科大计划合作建立香港科学园广州南沙孵化基地...
  7. 网关、默认路由、特定选择路由
  8. 神话欧巴都转让商标了,我们还等什么
  9. 以其人之道还治其人之身-Viking蠕虫病毒的手工歼灭!!!-更新
  10. 单测中如何mock用@Value注解注入的属性