OpenLayers 3 地图基础操作:缩放、平移与复位实现

作者:桌面漫游时间:2026-10-23 22:14:58浏览:280

本文介绍如何使用 OpenLayers 3 框架实现地图的基本交互操作。通过操作地图视图(View)对象,结合 jQuery 和 Bootstrap 构建前端界面,实现地图的放大、缩小、平移指定坐标、旋转及复位功能。详细解析了 setZoom、setCenter 等方法的具体调用方式及参数设置。

本文分享了一段基于 OpenLayers 3 框架实现地图基本交互操作的代码示例,供开发者参考学习。

前言与实现思路

1. 前言

地图的基本交互操作主要包含放大、缩小、移动、复位以及更新等功能,这些功能均可通过 OpenLayers 3 框架中操作地图视图(View)的相关方法来实现。

2. 实现思路

(1)创建一个网页,参考之前的文章加载 OSM 瓦片地图。通过视图配置设置地图的最大和最小缩放级别以及初始旋转角度,并利用 jQuery 和 Bootstrap 实现缩放控件与旋转控件的鼠标悬停提示效果。 (2)在地图容器内创建 4 个按钮(button),为每个按钮设置唯一的 id,并通过 CSS 控制按钮的样式。 (3)为每个按钮绑定 onclick 事件,在对应的函数中调用 OpenLayers 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在右侧显示
 });
}

显示效果如下:

前言与实现思路

代码解析与核心方法

4. 代码解析

地图的缩放、平移、旋转等基础操作均由地图视图(View)控制。通过调用视图对象的 set 方法即可实现。首先需通过 Map 对象的 getView() 方法获取当前地图视图对象,随后根据该视图对象调用 get 方法获取当前的缩放级别(Zoom)、中心点(center)、旋转角度(rotation)等参数。

(1)缩放地图

使用 View 的 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 方法分别设置这些参数,从而实现地图的复位功能。

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

作者最新文章