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 08 Javascript
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
Aug 28 Javascript
深入理解Javascript作用域与变量提升
Dec 09 Javascript
jQuery中事件对象e的事件冒泡用法示例介绍
Apr 25 Javascript
浅谈javascript中的加减时间
Jul 12 Javascript
AngularJS  $on、$emit和$broadcast的使用
Sep 05 Javascript
微信公众平台开发教程(五)详解自定义菜单
Dec 02 Javascript
vue-cli+iview项目打包上线之后图标不显示问题及解决方法
Oct 16 Javascript
js中Function引用类型常见有用的方法和属性详解
Dec 11 Javascript
JS实现分页导航效果
Feb 19 Javascript
如何在vue中使用jointjs过程解析
May 29 Javascript
vue中控制mock在开发环境使用,在生产环境禁用方式
Apr 06 Vue.js
在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 Session变量不能传送到下一页的解决方法
2009/11/27 PHP
PHP CodeBase:将时间显示为&quot;刚刚&quot;&quot;n分钟/小时前&quot;的方法详解
2013/06/06 PHP
基于php冒泡排序算法的深入理解
2013/06/09 PHP
php单例模式示例分享
2015/02/12 PHP
php检测图片主要颜色的方法
2015/07/01 PHP
《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型
2012/02/27 Javascript
JavaScript类属性的访问方式详解
2014/02/11 Javascript
js中的caller和callee属性介绍和例子
2014/06/07 Javascript
javascript每日必学之基础入门
2016/02/16 Javascript
解决JS组件bootstrap table分页实现过程中遇到的问题
2016/04/21 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
网页挂马方式整理及详细介绍
2016/11/03 Javascript
nodejs和C语言插入mysql数据库乱码问题的解决方法
2017/04/14 NodeJs
es7学习教程之fetch解决异步嵌套问题的方法示例
2017/07/21 Javascript
iview table render集成switch开关的实例
2018/03/14 Javascript
Vue.js单向绑定和双向绑定实例分析
2018/08/14 Javascript
微信小程序基于Taro的分享图片功能实践详解
2019/07/12 Javascript
微信小程序3D轮播实现代码
2019/09/19 Javascript
Layui数据表格 前后端json数据接收的方法
2019/09/19 Javascript
vue-drag-chart 拖动/缩放图表组件的实例代码
2020/04/10 Javascript
react组件基本用法示例小结
2020/04/27 Javascript
JS实现炫酷雪花飘落效果
2020/08/19 Javascript
Python实现基本线性数据结构
2016/08/22 Python
Python新手们容易犯的几个错误总结
2017/04/01 Python
python3 pillow生成简单验证码图片的示例
2017/09/19 Python
pandas to_excel 添加颜色操作
2020/07/14 Python
布局和排版教程 纯css3实现图片三角形排列
2014/10/17 HTML / CSS
可以使用抽象函数重写基类中的虚函数吗
2013/06/02 面试题
管理科学大学生求职信
2013/11/13 职场文书
医生进修自我鉴定
2014/01/19 职场文书
光学与应用专业毕业生求职信
2014/09/01 职场文书
小学六一儿童节活动总结
2015/05/05 职场文书
2015年节能降耗工作总结
2015/05/22 职场文书
导游词之湖北武当山
2019/09/23 职场文书
实体类或对象序列化时,忽略为空属性的操作
2021/06/30 Java/Android
详细聊一聊mysql的树形结构存储以及查询
2022/04/05 MySQL