目录

一、下载OpenLayers

二、构建简单的地图应用

三、OpenLayers的DOM元素组织结构


经过上一篇文章对OpenLayers的简单了解以后,现在让我们来实现一个简单的地图显示Demo。

一、下载OpenLayers

打开OpenLayers官网:https://openlayers.org/

然后点击Get the Code:

进入页面下载包含源码包、示例和API文档的压缩文件(我现在下载的是当前最新版5.3.0):

下载完后对其解压,然后自己新建一个文件,将解压文件复制到这个文件夹中(我这里复制到E盘下的openlayers文件夹中):

可以发现解压文件中包含了几个文件,但是目前我们只会用到build和css中的内容。

其中build文件夹中包含了ol.js文件,它是OpenLayers的核心开发库,集成了OpenLayers的所有功能;css文件夹中包含了ol.css文件,它是样式库,包含了OpenLayers的所有默认样式信息。

二、构建简单的地图应用

上面说到了ol.js和ol.css这两个文件,而构建基于OpenLayers的web应用正是需要在代码中引入这两个文件。

首先在刚才新建的openlayers文件夹的根目录中新建一个first文件夹用来放置我们的第一个OpenLayers应用:

然后,在first文件夹中新建一个HTML文件simple_map.html:

simple_map.html:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Simple Map</title><link rel="stylesheet" href="../v5.3.0/css/ol.css" />
</head>
<body><script src="../v5.3.0/build/ol.js"></script>
</body>
</html>

可以看到,代码里引入了ol.js和ol.css这两个文件!

因为OpenLayers中的地图需要一个div元素作为容器用来放置绘制地图的canvas DOM元素与其他DOM元素,所以我们在simple_map.html中也加入一个div元素。

现在已经把基础代码写完了,接下来开始写最核心的逻辑代码:

simple_map.html:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Simple Map</title><link rel="stylesheet" href="../v5.3.0/css/ol.css" /><script src="../v5.3.0/build/ol.js"></script>
</head>
<body><div id="map"></div><script>let map = new ol.Map({target: 'map',                          // 关联到对应的div容器layers: [new ol.layer.Tile({                 // 瓦片图层source: new ol.source.OSM()     // OpenStreetMap数据源})],view: new ol.View({                     // 地图视图projection: 'EPSG:3857',center: [0, 0],zoom: 0})});</script>
</body>
</html>

先让我们用浏览器打开simple_map.html文件:

地图显示出来了!

你可以用鼠标滚轮来放大和缩小地图,以及使用左键按住地图随意拖动。

那么上面的逻辑代码,也就是JavaScript那部分的代码是什么意思呢?

其实很简单:

首先,调用了ol.Map类生成了一个地图容器对象,通过target参数关联到div容器(id为"map"的div元素)。

然后通过layers参数设置需要加载的瓦片图层(ol.layer.Tile),这个瓦片图层中包含了一个数据源(ol.source.OSM),这个数据源是OpenStreetMap(一个开放数据源的免费地图)的地图数据,也就是ol.source.OSM这个类封装了加载OSM地图数据的详细实现。

最后通过view参数设置地图视图(ol.View),地图视图中也设置了相应的空间参考系统(projection)、地图视图中心点(center),地图视图缩放级别(zoom)。

怎么样,是不是很简单?

什么?很难?。。。。

没有关系,后面还会详细讲解它的原理。。。

三、OpenLayers的DOM元素组织结构

那么地图容器(ol.Map类)是如何将设置的图层数据渲染呈现到Web客户端的呢?

我们来看上面那个示例的DOM元素组织结构。

使用浏览器打开simple_map.html,并打开控制台的Elements选项卡,逐一点开DOM元素层次:

我们可以发现好几层DOM元素层。

首先OpenLayers会在我们自定义的div元素(即id为map的div元素)中创建一个Viewport容器,地图中的所有内容都放置在Viewport中呈现。

在Viewport容器中分别创建了如下三个关键的元素层,分别渲染呈现地图容器中的内容:

  • 地图渲染层    ——    这是一个canvas元素,地图基于canvas方式渲染
  • 内容叠加层    ——    用于放置叠置层(ol.Overlay,后面会详细介绍)内容,如在地图上添加弹窗、图片等等
  • 地图控件层    ——    用于放置控件,默认情况下会放置ol.control.Zoom(用于控制地图放大、缩小)、ol.control.Rotate(用于控制地图旋转)、ol.control.Attribution(用于控制地图右下角标记)这三个控件。

OpenLayers官方教程二:实现简单的地图显示相关推荐

  1. android ui框架详解,多图详解 “Android UI”设计官方教程(二)

    编者注:本文为Android的官方开发者博客发了一份幻灯片的翻译文档的第二部分,专门介绍了一些Android UI设计的小贴士,我们在介绍这个幻灯片的第一部分<多图详解 "Androi ...

  2. SCAPY官方教程二

    一.SCAPY版本 根据您的平台和您要使用的 Scapy 版本,这些步骤中的每一个都可以以不同的方式完成.请遵循特定于平台的说明以获取更多详细信息. 在 Scapy v2 中使用 from scapy ...

  3. openlayers官方教程(一)Introduction

    近期开始学习openlayers,发现国内不少中文资源较老,还是看官方文档方便,根据自己的理解,把核心用博客记录下来,方便自己学习回顾.官网地址:http://openlayers.org/works ...

  4. openlayers官方教程(三)Basics——Zooming to your location

    Zooming to your location 浏览器提供了获取用户当前位置的API,我们可以利用这个来定位当前用户所在. Application changes 首先,将map赋值到一个常量,就可 ...

  5. openlayers官方教程(八)Vector Data——Snapping

    Snapping 你可能已经发现一个问题:虽然很容易就画出新的features,但是新画出的features跟原有的features没有拓扑关系.除此之外,当在修改features时,我们在多边形内增 ...

  6. Tensorflow 2 当场抓获官方教程

    文章目录 0. 写在前面 1. 最简单的教程 0. 写在前面 本教程内容与Tensorflow 2 官方教程没什么区别,区别大概就是作者做了个翻译然后加了点自己的理解粑,也就是将官方教程-- 1. 最 ...

  7. openlayers地图旋转_OpenLayers教程二:实现简单的地图显示

    本文衔接上一篇文章:不睡觉的怪叔叔:OpenLayers教程二:实现简单的地图显示​zhuanlan.zhihu.com 经过上一篇文章对OpenLayers的简单了解以后,现在让我们来实现一个简单的 ...

  8. 《SteamVR2.2.0官方教程(二)》(Yanlz+Unity+XR+VR+AR+MR+SteamVR+Valve+Tutorials+Interaction+Oculus+立钻哥哥++ok++)

    <SteamVR2.2.0官方教程> <SteamVR2.2.0官方教程> 版本 作者 参与者 完成日期 备注 SteamVR2.2.0_Tutorials_V01_1.0 严 ...

  9. pytorch官方教程中文版(二)学习PyTorch

    pytorch编程环境是1.9.1+cu10.2 建议有能力的直接看官方网站英文版! 下面所示是本次教程的主要目录: pytorch官方教程中文版: PyTorch介绍 学习PyTorch 图像和视频 ...

  10. mysql使用简单教程_Mysql使用简单教程(二)_MySQL

    接上文Linux系统下Mysql使用简单教程(一) 字段参数以"(字段名1 数据类型1,字段名2 数据类型2,......)"的形式构建. 关于mysql常用的数据类型,一下是比较 ...

最新文章

  1. NVIDIA Turing Architecture架构设计(下)
  2. mysql查看表格的列信息
  3. 基于小波变换实现图像增强
  4. 通过图形界面配置Exchange2010 DAG
  5. imx6背光驱动调试
  6. spec linux,linux – 在RPM包中SPEC文件中1%{?dist}的含义是什么?
  7. [PHP] 项目实践中使用的IOC容器思想
  8. python二维高斯分布生成_python 多维高斯分布数据生成方式
  9. 从基础到实践,一文带你看懂HashMap
  10. 使用mouse without borders无界键盘鼠标工具实现一套键盘鼠标控制两台电脑(非常的奈斯)
  11. win系统连接交换机并设置固定ip地址
  12. 一位非米粉关于小米的深度报告
  13. 哈雷haley教你如何用你的手机测试你的移动端项目
  14. 红黑树详解三:红黑树的删除
  15. 辅助神器——Kaggle
  16. html中 videojs 播放m3u8文件【方式一】
  17. 【机器学习】【隐马尔可夫模型-3】后向算法:算法详解+示例讲解+Python实现
  18. Android应用接入微信开放平台
  19. 林纳斯·托瓦兹和Linux行为准则:揭穿7个谬论
  20. ZUCC_操作系统_Lab4线程的创建与管理

热门文章

  1. HTML的head,头头头头!!!
  2. c++/c语言(高质量程序设计指南林锐建议总结)
  3. TabHost眼睛会骗人
  4. InfoPath 2007 --来自microsoft.com
  5. 【毕设教程】python区块链实现 - proof of work工作量证明共识算法
  6. Android车载蓝牙相关开发4:蓝牙电话操作器BluetoothHeadsetClient
  7. 2.0 Mesh Beacon帧格式
  8. App - 电影天堂第三方客户端
  9. 忘记了已保存自动登录的密码,怎么办?
  10. 数学三次方的计算机符号,数学符号三次方