OpenLayers3实现对地图的基本操作


Posted in Javascript onSeptember 28, 2020

本文实例为大家分享了OpenLayers3实现对地图的基本操作代码,供大家参考,具体内容如下

1. 前言

对地图的基本操作就是对地图的放大、缩小、移动、复位和更新等,通过使用OpenLayers 3 框架中操作地图视图(View)的相应方法。

2. 实现思路

(1)新建一个网页,参照前面的文章加载OSM瓦片地图,通过视图设置地图的最大、最小缩放级别以及初试旋转角度,通过使用jQuery以及bootstrap来实现在缩放控件以及旋转控件鼠标悬停提示的效果。
(2)在地图容器中新建4个按钮(button),设置按钮的id,通过css控制按钮的样式
(3)为每个按钮添加 onclick 事件,在函数中调用 OpenLayer 3 中操作地图视图的相应方法,来实现单击放大、单击缩小、移动到某一位置以及复位功能。
(4)为缩放控件以及旋转控件添加tooltip提示信息,设置tooltip的冒泡位置。

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/jquery-3.2.1.min.js"></script>
 <script src="js/bootstrap.min.js"></script>
 <script src="js/Operation.js"></script>
 <style>
 #map {
  width: 100%;
  height: 570px;
 }

 #menu {
  float: left;
  position: absolute;
  bottom: 10px;
  z-index: 2000;
 }

 .tooltip-inner {
  white-space: nowrap;
 }
 </style>
</head>

<body onload="init()">
 <div id="map">
 <div id="menu">
  <button id="zoom-out" class="btn btn-info">单击缩小</button>
  <button id="zoom-in" class="btn btn-info">单击放大</button>
  <button id="panto" class="btn btn-info">移动地图</button>
  <button id="restore" class="btn btn-info">复位地图</button>
 </div>
 </div>
</body>

</html>

js代码:

function init() {
 //实例化Map对象,用于加载地图
 var map = new ol.Map({
 target: 'map', //地图容器的div
 // 在地图容器中加载图层
 layers: [
  // 加载瓦片图层数据OSM
  new ol.layer.Tile({
  source: new ol.source.OSM()
  })
 ],
 // 地图视图设置
 view: new ol.View({
  center: [12950000, 4860000], //地图显示中心设置
  zoom: 8, //地图初始显示级别
  minZoom: 6, //最小级别
  maxZoom: 12, //最大级别
  rotation: Math.PI / 6 //设置旋转角度
 })
 });
 // 地图视图的初始参数
 var view = map.getView();
 var zoom = view.getZoom();
 var center = view.getCenter();
 var rotation = view.getRotation();
 // 实现单击缩小按钮的功能
 document.getElementById('zoom-out').onclick = function() {
  var view = map.getView(); //获取当前地图视图
  var zoom = view.getZoom(); //获得当前缩放级别
  view.setZoom(zoom - 1); //地图缩小一级
 }
 // 实现单击放大的功能按钮
 document.getElementById('zoom-in').onclick = function() {
  var view = map.getView(); //获取当前地图视图
  var zoom = view.getZoom(); //获得当前缩放级别
  view.setZoom(zoom + 1); //地图放大一级
 }
 // 平移功能
 document.getElementById('panto').onclick = function() {
  var view = map.getView(); //获取当前地图视图
  var lz = ol.proj.fromLonLat([103.73333, 36.03333]);
  view.setCenter(lz); //平移地图
 }
 // 复位功能(复位到初始复位)
 document.getElementById('restore').onclick = function() {
  view.setCenter(center); //初始中心点
  view.setRotation(rotation); //初始旋转角度
  view.setZoom(zoom); //平移地图
 }
 // 为内置的缩放控件与旋转控件添加tooltip提示信息
 $('.ol-zoom-in,.ol-zoom-out').tooltip({
 placement: 'right' //tooltip在右侧显示
 });
 $('.ol-rotate-reset,.ol-attribution button[title]').tooltip({
 placement: 'left' //tooltip在右侧显示
 });
}

显示效果如下:

OpenLayers3实现对地图的基本操作

4. 代码解析

对地图的缩放、平移、旋转等基本操作都是通过地图视图 View 进行控制,通过地图视图相应的 set 方法实现,首先需要通过Map的getView()获取当前地图时视图对象,然后根据视图对象调用其 get 方法来获取当前的缩放级别(Zoom)、中心点(center)、旋转角度(rotation)等参数。

(1)缩放地图

通过 View 的setZoom方法实现的,缩放级别由setZoom方法的参数进行设置。首先通过 view.getZoom() 获取当前地图的级别,然后调用 setZoom 方法进行缩放(view.setZoom(zoom - 1)),可将地图缩小一级,通过 view.setZoom(zoom +1); 可将地图放大一级。

(2)移动地图

移动地图就是通过改变地图当前地图的中心,通过地图视图的 setCenter 方法实现。首先通过Map对象获取地图的视图对象,然后调用 setCenter 方法进行设置。函数传的参数就是地图中心的坐标点。

(3)旋转地图

它是通过地图默认加载的旋转控件(ol.control.Rotate)来实现的,Rotate 控件的 autoHide 参数默认设置为 true,在旋转角度为0时自动隐藏旋转功能。在这个例子中,我们设置了地图的初始旋转角为60°( rotation: Math.PI / 6 //设置旋转角度),所以当我们点击旋转按钮时,旋转60°回到0°,按钮影藏。

(4)复位地图

它的功能就是将地图恢复当我们刚开始加载地图的状态,它涉及到 View 的设置,我们首先获取到地图加载时的缩放级别、中心点、旋转角度,然后通过 setZoom 、setCenter 、setRotation 方法进行设置,实现地图的复位功能。

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

Javascript 相关文章推荐
20款非常优秀的 jQuery 工具提示插件 推荐
Jul 15 Javascript
js 自定义个性下拉选择框示例
Aug 20 Javascript
浅谈checkbox的一些操作(实战经验)
Nov 20 Javascript
js实现键盘Enter键提交表单的方法
May 27 Javascript
提高jQuery性能优化的技巧
Aug 03 Javascript
js jquery获取当前元素的兄弟级 上一个 下一个元素
Sep 01 Javascript
理解JS绑定事件
Jan 19 Javascript
基于原生js运动方式关键点的总结(推荐)
Oct 01 Javascript
自定义PC微信扫码登录样式写法
Dec 12 Javascript
详解vue-cli快速构建vue应用并实现webpack打包
Dec 13 Javascript
解决mui框架中switch开关通过js控制开或者关状态时小圆点不动的问题
Sep 03 Javascript
Vue 利用指令实现禁止反复发送请求的两种方法
Sep 15 Javascript
vue中实现弹出层动画效果的示例代码
Sep 25 #Javascript
OpenLayers3加载常用控件使用方法详解
Sep 25 #Javascript
在webstorm中配置less的方法详解
Sep 25 #Javascript
OpenLayers加载缩放控件使用方法详解
Sep 25 #Javascript
Javascript confirm多种使用方法解析
Sep 25 #Javascript
OpenLayers3实现地图显示功能
Sep 25 #Javascript
openlayers实现图标拖动获取坐标
Sep 25 #Javascript
You might like
关于我转生变成史莱姆这档事:第二季PV上线,萌王2021年回归
2020/05/06 日漫
php发送短信验证码完成注册功能
2015/11/24 PHP
JavaScript去掉空格的方法集合
2010/12/28 Javascript
jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码
2013/06/04 Javascript
js将当前时间格式转换成时间搓(自写)
2013/09/26 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
使用Plupload实现直接上传附件至七牛云存储
2014/12/26 Javascript
jQuery背景插件backstretch使用指南
2015/04/21 Javascript
使用控制台破解百小度一个月只准改一次名字
2015/08/13 Javascript
jQuery入门基础知识学习指南
2015/08/14 Javascript
jquery过滤特殊字符',防sql注入的实现方法
2016/08/17 Javascript
详解AngularJS中ng-src指令的使用
2016/09/07 Javascript
简单实现jQuery弹幕效果
2017/05/06 jQuery
微信JSSDK调用微信扫一扫功能的方法
2017/07/25 Javascript
node前端模板引擎Jade之标签的基本写法
2018/05/11 Javascript
vue2实现搜索结果中的搜索关键字高亮的代码
2018/08/29 Javascript
解决Vue2.0中使用less给元素添加背景图片出现的问题
2018/09/03 Javascript
Vue刷新修改页面中数据的方法
2018/09/16 Javascript
详解JWT token心得与使用实例
2019/08/02 Javascript
[01:10:57]Liquid vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python 实现矩阵按对角线打印
2019/11/29 Python
Python Des加密解密如何实现软件注册码机器码
2020/01/08 Python
python实现图片转换成素描和漫画格式
2020/08/19 Python
pycharm 实现光标快速移动到括号外或行尾的操作
2021/02/05 Python
原生canvas制作画图小工具的踩坑和爬坑
2020/06/09 HTML / CSS
西尔斯百货官网:Sears
2016/09/06 全球购物
挪威手表购物网站:Klokker
2016/09/19 全球购物
Cecil Mode法国在线商店:女性时尚
2021/01/08 全球购物
如何将字串String转换成整数int
2015/02/21 面试题
大学毕业生通用自荐信范文
2013/10/31 职场文书
写给女生的道歉信
2014/01/14 职场文书
成龙霸王洗发水广告词
2014/03/14 职场文书
马智宇婚礼主持词
2014/03/22 职场文书
学校安全防火方案
2014/06/07 职场文书
2014年乡镇工作总结
2014/11/21 职场文书
生鲜超市—未来中国最具有潜力零售业态
2019/08/02 职场文书