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 相关文章推荐
javascript中的parseInt和parseFloat区别
Jul 12 Javascript
js获得当前系统日期时间的方法
May 06 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
Jan 23 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
May 10 Javascript
JQuery 动态生成Table表格实例代码
Dec 02 Javascript
基于ajax和jsonp的原生封装(实例)
Oct 16 Javascript
Node.js创建Web、TCP服务器
Dec 05 Javascript
原生JavaScript实现todolist功能
Mar 02 Javascript
select标签设置默认选中的选项方法
Mar 02 Javascript
浅谈vue中关于checkbox数据绑定v-model指令的个人理解
Nov 14 Javascript
vue-router为激活的路由设置样式操作
Jul 18 Javascript
Vue文本模糊匹配功能如何实现
Jul 30 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
2006/10/09 PHP
发布一个迷你php+AJAX聊天程序[聊天室]提供下载
2007/07/21 PHP
CodeIgniter使用phpcms模板引擎
2013/11/12 PHP
PHP图片处理之图片旋转和图片翻转实例
2014/11/19 PHP
java模拟PHP的pack和unpack类
2016/04/13 PHP
php7新特性的理解和比较总结
2019/04/14 PHP
Laravel 自定命令以及生成文件的例子
2019/10/23 PHP
php使用event扩展的io复用测试的示例
2020/10/20 PHP
Javascript中的Split使用方法与技巧
2007/03/09 Javascript
JavaScript 工具库 Cloudgamer JavaScript Library v0.1 发布
2009/10/29 Javascript
JS解析XML的实现代码
2009/11/12 Javascript
jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
2013/01/15 Javascript
js随机生成字母数字组合的字符串 随机动画数字
2015/09/02 Javascript
js获取及判断键盘按键的方法
2015/12/01 Javascript
深入浅析JavaScript中的constructor
2016/04/19 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
2016/05/31 Javascript
深入理解JavaScript中Ajax
2016/08/02 Javascript
学习Javascript闭包(Closure)知识
2016/08/07 Javascript
利用Bootstrap实现表格复选框checkbox全选
2016/12/21 Javascript
Vue-router结合transition实现app前进后退动画切换效果的实例
2017/10/11 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
2018/10/25 Javascript
微信小程序实现人脸识别登陆的示例代码
2019/04/02 Javascript
wxPython窗口中文乱码解决方法
2014/10/11 Python
python实现简单登陆流程的方法
2018/04/22 Python
spark: RDD与DataFrame之间的相互转换方法
2018/06/07 Python
python入门:这篇文章带你直接学会python
2018/09/14 Python
深入浅析Python中的迭代器
2019/06/04 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
2020/04/07 Python
python字符串的index和find的区别详解
2020/06/20 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
2020/11/24 Python
PUMA官方商城:世界领先的运动品牌之一
2016/11/16 全球购物
法国美发器材和产品购物网站:Beauty Coiffure
2016/12/05 全球购物
优秀经理事迹材料
2014/02/01 职场文书
2015年机械设备管理工作总结
2015/05/04 职场文书
新党员入党决心书
2015/09/22 职场文书
【海涛dota解说】一房久违的影魔魂守二连发
2022/04/01 DOTA