openlayers 入门教程(二):map 篇

还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信(gis-dajianshi),一起交流。

在这里插入图片描述

No.内容链接
1Openlayers 【入门教程】 - 【源代码+示例300+】
2Leaflet 【入门教程】 - 【源代码+图文示例 150+】
3Cesium 【入门教程】 - 【源代码+图文示例200+】
4MapboxGL【入门教程】 - 【源代码+图文示例150+】
5前端就业宝典 【面试题+详细答案 1000+】

在这里插入图片描述

文章目录

    • 一、创建地图对象
    • 二、地图属性与方法
      • 属性
      • 常用方法
    • 三、事件处理
      • 1, click 示例
      • 2, singleclick 示例
      • 3, dblclick 示例
      • 4, pointermove 示例
      • 5, 右键点击示例
      • 6, movestart、moveend 示例
      • 7, loadstart、loadend 示例
      • 8, modifystart和modifyend 示例
      • 9, postrender 示例
    • 四、扩展
    • 五、Openlayers 入门教程 -系列文章列表


OpenLayers 是一个开源的 JavaScript 库,用于在网页中构建交互式的地图应用程序。ol/Map 类是 OpenLayers API 中的核心组件之一,它负责创建和管理整个地图实例。

一、创建地图对象

创建一个新的地图实例通常从 ol/Map 类开始,示例代码如下:

import Map from 'ol/Map';
import View from 'ol/View';// 创建一个地图视图,设置初始中心点与缩放级别
const view = new View({center: [0, 0], // 地图中心点,以经纬度表示zoom: 2, // 初始缩放级别projection: 'EPSG:3857' // 默认的Web Mercator投影
});// 创建地图对象,指向HTML DOM元素作为地图容器
const map = new Map({target: 'map-container', // 容器ID或者DOM元素view: view, // 关联的地图视图layers: [], // 图层数组,可以为空,后续添加
});// 添加图层到地图
const layer = new TileLayer({source: new XYZSource({url: 'https://a.tile.openstreetmap.org/{z}/{x}/{y}.png',}),
});
map.addLayer(layer);

在这里插入图片描述

二、地图属性与方法

属性

  • target 地图的容器,元素本身或id元素的 。必须指定,不指定无法加载地图。
  • view 视图。需要在构造时或通过方法(setView)指定,否则不会加载图层。
  • layers 图层。没定义图层,也会加载,显示空白图层。图层是按顺序加载的,想要在最上层需要放在最后面。
  • controls 添加到地图上的控件。默认加载 ol/control 下 defaults,默认控件组。
  • overlays 覆盖物。默认情况下,不添加任何覆盖物。
  • pixelRatio 设备上物理像素与设备无关像素(下降)之间的比率。
  • interactions 添加到地图的交互事件。默认加载 ol/interaction 下 defaults,默认交互组。
  • keyboardEventTarget 监听键盘事件的元素。这决定了KeyboardPan和 KeyboardZoom互动的触发时间。例如,如果将此选项设置为 document键盘,则交互将始终触发。如果未指定此选项,则库在其上侦听键盘事件的元素是地图目标(即,用户为地图提供的div)。如果不是 document,则需要重点关注目标元素以发出关键事件,这要求目标元素具有tabindex属性。
  • maxTilesLoading 同时加载的最大瓦片数。默认16。
  • moveTolerance 光标必须移动的最小距离(以像素为单位)才能被检测为地图移动事件,而不是单击。增大此值可以使单击地图更容易。

常用方法

  • on(type, listener) 侦听某种类型的事件。
  • addControl(control) 添加控件。
  • addInteraction(interaction) 添加交互。
  • addLayer(layer) 添加图层。
  • removeLayer(layer) 删除图层。
  • addOverlay(overlay) 添加覆盖物。
  • dispatchEvent(event) 调度事件并调用所有侦听此类型事件的侦听器。
  • getOverlays() 获取所有覆盖物。
  • removeOverlay(overlay) 删除指定覆盖物
  • setTarget():动态改变地图渲染的目标容器。
  • getView():获取当前关联的视图对象。
  • updateSize():当容器大小发生改变时,更新地图尺寸以适应新的容器大小。

三、事件处理

OpenLayers 提供丰富的事件系统,可以在地图上监听并响应各种事件,例如:

1, click 示例

示例:鼠标click显示企业名片

2, singleclick 示例

示例:singleclick点击选择feature,并设置特定的颜色

3, dblclick 示例

示例: dblclick事件示例-显示品牌代言人信息

4, pointermove 示例

示例:移动地图获取中心点经纬度信息

5, 右键点击示例

示例:右键点击定位,获取某一点下多层features信息

6, movestart、moveend 示例

示例:moveend事件获取地图左上和右下的坐标信息

7, loadstart、loadend 示例

示例:loadstart和loadend 旋转加载显示

8, modifystart和modifyend 示例

示例:modifystart和modifyend显示提示信息

9, postrender 示例

示例:postrender地图图像的滤镜处理

四、扩展

除了基础地图创建之外,还可以通过调用其他API方法来进一步定制地图行为,例如调整地图视图、添加自定义交互、加载不同来源的数据等。OpenLayers是一个高度模块化的库,允许开发者根据需求灵活组合不同的功能模块来构建复杂的WebGIS应用。

五、Openlayers 入门教程 -系列文章列表

  • openlayers 入门教程(一):应该如何学习openlayers
  • openlayers 入门教程(二):Map 篇
  • openlayers 入门教程(三):View 篇
  • openlayers 入门教程(四):Layers 篇
  • openlayers 入门教程(五):Sources 篇
  • openlayers 入门教程(六):Controls篇
  • openlayers 入门教程(七):Interactions篇
  • openlayers 入门教程(八):Geom 篇
  • openlayers 入门教程(九):Overlay 篇
  • openlayers 入门教程(十):Style 篇
  • openlayers 入门教程(十一):Formats篇
  • openlayers 入门教程(十二):定位与轨迹
  • openlayers 入门教程(十三):动画
  • openlayers 入门教程(十四):第三方插件
  • openlayers 入门教程(十五):与 canvas、echart,turf 等交互

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2869648.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

perl 用 XML::DOM 解析 Freeplane.mm文件,生成测试用例.csv文件

Perl 官网 www.cpan.org 从 https://strawberryperl.com/ 下载网速太慢了 建议从 https://download.csdn.net/download/qq_36286161/87892419 下载 strawberry-perl-5.32.1.1-64bit.zip 约105MB 解压后安装.msi,装完后有520MB,建议安装在D:盘。 运行 …

MySQL--深入理解MVCC机制原理

什么是MVCC? MVCC全称 Multi-Version Concurrency Control,即多版本并发控制,维持一个数据的多个版本,主要是为了提升数据库的并发访问性能,用更高性能的方式去处理数据库读写冲突问题,实现无锁并发。 什…

Visual Studio项目模板的创建与使用

Visual Studio项目模板的创建、使用、删除 创建模板项目模板的使用模板的删除 创建模板 点击项目,点击导出模板 选择你要创建哪个项目的项目模板,点击下一步 输入你的模板名称并添加模板说明,方便记忆 项目模板的使用 点击创建新项目 输入刚刚…

JSP+Servlet开发汽车租赁管理系统

开发工具:EclipseJdkTomcatSQLServer数据库 链接: https://pan.baidu.com/s/1O5tGguNl6V1CvSpN-amNXA 提取码: exak 如果需要,联系下面的客服人员

免费开源多层级多标签文本分类|文本分类接口|文本自动分类

一、开源项目介绍 一款多模态AI能力引擎,专注于提供自然语言处理(NLP)、情感分析、实体识别、图像识别与分类、OCR识别和语音识别等接口服务。该平台功能强大,支持本地化部署,并鼓励用户体验和开发者共同完善&#xf…

tomcat 实现会话绑定

Tomcat 后端服务器实现 Session ID会话保持 基础架构: 7-6 代理服务器nginx配置 7-3 tomcat 服务器 7-5 同理 测试: 此时刷新,会话ID一直在变,这样不好 如何解决呢? 不好的是确定ip之后,会一直在一台机上…

IntelliJ IDEA 面试题及答案整理,最新面试题

IntelliJ IDEA中的插件系统如何工作? IntelliJ IDEA的插件系统工作原理如下: 1、插件架构: IntelliJ IDEA通过插件架构扩展其功能,插件可以添加新的功能或修改现有功能。 2、安装和管理: 通过IDEA内置的插件市场下载…

【数据结构和算法初阶(C语言)】二叉树铺垫--栈帧的创建与销毁--细节全解

前言: 学习这么久以来,可能有很多疑问:局部变量怎么创建的?为什么局部变量的值是随机的?函数是怎么传参的?传参的顺序是怎么样的?形参和实参是什么样的关系?函数调用是怎么做的&…

HCIP—BGP邻居关系建立实验

BGP的邻居称为:IBGP对等体 EBGP对等体 1.EBGP对等体关系: 位于 不同自治系统 的BGP路由器之间的BGP对等体关系 EBGP对等体一般使用 直连建立 对等体关系,EBGP邻居之间的报文 TTL中值设置为1 两台路由器之间建立EBGP对等体关系&#xff0…

章鱼网络 Community Call #19|​开启与 Eigenlayer 的合作

香港时间2024年3月8日12点,章鱼网络举行第19期 Community Call。 在过去的一个月,章鱼网络在成功完成 $NEAR Restaking 功能的安全审计之后,一直在稳步吸引关注。事实上,在整个行业中,我们是极少数已经推出 Restaking …

数据结构 之 二叉树

🎉欢迎大家观看AUGENSTERN_dc的文章(o゜▽゜)o☆✨✨ 🎉感谢各位读者在百忙之中抽出时间来垂阅我的文章,我会尽我所能向的大家分享我的知识和经验📖 🎉希望我们在一篇篇的文章中能够共同进步!!&…

【机器学习-02】矩阵基础运算---numpy操作

在机器学习-01中,我们介绍了关于机器学习的一般建模流程,并且在基本没有数学公式和代码的情况下,简单介绍了关于线性回归的一般实现形式。不过这只是在初学阶段、为了不增加基础概念理解难度所采取的方法,但所有的技术最终都是为了…

Mysql:行锁,间隙锁,next-key锁?

注:以下讨论基于InnoDB引擎。 文章目录 问题引入猜想1:只加了一行写锁,锁住要修改的这一行。语义问题数据一致性问题 猜想2:要修改的这一行加写锁,扫描过程中遇到其它行加读锁猜想3:要修改的这一行加写锁&…

BigDecimal保留两位小数失败问题

文章目录 背景问题解决如何测试代码 背景 测试时发现在线swagger测试会自动处理BigDecimal小数点后面的数字,就是有零的会都给你去掉,比如9.000与9.500到最后都会被swagger处理成9跟9.5。使用postman测是最准的,测出来的就是9.000跟9.500。 …

react可视化编辑器 第一章 拖拽

效果: 实现可视化编辑器,第一步难点 是 拖拽 提示:链接和图片默认是可拖动的,不需要draggable属性。 在拖放操作的不同阶段使用并可能发生许多事件属性: 在可拖动目标上触发的事件(源元素)&a…

【渗透测试】redis漏洞利用

redis安装及配置 wget http://download.redis.io/releases/redis-3.2.0.tar.gz tar xzf redis-3.2.0.tar.gz cd redis-3.2.0 make cp /root/redis-6.2.6/redis.conf /usr/local/redis/bin/ cd /usr/local/redis/bin/ vi redis.conf #修改内容如下: #protected-mode …

数据结构的概念大合集04(队列)

概念大合集04 1、队列1.1 队列的定义1.2队列的顺序存储1.2.1 顺序队1.2.2 顺序队的基本运算的基本思想1.2.3 顺序队的4要素的基本思想 1.3 环形队列1.3.1 环形队列的定义1.3.1 环形队列的实现 1.4 队列的链式存储1.4.1 链队1.4.2 链队的实现方式1.4.3 链队的4要素的基本思想 1.…

开发环境热部署:2021版IDEA没有compiler.automake.allow.when.app.running

解决办法:Settings--> Advanced Settings -->Compiler勾选上

科研学习|论文解读——了解在线环境中的多数观点形成过程:Facebook的探索性方法(IPM, 2018)

论文标题 Understanding the majority opinion formation process in online environments: An exploratory approach to Facebook 摘要 在在线社区的社会互动过程中,多数观点经常被观察到,但很少有研究用实证数据来解决这一问题。为了确定一个合适的理论…

Ubuntu 虚拟机安装

最小化安装后常用工具 sudo apt-get install vim# ifconfig apt install net-tools # nload apt install nload # 很多都要用到 apt install build-essential # 开发相关 apt install gcc gapt install iproute2 ntpdate tcpdump telnet traceroute \ nfs-kernel-server nfs…