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 相关文章推荐
js 数值项目的格式化函数代码
May 14 Javascript
通过AJAX的JS、JQuery两种方式解析XML示例介绍
Sep 23 Javascript
Javascript表单验证要注意的事项
Sep 29 Javascript
setTimeout内不支持jquery的选择器的解决方案
Apr 28 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
Aug 01 Javascript
jquery ui dialog替代confirm实例分析
Jan 25 Javascript
使用Jasmine和Karma对AngularJS页面程序进行测试
Mar 05 Javascript
基于JavaScript实现跳转提示页面
Sep 24 Javascript
详解vue 数组和对象渲染问题
Sep 21 Javascript
TypeScript中使用getElementXXX()的示例代码
Sep 12 Javascript
jQuery实现的移动端图片缩放功能组件示例
May 01 jQuery
Vue组件通信$attrs、$listeners实现原理解析
Sep 03 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下判断网址是否有效的代码
2011/10/08 PHP
PHP高级对象构建 多个构造函数的使用
2012/02/05 PHP
php文字水印和php图片水印实现代码(二种加水印方法)
2013/12/25 PHP
php格式化时间戳
2016/12/17 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
2017/10/11 PHP
How to Auto Include a Javascript File
2007/02/02 Javascript
jquery实现漫天雪花飞舞的圣诞祝福雪花效果代码分享
2015/08/20 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
2015/09/16 Javascript
基于nodejs+express(4.x+)实现文件上传功能
2015/11/23 NodeJs
jQuery实现验证年龄简单思路
2016/02/24 Javascript
AngularJS使用指令增强标准表单元素功能
2016/07/01 Javascript
JavaScript每天必学之事件
2016/09/18 Javascript
jQuery实现可移动选项的左右下拉列表示例
2016/12/26 Javascript
js实现图片上传预览原理分析
2017/07/13 Javascript
Angularjs自定义指令实现分页插件(DEMO)
2017/09/16 Javascript
Angular2.0实现modal对话框的方法示例
2018/02/18 Javascript
webpack 单独打包指定JS文件的方法
2018/02/22 Javascript
详解基于Koa2开发微信二维码扫码支付相关流程
2018/05/16 Javascript
详解在React中跨组件分发状态的三种方法
2018/08/09 Javascript
django使用channels2.x实现实时通讯
2018/11/28 Javascript
node命令行工具之实现项目工程自动初始化的标准流程
2019/08/12 Javascript
websocket4.0+typescript 实现热更新的方法
2019/08/14 Javascript
python提取字典key列表的方法
2015/07/11 Python
Python网络编程详解
2017/10/31 Python
Django ORM 聚合查询和分组查询实现详解
2019/08/09 Python
pymysql模块使用简介与示例
2020/11/17 Python
python中uuid模块实例浅析
2020/12/29 Python
一文带你掌握Pyecharts地理数据可视化的方法
2021/02/06 Python
使用HTML5拍照示例代码
2013/08/06 HTML / CSS
Maison Lab荷兰:名牌Outlet购物
2018/08/10 全球购物
开办化妆品公司创业计划书
2013/12/26 职场文书
防灾减灾活动总结
2014/08/30 职场文书
2014年“世界无车日”活动方案
2014/09/21 职场文书
房屋鉴定委托书范本
2014/09/23 职场文书
2015年七年级班主任工作总结
2015/05/21 职场文书
Python爬虫之自动爬取某车之家各车销售数据
2021/06/02 Python