这些控制器在实现上,并不是在画布上绘制的,而是使用传统的HTML元素来实现的,便于同地图分离,也便于界面实现。

一、All Controllers

OpenLayers 3目前内置的地图控件类都在包ol.control下面,依次有:

  • ol.control.Attribution: 右下角的地图信息控件
  • ol.control.FullScreen: 全屏控件
  • ol.control.MousePosition: 鼠标位置控件
  • ol.control.OverviewMap: 鸟瞰图控件
  • ol.control.Rotate: 指北针控件
  • ol.control.ScaleLine: 比例尺控件
  • ol.control.Zoom: 缩放按钮控件
  • ol.control.ZoomSlider: 缩放滚动条控件
  • ol.control.ZoomToExtent: 放大到设定区域控件

我们可以通过设置值进行选择:

<script type="text/javascript">var map = new ol.Map({// 设置地图控件,默认的三个控件都不显示controls: ol.control.defaults({attribution: true,rotate: false,zoom: false}),layers: [new ol.layer.Tile({source: new ol.source.OSM()})],target: 'map',view: new ol.View({center: ol.proj.transform([104, 30], 'EPSG:4326', 'EPSG:3857'),zoom: 10})});
</script>


把所有的控件都显示出来

<script type="text/javascript">var map2 = new ol.Map({// 在默认控件的基础上,再加上其他内置的控件controls: ol.control.defaults().extend([new ol.control.FullScreen(),new ol.control.MousePosition(),new ol.control.OverviewMap(),new ol.control.ScaleLine(),new ol.control.ZoomSlider(),new ol.control.ZoomToExtent()]),layers: [new ol.layer.Tile({source: new ol.source.OSM()})],target: 'map2',view: new ol.View({center: ol.proj.transform([104, 30], 'EPSG:4326', 'EPSG:3857'),zoom: 10})});
</script>

二、控件原理

我们可以用Chrome浏览器的F12功能查看控件样式源码

我们可以通过更改CSS更改其样式

三、改变控件样式

我们可以在CSS文件中增加这样一段

.ol-zoom .ol-zoom-in {background-color: #0000ff;color: #ff0000;
}

就可以修改我们地图放大按钮的样式了.

其实就是对按钮进行了定位,修改其样式

当我们引入jQuery库后,我们也可以通过JS进行更改

<div id="map2" style="width: 100%"></div>
<script type="text/javascript">new ol.Map({layers: [new ol.layer.Tile({source: new ol.source.OSM()})],target: 'map2',view: new ol.View({center: ol.proj.transform([104, 30], 'EPSG:4326', 'EPSG:3857'),zoom: 10})});// 设置放大按钮符号,下面这个代码需要引入jquery,或者zepto库$('#map2 .ol-zoom-in').html('<>');
</script>

四、自定义控件

<div id="map" style="width: 100%"></div>
<script type="text/javascript">var map = new ol.Map({layers: [new ol.layer.Tile({source: new ol.source.OSM()})],target: 'map',view: new ol.View({center: ol.proj.transform([104, 30], 'EPSG:4326', 'EPSG:3857'),zoom: 10})});// 在viewport节点下添加一个分享按钮var viewport = map.getViewport();$(viewport).append('<div id="share" class="share">分享地图</div>');// 监听按钮点击事件,执行相关操作document.getElementById('share').onclick = function() {alert('分享当前地图给朋友');}
</script>

css

.share {position: absolute;top: 10px;right: 10px;border: 1px;border-color: #333;background-color: #339999;color: #fff;box-shadow: 0px 0px 2px #666;cursor: pointer;padding: 0 4px 0 4px;
}

Openlayer:学习笔记之控件相关推荐

  1. VC学习笔记 -单选按钮控件(Ridio Button)的使用

    在VC++编程过程中,查资料是一个苦差事,案边放了一摞书左翻右翻好是烦人.一赌气就把一些常用的小技巧自己总结了一下,虽费了些功夫,但对以后编程很有好处.现拿出来与大家共享,以后积累多了,作一个CHM电 ...

  2. Asp.net控件开发学习笔记(三)-控件开发基础

    封装      在asp.net中,控件被分为两类.用户控件和自定义服务器控件.前者就是我们经常用来将一些可复用的内容封装成的.ascx文件.这里主要研究后者. 创建自定义服务器控件      创建自 ...

  3. IOS开发学习笔记018- 一般控件的使用

    1.移动 2.动画 3.缩放 3.旋转 4.简化代码 5.总结 UIButton 的两种状态 normal highlighted  1.移动 OC语法规定:不允许直接修改某个对象中结构体属性的成员. ...

  4. android菜鸟学习笔记13----Android控件(二) 自定义控件简单示例

    有时候,可能觉得系统提供的控件太丑,就会需要自定义控件来实现自己想要的效果. 以下主要参考<第一行代码> 1.自定义一个标题栏: 系统自带的标题栏很丑,且没什么大的作用,所以我们之前会在o ...

  5. PR学习笔记——效果控件的相关知识

    效果控件 1.一般调节音量 2.左右鼠标一起点击或者alt+鼠标左键 3.钢笔工具是增添关键帧的 4.alt+ctrl 换视频的位置

  6. C#学习笔记:控件BackColor属性与ForeColor的使用方法

    1.解释 (1)BackColor属性 BackColor属性表示控件的背景颜色,各个颜色颜色分量的取值范围是0-255的整数. (2)ForeColor属性 ForeColor属性表示控件的前景色, ...

  7. C#学习笔记:控件的Dock属性使用,工具栏遮挡解决。

    #Dock属性说明 该属性的用途类似于JAVA中的边框布局.绑定区域类似于东西南北中. Top:顶部,将控件绑定到窗体或页面的顶部,控件跟随顶部移动,一般ToolStrip就是这样的模式 Bottom ...

  8. PyQt5学习笔记- PyQt5控件介绍

    PyQt5控件介绍 一.控件的概念 二.控件结构继承图 一.控件的概念 一个程序界面上的各个独立的元素(一块矩形区域) 具备不同的功能:用户点击.接受用户输入.展示内容.存放其他控件 初始常用控件:按 ...

  9. python Tkinter学习笔记 menu控件 02

    2019独角兽企业重金招聘Python工程师标准>>> ''' Created on 2012-9-19@author: liangqianwu''' #_*_ coding:utf ...

  10. 002柿饼派GUI模组学习之AnimatedImage控件调试

    本文声明:本文为个人学习柿饼派显示模组的相关记录与经验. 002柿饼派GUI模组学习之AnimatedImage 控件调试 1.认识AnimatedImage控件   AnimatedImage是动态 ...

最新文章

  1. merge r语言daframe_R语言读取多个excel文件后合并:rbind/merge/cmd合并
  2. 面试:那些问哭你的Redis分布式锁!
  3. 使用Consul实现服务发现:instance-id自定义(3种方式)
  4. python输出去空格_Python3基础 print(,end=) 输出内容的末尾加入空格
  5. 我学python前一句_Python学习教程:人生苦短,我用Python?入门前你要知道这些
  6. 三十一、Vue框架赶紧来了解一下
  7. OD的hit跟踪和run跟踪
  8. opentrace在mysql中使用_采用OpenReplicator解析MySQL binlog
  9. Serv-U FTP Jail Break(越权遍历目录、下载任意文件)
  10. 出现这6种评估违法状况,征收补偿决定可能被撤销!
  11. php pdf打印横向,如何将pdfFactory打印调整为横向 - 应用技巧 - 常青藤软件工作室...
  12. 数字c语言代码大全,C语言代码大全
  13. [Python人工智能] 十九.Keras搭建循环神经网络分类案例及RNN原理详解
  14. 微信小程序自带地图_微信小程序API 地图组件控制
  15. Git三大特色之Stage(暂存区)
  16. 生成二维码并将Bitmap保存成图片
  17. 使用集成学习提升机器学习算法性能
  18. 人工智能时代是什么时代?
  19. 论文:DKN:Deep Knowledge-Aware Network for News Recommendatio
  20. Unity Steam_VR开发工具插件---VRTK 自带案例分析

热门文章

  1. 13. Blade 模板引擎
  2. 118. PHP 性能问题
  3. RabbitMQ入门指南二(Java)
  4. Binwalk 后门(固件)分析利器
  5. Linux中shell脚本获取当前工作目录
  6. 洛谷 P1993 小K的农场 解题报告
  7. MVC学习笔记:MVC实现用户登录验证ActionFilterAttribute用法并实现统一授权
  8. 《sort命令的k选项大讨论》-linux命令五分钟系列之二十七
  9. 3个开源TTS(一)—安装使用
  10. vue : 无法加载文件 C:\Users\xxx\AppData\Roaming\npm\vue.psl,因为在此系统上禁止运行脚本