OpenLayers3实现地图显示功能


Posted in Javascript onSeptember 25, 2020

本文实例为大家分享了OpenLayers3实现地图显示的具体代码,供大家参考,具体内容如下

1.配置开发环境

使用OpenLayers 3开发WebGIS应用,我们首先需要配置开发环境,首先我们需要在openlayers官网获取OpenLayers 3的开发库。下载链接:官网。打开后如图所示:

OpenLayers3实现地图显示功能

需要注意的是这里下载有两个版本,①:仅包括开发库(开发与调试的JS库以及CSS文件),②:包括开发库、开发库源码、示例、API等所有开发资源。

在这里我下载了第一个版本,下载后如图所示:

OpenLayers3实现地图显示功能

2. 显示一个OSM瓦片地图

这里我们介绍基于OpenLayers 3 API显示一个OSM瓦片地图(即OpenStreeMap的瓦片地图)。

方法1

实现思路:对地图的显示,首先需要创建一个地图容器对象(oL.Map类),然后在容器里面加载图层来实现。

实现步骤:

1.新建一个文件夹,用于我们编写网页,然后在文件夹中新建js文件夹,以及css文件夹,首先我们将前面下载的OpenLayers 3 的开发库和样式文件(ol.js、ol.css)复制到js文件夹中。
2.在文件夹中新建一个HTML网页,在网页的head 标签中引入ol.js与ol.css。
3.在网页body 中新建一个div作为地图容器,设置其id为“map”,并通过css设置来设置容器的样式。
4.编写代码创建一个地图容器对象(ol.Map),通过target参数关联到目标容器(id为“map”的div),通过view参数设置地图视图(ol.View)。

实现代码如下:

<!DOCTYPE html>
<html>

<head>
 <meta charset="utf-8" />
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <title>加载OSM地图</title>
 <!-- 引入ol.css,以及ol.css -->
 <link rel="stylesheet" href="css/ol.css" >
 <script src="js/ol.js"></script>
 <style>
 #map {
 width: 100%;
 height: 100%;
 position: absolute;
 }
 </style>
</head>

<body>
 <div id="map"></div>
 <script type="text/javascript">
 //实例化Map对象,用于加载地图
 var map = new ol.Map({
 target: 'map', //地图容器div的id
 //设置在地图容器中加载图层
 layers: [
 //加载瓦片图层
 new ol.layer.Tile({
 //图层对应的数据源,这里为加载OpenStreetMap在线瓦片服务数据
 source: new ol.source.OSM()
 })
 ],
 //地图视图设置
 view: new ol.View({
 center: [32, 113], //地图显示的初始中心
 zoom: 2 //地图初始显示的级别
 })
 });
 </script>
</body>

</html>

代码说明:首先这是一种最简单的静态加载地图的方法,我们在初始化一幅地图(map)时,至少需要一个可视区域(View),以及在可以区域中显示的一个或者多个图层(layer),和一个地图加载的目标标签(target)。所以通过target、layers、view参数来设置加载地图必须的瓦片图层、地图视图和加载的目标HTML标签。

1.ol.Map:地图容器类,是OpenLayers 3 的核心部件,用于显示地图,可以加载各种类型的图层,加载地图控件(比例尺,鹰眼,地图的缩放等等),以及与地图交互的功能控件等。通过实例化地图容器对象来加载地图,并对target、layers、view参数进行设置,这是地图加载的必备三要素。
2.ol.layer.Tile:瓦片图层类,主要用于加载瓦片图层,可以通过实例化瓦片图层对象,绑定数据源(source)加载对应的瓦片图层。
3.ol.source.OSM :封装的OpenStreetMap在线瓦片服务数据的数据源类,创建此数据源对象并加载到瓦片图层中。
ol.View:地图视图类,主要是控制地图与人的交互,如缩放、调整地图显示分辨率以及旋转地图等。通过实例化地图视图对象,设置地图的中心点(center)、初试显示中心(zoom)等参数。

在加载图层是,除了通过layers参数来设置地图这种方式外,Map也提供了addLayer方法动态加载图层对象。例如加载图层的代码如下:

<div id="map"></div>
<script type="text/javascript">
 //实例化Map对象,用于加载地图
 var map = new ol.Map({
 target: 'map', //地图容器div的id
 //设置在地图容器中加载图层
 layers: [],
 //地图视图设置
 view: new ol.View({
 center: [32, 113], //地图显示的初始中心
 zoom: 2 //地图初始显示的级别
 })
 });
 //实例化OSM瓦片地图的瓦片图层
 var tileLayer = new ol.layer.Tile({
 source: new ol.source.OSM()
 });
 //将瓦片图层添加到地图容器中
 map.addLayer(tileLayer);
</script>

方法2

第一种方法是直接在HTML页面中的 body 标签中加载地图,这种方式在浏览器解析时按照顺序加载执行,第二种方法就是我们可以现在html页面的head 的标签中编写javascript代码,也就是说写一个加载OSM地图的init函数,然后在网页的 body 标签中由onload方法调用加载地图的init函数,这种加载方法在浏览器解析时,首先加载javascript,当加载页面内容时在调用处,再执行相应的javascript,实现页面加载完成后立即加载地图数据的功能。

代码如下:

<!DOCTYPE html>
<html>

<head>
 <meta charset="utf-8" />
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <title>加载OSM地图</title>
 <!-- 引入ol.css,以及ol.css -->
 <link rel="stylesheet" href="css/ol.css" >
 <script src="js/ol.js"></script>
 <style>
 #map {
 width: 100%;
 height: 100%;
 position: absolute;
 }
 </style>
 <script>
 function init() {
 //实例化Map对象,用于加载地图
 var map = new ol.Map({
 target: 'map', //地图容器div的id
 //在地图容器中加载的图层
 layers: [
 //加载瓦片图层数据
 new ol.layer.Tile({
 source: new ol.source.OSM() //加载osm瓦片
 })
 ],
 //地图视图设置
 view: new ol.View({
 center: [0, 0],
 zoom: 2

 })

 });

 }
 </script>
</head>

<body onload="init()">
 <div id="map"></div>
</body>

</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
select、radio表单回显功能实现避免使用jquery载入赋值
Jun 08 Javascript
GridView中获取被点击行中的DropDownList和TextBox中的值
Jul 18 Javascript
使用js写的一个简易的投票
Nov 27 Javascript
我的Node.js学习之路(一)
Jul 06 Javascript
IE及IE6浏览器中判断JS文件加载成功失败的方法
Feb 18 Javascript
EasyUI中datagrid在ie下reload失败解决方案
Mar 09 Javascript
jQuery实现冻结表格行和列
Apr 29 Javascript
JavaScript人脸识别技术及脸部识别JavaScript类库Tracking.js
Sep 14 Javascript
js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
Nov 09 Javascript
使用Javascript实现选择下拉菜单互移并排序
Feb 23 Javascript
认识jQuery的Promise的具体使用方法
Oct 10 jQuery
layui 选择列表,打勾,点击确定返回数据的例子
Sep 02 Javascript
openlayers实现图标拖动获取坐标
Sep 25 #Javascript
openlayers实现地图弹窗
Sep 25 #Javascript
openlayers实现地图测距测面
Sep 25 #Javascript
openlayers 3实现车辆轨迹回放
Sep 24 #Javascript
vue-openlayers实现地图坐标弹框效果
Sep 24 #Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
Sep 24 #Javascript
Vue+Openlayers自定义轨迹动画
Sep 24 #Javascript
You might like
php把数据表导出为Excel表的最简单、最快的方法(不用插件)
2014/05/10 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
2016/10/08 PHP
php获取访问者浏览页面的浏览器类型
2017/01/23 PHP
PHP正则匹配反斜杠'\'和美元'$'的方法
2017/02/08 PHP
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
2011/04/27 Javascript
jQuery的deferred对象使用详解
2011/08/20 Javascript
js change,propertychange,input事件小议
2011/12/20 Javascript
jQuery使用$.ajax进行即时验证实例详解
2015/12/11 Javascript
JavaScript编写带旋转+线条干扰的验证码脚本实例
2016/05/30 Javascript
jQuery增加和删除表格项目及实现表格项目排序的方法
2016/05/30 Javascript
BootStrap tab选项卡使用小结
2020/08/09 Javascript
详解nodejs 文本操作模块-fs模块(二)
2016/12/22 NodeJs
原生JS仿QQ阅读点击展开、收起效果
2017/03/08 Javascript
jQuery插件zTree实现的基本树与节点获取操作示例
2017/03/08 Javascript
微信小程序scroll-view组件实现滚动动画
2018/01/31 Javascript
几个你不知道的技巧助你写出更优雅的vue.js代码
2018/06/11 Javascript
vue使用Proxy实现双向绑定的方法示例
2019/03/20 Javascript
javascript实现蒙版与禁止页面滚动
2020/01/11 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
2020/03/25 Javascript
[55:48]VGJ.S vs TNC Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
Python获取Linux系统下的本机IP地址代码分享
2014/11/07 Python
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
2020/08/03 Python
真正了解CSS3背景下的@font face规则
2017/05/04 HTML / CSS
浅谈移动端网页图片预加载方案
2018/11/05 HTML / CSS
英国现代、当代和设计师家具店:Furntastic
2020/07/18 全球购物
自我鉴定思想方面
2013/10/07 职场文书
计算机应用专业毕业生求职信
2013/10/24 职场文书
学校爱心捐款倡议书
2014/05/13 职场文书
授权委托书公证
2014/09/14 职场文书
2014年信访工作总结
2014/11/17 职场文书
离婚协议书范文
2015/01/26 职场文书
幼儿园教研工作总结2015
2015/05/12 职场文书
Nginx URL重写rewrite机制原理及使用实例
2021/04/01 Servers
SQL IDENTITY_INSERT作用案例详解
2021/08/23 MySQL
springboot应用服务启动事件的监听实现
2022/04/06 Java/Android
WINDOWS下安装mysql 8.x 的方法图文教程
2022/04/19 MySQL