位置: IT常识 - 正文

Openlayers 快速上手教程(openlayers6教程)

编辑:rootadmin
Openlayers 快速上手教程

推荐整理分享Openlayers 快速上手教程(openlayers6教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:openlayers wms,openlayers视频教程,openlayers wms,openlayers教程,openlayers教程,openlayers6教程,openlayers入门教程,openlayers教程,内容如对您有帮助,希望把文章链接给更多的朋友!

📢欢迎点赞👍/ 收藏⭐/ 留言📝如有错误敬请指正!

1. Openlayers简介

Openlayers 是开源的前端地图框架,官网地址:https://openlayers.org/ 它的作用主要是用于展现数据并且提供相应的地图操作工具。

1.1 官网首页

1.2 使用示例example

Openlayers6版本官网提供了 228 个使用案例,可以根据自己的需要筛选: 如: popup、draw、style 等 例如搜索popup: 点击进入后有详细的代码示例:

1.3 阅读api

在学会了 Openlayers 的基本使用后,API 的阅读使用则是工作必备。 左侧列表列出了Openlayers的所有类,方便快速搜索 例如搜索Map后进入:

2. 快速开始示例

我将通过一个官网的demo介绍如何使用Openlayers 初始代码:

<!doctype html><html lang="en"> <head> <meta charset="utf-8"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.13.0/css/ol.css" type="text/css"> <style> .map-class { height: 50rem; width: 100%; } </style> <!-- 加载OpenLayers 类库 --> <script src="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.13.0/build/ol.js"></script> <title>OpenLayers例子</title> </head> <body> <h2>我的地图</h2> <div id="map-id" class="map-class"></div> <script type="text/javascript"> var map = new ol.Map({ // 绑定 DIV 元素 target: 'map-id', // 添加图层 layers: [ new ol.layer.Tile({ // 设置图层的数据源 source: new ol.source.OSM() }) ], // 设置视图窗口 view: new ol.View({ //center: ol.proj.fromLonLat([37.41, 8.82]), center: ol.proj.transform([104, 30], 'EPSG:4326', 'EPSG:3857'), zoom: 5 }) }); </script> </body></html>

通过上面例子可以看出 Openlayers 使用很简单,首先定义一个 Map,这是 Openlayers 的核心,它是一个容器,所有动作、设置等都在 Map 中展开。

Openlayers 快速上手教程(openlayers6教程)

下面对上面 demo所简要说明:

将 Map 容器与 HTML 元素(这里是 DIV 元素 map-id)做绑定,Map 提供有 target 属性来绑定;将图层 Layer 添加到 Map 中,这里是一个瓦面图层 ol.layer.Tile;图层是一个包装盒,需要给图层添加具体的数据源:new ol.source.OSM(),数据源表示一个服务,可以理解为是一个 URL;最后设置 Map 容器的视图窗口:new ol.View,就是我们初始化能看到的地图样子。

Openlayers 其核心组件是 Map、Layer、Source、View、Control、Interaction几乎所有的动作都是围绕这几个核心类展开。

Map

Map是 Openlayers 的使用的基础,所有的图层、地图控件、地图工具等必须添加到 Map 中才能使用。 往 Map 中添加图层、地图控件、地图工具等可以在初始化 Map 时就添加(如上 demo),可以调用 Map 相关的方法添加 addControl(control)、addInteraction(interaction)、addLayer(layer)。 Map 还提供了很多事件,如:点击地图(click)、双击地图(dbclick)等。 绑定 click 事件使用:

this.map.on("click", evt => { this.map.forEachFeatureAtPixel(evt.pixel, feature => {//鼠标点击某一个要素后,获取这个要素,执行业务逻辑 });});

PS: 另一种事件调用方式:this.map.dispatchEvent({type: "click", event: 回调函数 })

Layer

Layer 图层:单单一个 Map 是没有什么用的,只用绑定图层才能显示数据,Layer 作用能控制数据是否显示,以及地图可显示的最大或最小比例尺(即放大或缩小到某个级别不显示地图),这里特别说明下,图层主要是根据数据源的不同来选择,不同的数据源选择不同的图层,使用:

this.map.addLayer(new ol.layer.Vector({ source: new TileWMS({ url: "http://192.168.1.244:9090/geoserver/fj/wms", params: { LAYERS: "fj:cityErase" } })}))Source

这是整个 Openlayers 的灵魂,source 分为矢量数据源和影像数据源。有时候底图使用影像数据,而与我们业务相关的河流、行政区、水环境监测点等都是矢量数据。 数据源的使用如下:

this.map.addLayer(new ol.layer.Tile({ //加载影像数据 source: new ol.source.XYZ({ url: "https://{a-c}.tile.thunderforest.com/cycle/{z}/{x}/{y}.png?apikey=a5dd6a2f1c934394bce6b0fb077203eb", attributions: "测试" })}));this.map.addLayer(new VectorLayer({ //加载矢量数据 source: new ol.source.Vector(), //这里设置数据展示边框颜色 style: function(feature) { return new Style({ stroke: new Stroke({ color: "blue", width: 1 }) }) } }))View

view 用来设置地图的展示位置范围、地图中心位置以及当前地图使用的投影坐标系(有很多坐标系,如地理坐标系:4326)等,也可以设置地图旋转等,使用:

this.map.setView(new ol.View({ center: [114.064839,22.548857], //深圳 zoom: 15, projection: 'EPSG:4326' //使用的坐标,这里是 WGS84 坐标系}))Control

Control 控件,就是与地图相关操作的工具。如下图: 地图默认包含了放大缩小控件,控件的使用可以更加方便的帮助我们浏览数据,提高交互体验。

new ol.Map({ target: 'map2', layers: [ new ol.layer.Tile({ source: new ol.source.OSM() }) ], view: new ol.View({ center: ol.proj.transform( [104, 30], 'EPSG:4326', 'EPSG:3857'), zoom: 10 }), // 在默认控件的基础上,再加上其他内置的控件// 在上面 demo 中没有设置 controls 属性,直接使用 Map 的默认控件(放大、缩小) controls: ol.control.defaults().extend([ new ol.control.FullScreen(), new ol.control.MousePosition(), new ol.control.OverviewMap(), new ol.control.ScaleLine(), new ol.control.ZoomSlider(), new ol.control.ZoomToExtent() ]),});Interaction

交互操作就是我们与地图的相互操作,比如在地图上绘制要素、选择、修改、移动、拉伸等等操作。使用如下:

new ol.Map({ // 修改 openlayers 提供的默认的交互方式 interactions: ol.interaction.defaults({ doubleClickZoom: false, mouseWheelZoom: false }), layers: [ ... ... ], target: 'map2', view: new ol.View({ ... ... }) });

也可以手动添加:

// 添加绘制工具this.map.addInteraction(new Draw({ //在地图上绘制好的要素添加到指定数据源 source: this.drawVectorSource, //绘制要素的类型 type: GeometryType.POLYGON});

📢欢迎点赞👍/ 收藏⭐/ 留言📝如有错误敬请指正! 后续持续更新中…

本文链接地址:https://www.jiuchutong.com/zhishi/298785.html 转载请保留说明!

上一篇:瑞吉外卖项目:编辑员工信息与公共字段自动填充(瑞吉外卖项目简历)

下一篇:js去掉两个数组相同的元素、js删除数组中某一个对象、js快速查找数组中重复项下标(js去掉数组中的空字符串)

  • 全民k歌可以投屏到电视上唱歌吗(全民K歌可以投屏到电视吗)

    全民k歌可以投屏到电视上唱歌吗(全民K歌可以投屏到电视吗)

  • 苹果13能刷门禁卡吗(苹果13可以刷门禁卡吗)

    苹果13能刷门禁卡吗(苹果13可以刷门禁卡吗)

  • 使用微信分身是要用两个手机号码吗(微信分身是登陆两个号还是一个号)

    使用微信分身是要用两个手机号码吗(微信分身是登陆两个号还是一个号)

  • 抖音聊天撤回会对方知道吗(抖音聊天撤回会有提示吗)

    抖音聊天撤回会对方知道吗(抖音聊天撤回会有提示吗)

  • 抖音把粉丝移除了通知吗(抖音把粉丝移除了对方还能加回来吗)

    抖音把粉丝移除了通知吗(抖音把粉丝移除了对方还能加回来吗)

  • 微信小程序怎样打开(微信小程序怎样注销)

    微信小程序怎样打开(微信小程序怎样注销)

  • 用微信怎么举报没有加的人(微信怎么举报群聊微信)

    用微信怎么举报没有加的人(微信怎么举报群聊微信)

  • 为什么快手配乐没声音(为什么快手配乐有点卡)

    为什么快手配乐没声音(为什么快手配乐有点卡)

  • 抖音号限流会不会恢复(抖音限流会不会限制ip)

    抖音号限流会不会恢复(抖音限流会不会限制ip)

  • 罗技鼠标点一下变两下怎么办(罗技鼠标点一下出现双击)

    罗技鼠标点一下变两下怎么办(罗技鼠标点一下出现双击)

  • 为什么有抖音号搜不到用户(为什么有抖音号搜不到对方)

    为什么有抖音号搜不到用户(为什么有抖音号搜不到对方)

  • b站注销账号要多久(b站注销账号要多久才可以绑定手机)

    b站注销账号要多久(b站注销账号要多久才可以绑定手机)

  • 光盘刻录是什么意思(自己怎么刻录光盘)

    光盘刻录是什么意思(自己怎么刻录光盘)

  • 抖音作品数量与动态量不一样(抖音的作品数量)

    抖音作品数量与动态量不一样(抖音的作品数量)

  • 苹果性能小钢炮是哪款(苹果8小钢炮啥意思)

    苹果性能小钢炮是哪款(苹果8小钢炮啥意思)

  • 无线充电器是什么手机都能用吗(无线充电器是什么手机都可以用吗)

    无线充电器是什么手机都能用吗(无线充电器是什么手机都可以用吗)

  • 苹果x怎么设置无线充电(苹果x怎么设置门禁卡)

    苹果x怎么设置无线充电(苹果x怎么设置门禁卡)

  • 一加7T支持双卡双待吗(一加7t支持双卡吗)

    一加7T支持双卡双待吗(一加7t支持双卡吗)

  • ios13为什么不能投屏(苹果13为什么不能更新)

    ios13为什么不能投屏(苹果13为什么不能更新)

  • cad加载插件快捷键(cad加载插件快捷键命令menload)

    cad加载插件快捷键(cad加载插件快捷键命令menload)

  • 怎样在wps表格中画竖线(怎样在wps表格中嵌入表格)

    怎样在wps表格中画竖线(怎样在wps表格中嵌入表格)

  • 小米8最高支持多少w快充(小米8最高支持miui几)

    小米8最高支持多少w快充(小米8最高支持miui几)

  • soul怎么搜索别人的id(新版soul怎么搜索别人的id)

    soul怎么搜索别人的id(新版soul怎么搜索别人的id)

  • ps怎么做剪影效果(ps怎么做出剪影的那种效果)

    ps怎么做剪影效果(ps怎么做出剪影的那种效果)

  • vivoz5x多重(vivoz5x多重多少克)

    vivoz5x多重(vivoz5x多重多少克)

  • 电脑上的ppt怎么传到手机上(电脑上的ppt怎么传到微信上)

    电脑上的ppt怎么传到手机上(电脑上的ppt怎么传到微信上)

  • 苹果手机屏幕抖动是什么原因(苹果手机屏幕抖动解决方法)

    苹果手机屏幕抖动是什么原因(苹果手机屏幕抖动解决方法)

  • 抖音上怎么知道别人看过你(抖音上怎么知道好友在和别人私聊)

    抖音上怎么知道别人看过你(抖音上怎么知道好友在和别人私聊)

  • 键盘驱动怎么修复(键盘驱动坏了怎么重装系统)

    键盘驱动怎么修复(键盘驱动坏了怎么重装系统)

  • 如何禁用或隐藏Win11开始菜单中的推荐部(怎么隐藏权限)

    如何禁用或隐藏Win11开始菜单中的推荐部(怎么隐藏权限)

  • 基于Java Web的随意购商城系统(开源项目)(基于javaweb是什么意思)

    基于Java Web的随意购商城系统(开源项目)(基于javaweb是什么意思)

  • 公司债券股票的投资组合思路
  • 个人所得税申报是公司申报还是个人申报
  • 年终奖报表怎么做
  • 年偿债基金和年金现值
  • 安保公司差额征税开具发票
  • 商业发票和形式发票英文
  • 货物的运输费用怎么算
  • 会计凭证的保管期限为多少
  • 高铁票丢失怎么办
  • 接受捐赠收入会计利润含税吗
  • 港币转人民币怎么转账
  • 费用怎么暂估
  • 代开专票作废退税怎么做账?
  • 分配辅助生产车间成本记账凭证
  • 销售时无法确认发票
  • 盘盈固定资产冲销啥科目
  • 已抵扣的发票怎么开红字发票申请单
  • 企业自行去税务开具房租发票税款怎么做?
  • 什么叫记载资金的账簿
  • 账面价值大于计税基础产生什么差异
  • 无产权车位20年到期后还收费吗
  • 国家税务局通用定额发票还能用吗
  • 正常消耗的直接材料计入当期损益
  • 结转与结余
  • 赠票视同销售,借方计入什么科目?
  • 购买材料再进在建工程的账务处理
  • 跨年暂估成本的账务处理冲回
  • 农村合作社补贴政策
  • mac怎么安装dmg软件
  • 电脑找不到休眠设置了
  • 利率和利息的区别白话
  • PHP:session_write_close()的用法_Session函数
  • 汽车空调不制冷的原因有六种
  • react组件如何设置dom
  • 镶嵌在巨石之间的英文
  • echars legend
  • 宋大叔教音乐第三单元进阶版
  • 员工预支款计入什么科目
  • 服务业加计扣除比例
  • 增值税报销是什么意思
  • 公司购买手机的发票
  • 被投资企业清算,长期股权投资处理
  • 织梦cms要钱吗
  • 新企业职工工资怎么算
  • 股东向公司借款超过一年不还
  • 预提费用汇缴时间怎么算
  • 如何算基数
  • 利用职务之便谋取私利是什么罪
  • ibm db2认证
  • Advanced SQL Injection with MySQL
  • 哪个命令可以对mysql数据库做完全备份
  • 企业所得税汇算表
  • 珠宝行业的会计处理方式
  • 售后回租服务费开票
  • 委托加工如何做会计处理
  • 汇算清缴弥补以前年度亏损多少年
  • 分配现金股利的顺序
  • 营改增后建筑业增值税税率
  • 固定资产为什么提折旧,有何实际意义
  • 解析包出现错误无法安装怎么办
  • win7升级win10之后视频解码能力变弱
  • windows10电脑重置电脑
  • linux如何关闭selinux
  • ubuntu系统安装程序
  • 电脑windows7打不开怎么办
  • windows中复制文件的几种方法
  • opengl context for format
  • unity learn premium
  • Begin OpenGL with Python-1st Day,draw a simple sample.
  • 使用时间
  • jquery滑动效果
  • nvm-windows
  • JavaScript中的复杂数据类型又称为
  • JavaScript中的变量名不区分大小写
  • 如何获取电子户口簿
  • 税务局与地税局一样吗?
  • 留抵退税再提速
  • 对计划单列市税务局不服向谁复议
  • 国家税务总局商洛市税务局
  • 北京地税咨询热线
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设