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 相关文章推荐
基于JQuery的日期联动实现代码
Feb 24 Javascript
使用JQUERY进行后台页面布局控制DIV实现左右式
Jan 07 Javascript
javascript 实现子父窗体互相传值的简单实例
Feb 17 Javascript
基于Bootstrap3表格插件和分页插件实例详解
May 17 Javascript
AngularJS 依赖注入详解和简单实例
Jul 28 Javascript
微信小程序  自定义创建详细介绍
Oct 27 Javascript
JS实现快速的导航下拉菜单动画效果附源码下载
Nov 01 Javascript
jQuery特殊符号转义的实现
Nov 30 Javascript
ionic2 tabs使用 Modal底部tab弹出框
Dec 30 Javascript
jQuery DateTimePicker 日期和时间插件示例
Jan 22 Javascript
国内常用的js类库大全(CDN公共库)
Jun 24 Javascript
jQuery实现图片切换效果
Oct 19 jQuery
在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
大师制作的中短波矿石收音机
2020/04/02 无线电
PHP开发大型项目的一点经验
2006/10/09 PHP
附件名前加网站名
2008/03/23 PHP
PHP中文件缓存转内存缓存的方法
2011/12/06 PHP
(PHP实现)只使用++运算实现加法,减法,乘法,除法
2013/06/27 PHP
深入php内核之php in array
2015/11/10 PHP
高性能web开发 如何加载JS,JS应该放在什么位置?
2010/05/14 Javascript
全面解析Bootstrap布局组件应用
2016/02/22 Javascript
详解JavaScript节流函数中的Throttle
2016/07/16 Javascript
最全面的JS倒计时代码
2016/09/17 Javascript
javaScript语法总结
2016/11/25 Javascript
基于JS实现仿百度百家主页的轮播图效果
2017/03/06 Javascript
基于Vue实现支持按周切换的日历
2020/09/24 Javascript
bootstrap table实现点击翻页功能 可记录上下页选中的行
2017/09/28 Javascript
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
vue组件横向树实现代码
2018/08/02 Javascript
解决angular2在双向数据绑定时[(ngModel)]无法使用的问题
2018/09/13 Javascript
JS实现获取数组中最大值或最小值功能示例
2019/03/02 Javascript
javascript异步编程的六种方式总结
2019/05/17 Javascript
vue分页插件的使用方法
2019/12/25 Javascript
Node使用Nodemailer发送邮件的方法实现
2020/02/24 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
2020/12/30 Vue.js
零基础学Python(一)Python环境安装
2014/08/20 Python
Python socket实现的简单通信功能示例
2018/08/21 Python
python-itchat 获取微信群用户信息的实例
2019/02/21 Python
python将时分秒转换成秒的实例
2019/12/07 Python
TensorFlow tf.nn.conv2d实现卷积的方式
2020/01/03 Python
python topk()函数求最大和最小值实例
2020/04/02 Python
浅析python中的del用法
2020/09/02 Python
医学生个人求职信范文
2013/09/24 职场文书
化学专业毕业生自荐信
2013/11/15 职场文书
医务工作者先进事迹材料
2014/01/26 职场文书
学生会干部自荐信
2014/02/04 职场文书
新农村建设典型材料
2014/05/31 职场文书
Java字符缓冲流BufferedWriter
2022/04/09 Java/Android