OpenLayers3实现地图鹰眼以及地图比例尺的添加


Posted in Javascript onSeptember 25, 2020

本文实例为大家分享了OpenLayers3实现地图鹰眼以及地图比例尺的添加的具体代码,供大家参考,具体内容如下

1. 前言

地图鹰眼就是地图的鸟瞰图,就是通常所说的小地图,我们可以通过鹰眼得到当前地图的显示位置,也可以在鹰眼上单击、拖动或移动到想要查看的位置,鹰眼的可见区域比我们所看的主视区的范围要大,鹰眼的中心框就是主视区的可视范围, Openlayers 3 封装的鹰眼控件为 ol.control.OverviewMap ,可以自定义其显示的样式。

2. 实现思路

(1)新建一个网页,并参考前面的文章实现地图显示功能,加载 OSM 瓦片图层。
(2)实例化一个鹰眼控件(ol.control.OverviewMap),跟前面的一样,可以实例化一个默认的鹰眼控件,也可以根据需要设置其参数。
(3)将实例化的鹰眼控件加载到地图容器中。可以在实例化地图容器 Map 的代码中,通过设置 controls 参数加载鹰眼控件,也可以调用 map 对象的 addControl 方法加载控件。

3. 实现代码

HTML:

<!DOCTYPE html>
<html lang="en">

<head>
 <meta charset="UTF-8">
 <title>加载鹰眼控件以及实现地图比例尺</title>
 <link rel="stylesheet" href="css/bootstrap.min.css" >
 <link rel="stylesheet" href="css/ol.css" >
 <link rel="stylesheet" href="css/ZoomSlider.css" >
 <script src="js/ol.js"></script>
 <script src="js/OverviewMap.js"></script>
 <style>
 #map {
  width: 100%;
  height: 100%;
 }
 /* 自定义样式控件 */

 .ol-custom-overviewmap,
 .ol-custom-overviewmap.ol-uncollapsible {
  bottom: auto;
  left: auto;
  right: 0;
  /*右侧显示*/
  top: 0;
  /*顶部显示*/
 }
 /* 鹰眼控件展开时控件外框的样式 */

 .ol-custom-overviewmap:not(.ol-collapsed) {
  border: 1px solid black;
 }
 /* 鹰眼控件中地图容器的样式 */

 .ol-custom-overviewmap .ol-overviewmap-map {
  border: none;
  width: 300px;
 }
 /* 在鹰眼控件中显示当前窗口中主图区域的边框 */

 .ol-custom-overviewmap .ol-overviewmap-box {
  border: 2px solid red;
 }
 /* 在鹰眼控件张开时其控件按钮图标的样式 */

 .ol-custom-overviewmap:not(.ol-collapsed) button {
  bottom: auto;
  left: auto;
  right: 1px;
  top: 1px;
 }
 </style>
</head>

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

</html>

代码解析

上面的代码主要是用于定义鹰眼的样式,,通过 ol-custom-overviewmap 将鹰眼控件设置为右侧顶部显示,并设置鹰眼控件外框,鹰眼中地图容器以及鹰眼按钮的样式。

js代码:

function init() {
 // 实例化鹰眼控件(OverviewMap),自定义其样式
 var overviewMapControl = new ol.control.OverviewMap({
 className: 'ol-overviewmap ol-custom-overviewmap', //鹰眼控件样式
 // 在鹰眼中加载相同坐标系下不同数据源的图层
 layers: [
  new ol.layer.Tile({
  source: new ol.source.OSM({
   'url': 'http://tile.stamen.com/watercolor/{z}/{x}/{y}.jpg'
  })
  })
 ],
 collapseLabel: '\u00BB', //鹰眼控件展开时功能按钮上的标识
 label: '\u00AB', //鹰眼控件折叠时功能按钮上的标识
 collapsed: false //初始为展开方式
 });
 // 实例化map对象,用于加载地图
 var map = new ol.Map({
 target: 'map', //地图容器的div
 // 在地图容器中加载的图层
 layers: [
  new ol.layer.Tile({ //加载瓦片图层数据
  source: new ol.source.OSM() //加载OSM瓦片图层数据
  })
 ],
 // 地图视图设置
 view: new ol.View({
  center: [12000000, 4000000], //设置初始中心
  zoom: 8 //地图初始显示中心
 }),
 // 加载控件到地图容器中
 // 加载鹰眼控件
 controls: ol.control.defaults().extend([overviewMapControl])
 });
}

代码解析

上面代码实例化了一个鹰眼控件,并通过设置控件的相关参数。

(1)layers:鹰眼容器内加载的图层,鹰眼容器与地图容器类似,可以根据需要加载不同于主图的图层数据,但是要主图与鹰眼的缩略图在同一个坐标系下。
(2)collapseLabel:将鹰眼控件展开时功能按钮上的标识。
(3)label:鹰眼控件折叠时功能按钮上的标识,与collapseLabel相对。
(4)collapsed:鹰眼控件初始加载时是否展开显示,false为展开状态。
(5)className:为鹰眼控件的类名,根据此类名来定义整个鹰眼控件的样式。

4. 实现效果

OpenLayers3实现地图鹰眼以及地图比例尺的添加

5. 比例尺的添加

添加比例尺的方法,只要是通过实例化一个比例尺控件(ol.control.ScaleLine),可以根据应用需求进行设置参数,比如可以设置比例尺的单位(units)等。然后通过地图容器 Map 设置其controls 参数进行加载比例尺控件,也可以通过调用 map 对象的 addControl 方法加载控件。

主要代码如下

// 实例化比例尺控件
var scaleLineControl = new ol.control.ScaleLine({
 // 设置比例尺单位为degrees、imperial、us、nautical或metric(度量单位)
 units: "metric"
 });

map.addControl(scaleLineControl);

实现效果

OpenLayers3实现地图鹰眼以及地图比例尺的添加

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

Javascript 相关文章推荐
javascript Select标记中options操作方法集合
Oct 22 Javascript
JS测试显示屏分辨率以及屏幕尺寸的方法
Nov 22 Javascript
深入理解jQuery.data() 的实现方式
Nov 30 Javascript
easyui-datagrid特殊字符不能显示的处理方法
Apr 12 Javascript
详解Vue-cli 创建的项目如何跨域请求
May 18 Javascript
动态加载权限管理模块中的Vue组件
Jan 16 Javascript
解决低版本的浏览器不支持es6的import问题
Mar 09 Javascript
使用vue 国际化i18n 实现多实现语言切换功能
Oct 11 Javascript
一秒学会微信小程序制作table表格
Feb 14 Javascript
postman自定义函数实现 时间函数的思路详解
Apr 17 Javascript
解决layui的form里的元素进行动态生成,验证失效的问题
Sep 14 Javascript
JS实现横向跑马灯效果代码
Apr 20 Javascript
OpenLayers3实现鼠标移动显示坐标
Sep 25 #Javascript
js获取url页面id,也就是最后的数字文件名
Sep 25 #Javascript
OpenLayers3实现图层控件功能
Sep 25 #Javascript
OpenLayers实现图层切换控件
Sep 25 #Javascript
OpenLayers3实现对地图的基本操作
Sep 28 #Javascript
vue中实现弹出层动画效果的示例代码
Sep 25 #Javascript
OpenLayers3加载常用控件使用方法详解
Sep 25 #Javascript
You might like
批量修改RAR文件注释的php代码
2010/11/20 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
2015/03/23 PHP
php 从一个数组中随机的取出若干个不同的数实例
2016/12/31 PHP
THINKPHP3.2使用soap连接webservice的解决方法
2017/12/13 PHP
php nginx 实时输出的简单实现方法
2018/01/21 PHP
JS创建优美的页面滑动块效果 - Glider.js
2007/09/27 Javascript
屏蔽F1~F12的快捷键的js函数
2010/05/06 Javascript
用json方式实现在 js 中建立一个map
2014/05/02 Javascript
js调试系列 控制台命令行API使用方法
2014/06/18 Javascript
超炫的jquery仿flash导航栏特效
2014/11/11 Javascript
js比较日期大小的方法
2015/05/12 Javascript
jQuery position() 函数详解以及jQuery中position函数的应用
2015/12/14 Javascript
Javascript的表单验证-初识正则表达式
2016/03/18 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
2017/01/15 Javascript
滚动条的监听与内容随着滚动条动态加载的实现
2017/02/08 Javascript
Vue单页式应用(Hash模式下)实现微信分享的实例
2017/07/21 Javascript
微信小程序如何获取用户手机号
2018/01/26 Javascript
vue使用vue-i18n实现国际化的实现代码
2018/04/08 Javascript
vue element table 表格请求后台排序的方法
2018/09/28 Javascript
手挽手带你学React之React-router4.x的使用
2019/02/14 Javascript
node微信开发之获取access_token+自定义菜单
2019/03/17 Javascript
jQuery实现点击滚动到指定元素上的方法分析
2020/03/19 jQuery
Python多线程爬虫简单示例
2016/03/04 Python
解决matplotlib库show()方法不显示图片的问题
2018/05/24 Python
解决python3 安装不了PIL的问题
2019/08/16 Python
python函数声明和调用定义及原理详解
2019/12/02 Python
Python3.7实现验证码登录方式代码实例
2020/02/14 Python
pymysql模块使用简介与示例
2020/11/17 Python
html5 video全屏播放/自动播放的实现示例
2020/08/06 HTML / CSS
NARS化妆品官方商店:美国彩妆品牌
2017/08/26 全球购物
优秀员工个人的自我评价
2013/11/29 职场文书
国际贸易系求职信
2014/08/09 职场文书
市贸粮局召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
博士生专家推荐信
2015/03/25 职场文书
婚礼迎宾词大全
2015/08/10 职场文书
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android