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 相关文章推荐
改进UCHOME的记录发布,增强可访问性用户体验
Jan 17 Javascript
html+javascript实现可拖动可提交的弹出层对话框效果
Aug 05 Javascript
javascript实现促销倒计时+fixed固定在底部
Sep 18 Javascript
jQuery回调函数的定义及用法实例
Dec 23 Javascript
jquery无限级联下拉菜单简单实例演示
Nov 23 Javascript
Hallo.js基于jQuery UI所见即所得的Web编辑器
Jan 26 Javascript
AngularJS入门教程之MVC架构实例分析
Nov 01 Javascript
JS实现搜索关键词的智能提示功能
Jul 07 Javascript
jQuery实现的鼠标响应缓冲动画效果示例
Feb 13 jQuery
如何能分清npm cnpm npx nvm
Jan 17 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
Sep 19 Javascript
手把手教您实现react异步加载高阶组件
Apr 07 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
php预定义常量
2006/12/25 PHP
PHP+Ajax+JS实现多图上传
2016/05/07 PHP
PHP rmdir()函数的用法总结
2019/07/02 PHP
JQuery 拾色器插件发布-jquery.icolor.js
2010/10/20 Javascript
浏览器窗口大小变化时使用resize事件对框架不起作用的解决方法
2014/05/11 Javascript
JavaScript实现同步于本地时间的动态时间显示方法
2015/02/02 Javascript
JS实现可调整倒计时间代码分享
2015/08/18 Javascript
RequireJS多页面应用实例分析
2016/06/29 Javascript
Jquery实现遮罩层的简单实例(就是弹出DIV周围都灰色不能操作)
2016/07/14 Javascript
AngularJS基础 ng-readonly 指令简单示例
2016/08/02 Javascript
JavaScript中如何使用cookie实现记住密码功能及cookie相关函数介绍
2016/11/10 Javascript
详解Angularjs 如何自定义Img的ng-load 事件
2017/02/15 Javascript
理解 Node.js 事件驱动机制的原理
2017/08/16 Javascript
详解Nodejs内存治理
2018/05/13 NodeJs
JavaScript实用代码小技巧
2018/08/23 Javascript
vue 组件中使用 transition 和 transition-group实现过渡动画
2019/07/09 Javascript
vue中添加与删除关键字搜索功能
2019/10/12 Javascript
Python脚本实现DNSPod DNS动态解析域名
2015/02/14 Python
python实现根据窗口标题调用窗口的方法
2015/03/13 Python
python访问系统环境变量的方法
2015/04/29 Python
python机器学习之决策树分类详解
2017/12/20 Python
详解TensorFlow查看ckpt中变量的几种方法
2018/06/19 Python
Numpy 改变数组维度的几种方法小结
2018/08/02 Python
菲律宾最大的网上花店和礼品店:PhilFlower.com
2018/02/09 全球购物
Rag & Bone官网:瑞格布恩高级成衣
2018/04/19 全球购物
美国伴娘礼服商店:Evening Collective
2019/10/07 全球购物
医药代表个人的求职信分享
2013/12/08 职场文书
学校后勤人员职责
2013/12/27 职场文书
商务会议邀请函
2014/01/09 职场文书
遵纪守法演讲稿
2014/05/23 职场文书
先进事迹演讲稿
2014/09/01 职场文书
师德师风个人自我剖析材料
2014/09/27 职场文书
敬业奉献模范事迹材料
2014/12/24 职场文书
2016七一建党节慰问信
2015/11/30 职场文书
sql注入教程之类型以及提交注入
2021/08/02 MySQL
Java 异步任务计算FutureTask
2022/04/28 Java/Android