OpenLayers3加载常用控件使用方法详解


Posted in Javascript onSeptember 25, 2020

本文实例为大家分享了OpenLayers3加载常用控件使用的具体代码,供大家参考,具体内容如下

1. 前言

地图控件就是对地图的缩放、全屏、坐标显示控件等,方便我们对地图进行操作。OpenLayers 3 封装了很多常用的地图控件,例如地图导航、比例尺、鹰眼、测量工具等,这些控件都是基于ol.control.Control虚基类进行封装,ol.control.Control的子类为各类常用的地图控件,可以通过Map对象的Control参数进行设置或者通过addControl方法将控件添加到地图窗口中。

在加载地图时OpenLayers 3 通过ol.control.defaults 默认加载了三个常用的空间:缩放控件(ol.control.Zoom)、旋转控件(ol.control.Roate)、图层数据源属性控件(ol.control.Attribution),因此我们可以通过鼠标在地图容器的左上角的缩放按钮,以及右下角的图层数据源控件来对地图进行操作。

OpenLayers3加载常用控件使用方法详解

2. 控件

2.1 导航控件

导航控件就是实现对地图的按级缩放,拖动导航条的上的滑块可以实现缩放操作。OpenLayers 3 框架提供的控制地图缩放的相关控件包括地图缩放控件(ol.control.Zoom)、缩放滑块(ol.control.ZoomSlider)、按钮式缩放到特定范围的控件(ol.control.ZoomToExtent),可以自定义这些控件的样式。
下面我们将通过修改地图缩放的相关控件的默认样式,实现一个导航条,效果如下:

OpenLayers3加载常用控件使用方法详解

实现步骤如下:

(1)新建一个页面,加载OSM瓦片地图,具体可以查看这篇文章OpenLayers3基础教程之实现地图显示功能
(2)地图加载完成后,通过初始化ZoomSlider、ZoomToExtent、控件,并通过addControl方法将控件加载到地图容器中。

代码如下

<!DOCTYPE html>
<html>

<head>
 <meta charset="utf-8" />
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <title>自定义导航功能</title>
 <!-- 引入ol.css,以及ol.css -->
 <link rel="stylesheet" href="css/ol.css" rel="external nofollow" >
 <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
 })

 });
 //实例化ZoomSlider控件并加载到地图容器中
 var zoomslider = new ol.control.ZoomSlider();
 map.addControl(zoomslider);
 //实例化zoomToExent控件并加载到地图容器中
 var zoomToExent = new ol.control.ZoomToExtent({
 extend: [13100000, 4290000,
  13200000, 5210000
 ]
 });
 map.addControl(zoomToExent);
 }
 </script>
</head>

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

</html>

代码说明:首先实例化控件对象,然后调用Map的addControl方法加载到地图容器即可,代码中的ZoomToExtent控件的extent参数为地图的缩放范围,就是将当前地图缩放到此范围,在视图中会显示此范围。

2.2 修改缩放控件样式

我们可以通过css样式来设置Zoom、ZoomSlider、ZoomToExtent 的样式,调整他在地图中显示的位置。代码如下:

#map .ol-zoom .ol-zoom-out {
 margin-top: 204px;
}

#map .ol-zoomslider {
 background-color: transparent;
 top: 2.3em;
}

#map .ol-touch .ol-zoom .ol-zoom-out {
 margin-top: 212px;
}

#map .ol-touch .ol-zoomslider {
 top: 2.75em;
}

#map .ol-zoom-in.ol-has-tooltip:hover [role=tooltip],
#map .ol-zoom-in.ol-has-tooltip:focus [role=tooltip] {
 top: 3px;
}

#map .ol-zoom-out.ol-has-tooltip:hover [role=tooltip],
#map .ol-zoom-out.ol-has-tooltip:focus [role=tooltip] {
 top: 232px;
}


/*设置缩放控件ZoomToExtent的样式,将其放到导航条下方
 */

#map .ol-zoom-extent {
 top: 280px;
}

实现效果如下

OpenLayers3加载常用控件使用方法详解

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

Javascript 相关文章推荐
jValidate 基于jQuery的表单验证插件
Dec 12 Javascript
关于onScroll事件在IE6下每次滚动触发三次bug说明
Sep 21 Javascript
点击页面其它地方隐藏该div的两种思路
Nov 18 Javascript
Javascript改变CSS样式(局部和全局)
Dec 18 Javascript
javascript里使用php代码实例
Dec 13 Javascript
Angularjs注入拦截器实现Loading效果
Dec 28 Javascript
jQuery通过写入cookie实现更换网页背景的方法
Apr 15 Javascript
对javascript继承的理解
Oct 11 Javascript
详解React项目的服务端渲染改造(koa2+webpack3.11)
Mar 19 Javascript
JS获取浏览器地址栏的多个参数值的任意值实例代码
Jul 24 Javascript
使用Vue 实现滑动验证码功能
Jun 27 Javascript
JS将时间秒转换成天小时分钟秒的字符串
Jul 10 Javascript
在webstorm中配置less的方法详解
Sep 25 #Javascript
OpenLayers加载缩放控件使用方法详解
Sep 25 #Javascript
Javascript confirm多种使用方法解析
Sep 25 #Javascript
OpenLayers3实现地图显示功能
Sep 25 #Javascript
openlayers实现图标拖动获取坐标
Sep 25 #Javascript
openlayers实现地图弹窗
Sep 25 #Javascript
openlayers实现地图测距测面
Sep 25 #Javascript
You might like
请离开include_once和require_once
2013/07/18 PHP
php从完整文件路径中分离文件目录和文件名的方法
2015/03/13 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
2016/02/15 PHP
ASP小贴士/ASP Tips javascript tips可以当桌面
2009/12/10 Javascript
js动态创建、删除表格示例代码
2013/08/07 Javascript
jQuery的:parent选择器定义和用法
2014/07/01 Javascript
IE下通过a实现location.href 获取referer的值
2014/09/04 Javascript
jQuery类选择器用法实例
2014/12/23 Javascript
javascript下拉框选项单击事件的例子分享
2015/03/04 Javascript
jQuery绑定自定义事件的魔法升级版
2016/06/30 Javascript
js窗口震动小程序分享
2016/11/28 Javascript
微信小程序 swiper组件构建轮播图的实例
2017/09/20 Javascript
electron demo项目npm install安装失败的解决方法
2018/02/06 Javascript
Node.js 进程平滑离场剖析小结
2019/01/24 Javascript
Vue实现指令式动态追加小球动画组件的步骤
2020/12/18 Vue.js
[49:07]VGJ.T vs Optic Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
python使用新浪微博api上传图片到微博示例
2014/01/10 Python
Python实现屏幕截图的代码及函数详解
2016/10/01 Python
Python制作刷网页流量工具
2017/04/23 Python
python实现ID3决策树算法
2017/12/20 Python
Python基于OpenCV实现视频的人脸检测
2018/01/23 Python
Python中max函数用于二维列表的实例
2018/04/03 Python
PyCharm代码回滚,恢复历史版本的解决方法
2018/10/22 Python
Python中的几种矩阵乘法(小结)
2019/07/10 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
2019/11/22 Python
python3用urllib抓取贴吧邮箱和QQ实例
2020/03/10 Python
初中生自我鉴定
2014/02/04 职场文书
美丽家庭事迹材料
2014/05/03 职场文书
中层干部培训方案
2014/06/16 职场文书
信息管理与信息系统专业求职信
2014/06/21 职场文书
关于读书的演讲稿300字
2014/08/27 职场文书
十八大标语口号
2014/10/09 职场文书
致百米运动员广播稿5篇
2014/10/13 职场文书
整改报告怎么写
2014/11/06 职场文书
毕业论文答辩稿范文
2015/06/23 职场文书
BCL经典机 SONY ICF-5900W电路分析
2022/04/24 无线电