位置: 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去掉数组中的空字符串)

  • 微信主页手机号码怎么隐藏(微信主页手机号怎么显示不出来)

    微信主页手机号码怎么隐藏(微信主页手机号怎么显示不出来)

  • 华为荣耀8c有手机分身吗(华为荣耀8c怎么设置手写输入法)

    华为荣耀8c有手机分身吗(华为荣耀8c怎么设置手写输入法)

  • 谷歌商店点击登录没反应(谷歌商店点击登录)

    谷歌商店点击登录没反应(谷歌商店点击登录)

  • 小米闹钟无法连接wifi(小米闹钟无法连接网络,怎么解决)

    小米闹钟无法连接wifi(小米闹钟无法连接网络,怎么解决)

  • 什么叫违反微信规范(什么叫违反微信个人账号)

    什么叫违反微信规范(什么叫违反微信个人账号)

  • 苹果手表一代支持ios13吗(苹果手表一代支持ios15吗)

    苹果手表一代支持ios13吗(苹果手表一代支持ios15吗)

  • 抖音速推能上热门吗(抖音速推上热门别人能看到花钱了吗)

    抖音速推能上热门吗(抖音速推上热门别人能看到花钱了吗)

  • 微信实名认证清除了别人还能用吗(微信实名认证清楚了里面还有钱怎么办)

    微信实名认证清除了别人还能用吗(微信实名认证清楚了里面还有钱怎么办)

  • 喜马拉雅为什么自动停(喜马拉雅为什么自动打开)

    喜马拉雅为什么自动停(喜马拉雅为什么自动打开)

  • 华为p40pro可以无线充电吗(华为p40pro可以无线反向充电吗)

    华为p40pro可以无线充电吗(华为p40pro可以无线反向充电吗)

  • 天猫旺旺名是什么(天猫旺旺名是什么在哪里看)

    天猫旺旺名是什么(天猫旺旺名是什么在哪里看)

  • ps怎么改寸照背景(ps寸照改背景色)

    ps怎么改寸照背景(ps寸照改背景色)

  • 苹果8能升级ios13吗(苹果8能升级ios14吗)

    苹果8能升级ios13吗(苹果8能升级ios14吗)

  • 荣耀20青春版怎么解锁(荣耀20青春版怎么关闭hd)

    荣耀20青春版怎么解锁(荣耀20青春版怎么关闭hd)

  • 南瓜电影怎么取消自动续费(南瓜电影怎么取消)

    南瓜电影怎么取消自动续费(南瓜电影怎么取消)

  • 华为手机怎么激活电子保卡(华为手机怎么激活设备密码忘了)

    华为手机怎么激活电子保卡(华为手机怎么激活设备密码忘了)

  • vivoz3i有没有hifi(vivoZ3i有没有OTG功能)

    vivoz3i有没有hifi(vivoZ3i有没有OTG功能)

  • 小爱同学为什么不能语音唤醒(小爱同学为什么连接不上蓝牙)

    小爱同学为什么不能语音唤醒(小爱同学为什么连接不上蓝牙)

  • 微信不更新有影响吗(微信不更新影响聊天吗)

    微信不更新有影响吗(微信不更新影响聊天吗)

  • 三星s9信号增强设置(三星手机增强信号强度)

    三星s9信号增强设置(三星手机增强信号强度)

  • qq画画功能在哪里(qq画画图片大全)

    qq画画功能在哪里(qq画画图片大全)

  • 苹果有锁机可以升级吗(苹果有锁机可以插卡吗)

    苹果有锁机可以升级吗(苹果有锁机可以插卡吗)

  • 员工如何用滴滴企业版(员工用企业滴滴,公司知道行程吗)

    员工如何用滴滴企业版(员工用企业滴滴,公司知道行程吗)

  • 华为手机抽屉模式怎么取消(华为手机抽屉模式怎么隐藏应用)

    华为手机抽屉模式怎么取消(华为手机抽屉模式怎么隐藏应用)

  • 机械键盘轴的区别声音(机械键盘轴的区别图)

    机械键盘轴的区别声音(机械键盘轴的区别图)

  • 苹果推送最新系统macOS Catalina 10.15 正式版升级(iphone系统推送)

    苹果推送最新系统macOS Catalina 10.15 正式版升级(iphone系统推送)

  • 鸿蒙系统怎么开启驾驶模式?鸿蒙系统开启驾驶模式教程(鸿蒙系统怎么开启OTG)

    鸿蒙系统怎么开启驾驶模式?鸿蒙系统开启驾驶模式教程(鸿蒙系统怎么开启OTG)

  • win10电源高性能怎么设置(win10电源高性能被删了)

    win10电源高性能怎么设置(win10电源高性能被删了)

  • python根据键值(value)返回键(key)(python根据键输出值)

    python根据键值(value)返回键(key)(python根据键输出值)

  • 税务局退给企业的多交的所得税该怎样帐务处理?
  • 企业所得税是含税价还是不含税价
  • 销售软件税目
  • 附加税的计算公式2023
  • 研发设备的折旧费计入研发费吗
  • 包工包料的税率2023
  • 其他应收款账龄怎么算
  • 到国税局领增值税发票需带什么
  • 购买旧固定资产的增值税进项税
  • 企业利润表的主要内容
  • 税务局查账需要几天
  • 未分配利润借方表示增加还是减少
  • 所得税汇算清缴补税的会计处理
  • 购买投资理财产品放的会计处理怎么做?
  • 应交印花税会计分录
  • 开具增值税专用发票怎么开
  • 房地产开发企业取得的土地使用权用于建造
  • 收入不交税怎么处理
  • 代扣个税税率是多少
  • 发票查出来显示不一致是为啥
  • 银行扣的短信费银行给开发票吗
  • 一般纳税人专用发票怎么做账
  • 设备改造时各项支出的会计处理?
  • linux怎么使用命令
  • u盘ghost下载
  • 总资产报酬率怎么查
  • 企业间贴现手续费怎么记账?
  • win10电脑设备管理器在哪
  • php str函数
  • 年终结算增值税怎么算
  • PHP:imagesetstyle()的用法_GD库图像处理函数
  • 二手房交易需缴哪些税
  • 买发票前金税盘需要抄税和清卡吗?
  • axios入门
  • php文件打包下载
  • laravel5.4生成验证码的实例讲解
  • 应收账款在贷方如何平账
  • 模糊数学神经网络
  • 前端底层架构是什么意思
  • thinkphp如何连接数据库
  • 管理费用未分配利润
  • 出口退税企业待遇怎么样
  • 小规模纳税人每月不超过10万
  • 电子票开票人复核人一样有影响吗
  • 发票明细太多怎么设置见清单
  • 合伙股权退出机制
  • 厂房办公用品费用怎么算
  • 抄税期一般是几天
  • sql语句修改某个字段
  • 双定户经营所得税税率
  • 房地产资质代办需要多少钱
  • 公司借款给个人400万合法吗
  • 工程材料增值税税率是多少
  • 土地使用税为什么要交
  • 冲减坏账准备的金额怎么计算
  • 破产重组还需要还钱吗
  • windows禁用usb口
  • 简述linux系统有什么显著特点
  • xp操作系统还能用吗
  • 自动保存怎么恢复
  • ubuntu和debian哪个稳定
  • macbook怎么玩ios游戏
  • win7系统点击桌面图标没反应
  • windowsxp资源管理器在哪里
  • xp系统如何更新
  • 果粉必修课 盘点Mac OS X系统发展史
  • unix & linux
  • window10外接摄像头怎么启用
  • win10系统打开安装程序没反应
  • linux html编辑器
  • win8系统如何关机
  • angular实战
  • js document.cookie
  • android设计模式的应用场景
  • python的idle打不开解决办法
  • python中的stringvar
  • 小规模纳税人税率2024
  • 金税三期个税下载官网手机版
  • 广东省外经贸厅官网
  • 河北地税局电话号码
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设