Vue2+OpenLayers添加缩放、滑块缩放、拾取坐标、鹰眼、全屏控件(提供Gitee源码)

server/2025/1/21 13:36:49/
htmledit_views">

目录

一、案例截图

二、安装OpenLayers库

三、代码实现

四、Gitee源码


一、案例截图

二、安装OpenLayers库

npm install ol

三、代码实现

废话不多说,直接给完整代码,替换成自己的KEY即可运行:

<template><div><div id="map-container"></div><div id="scaleLine-map"></div></div>
</template>
<script>
// 引入 OpenLayers 的 CSS
import "ol/ol.css";
import { Map, View } from 'ol'
import { Tile as TileLayer } from 'ol/layer'
import { get } from 'ol/proj';
import { getWidth, getTopLeft } from 'ol/extent'
import { WMTS } from 'ol/source'
import WMTSTileGrid from 'ol/tilegrid/WMTS'
import {defaults as defaultControls,FullScreen,MousePosition,OverviewMap,ScaleLine,Zoom,ZoomSlider
} from 'ol/control';export const projection = get("EPSG:4326");
const projectionExtent = projection.getExtent();
const size = getWidth(projectionExtent) / 256;
const resolutions = [];
for (let z = 0; z < 19; ++z) {resolutions[z] = size / Math.pow(2, z);
}export default {data() {return {map:null,}},mounted(){this.initMap() // 加载矢量底图},methods:{initMap() {const KEY = '你申请的KEY'const overviewMapControl = new OverviewMap({className: "ol-overviewmap ol-custom-overviewmap",// 父元素ID// target: 'overview-map',//不使用主视图使用过的图层,否则会出现闪烁、空白的问题layers: [// 底图new TileLayer({source: new WMTS({url: `http://t{0-6}.tianditu.com/vec_c/wmts?tk=${KEY}`,layer: 'vec', // 矢量底图matrixSet: 'c', // c: 经纬度投影 w: 球面墨卡托投影style: "default",crossOrigin: 'anonymous', // 解决跨域问题 如无该需求可不添加format: "tiles", //请求的图层格式,这里指定为瓦片格式wrapX: true, // 允许地图在 X 方向重复(环绕)tileGrid: new WMTSTileGrid({origin: getTopLeft(projectionExtent),resolutions: resolutions,matrixIds: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15','16','17','18']})})}),// 标注new TileLayer({source: new WMTS({url: `http://t{0-6}.tianditu.com/cva_c/wmts?tk=${KEY}`,layer: 'cva', //矢量注记matrixSet: 'c',style: "default",crossOrigin: 'anonymous',format: "tiles",wrapX: true,tileGrid: new WMTSTileGrid({origin: getTopLeft(projectionExtent),resolutions: resolutions,matrixIds: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15','16','17','18']})})})],//初始为展开显示方式collapsed: false,});// 添加比例尺控件const scaleLine = new ScaleLine({units: 'metric', // 设置为米制target: 'scaleLine-map',});// 添加缩放控件const zoom = new Zoom();// 添加滑块缩放控件const zoomSlider = new ZoomSlider();//全屏控件const fullScreen = new FullScreen();//拾取坐标控件const mousePosition = new MousePosition({// 设置空间参考系统为'EPSG:4326'projection:'EPSG:4326',})this.map = new Map({target: 'map-container',layers: [// 底图new TileLayer({source: new WMTS({url: `http://t{0-6}.tianditu.com/vec_c/wmts?tk=${KEY}`,layer: 'vec', // 矢量底图matrixSet: 'c', // c: 经纬度投影 w: 球面墨卡托投影style: "default",crossOrigin: 'anonymous', // 解决跨域问题 如无该需求可不添加format: "tiles", //请求的图层格式,这里指定为瓦片格式wrapX: true, // 允许地图在 X 方向重复(环绕)tileGrid: new WMTSTileGrid({origin: getTopLeft(projectionExtent),resolutions: resolutions,matrixIds: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15','16','17','18']})})}),// 标注new TileLayer({source: new WMTS({url: `http://t{0-6}.tianditu.com/cva_c/wmts?tk=${KEY}`,layer: 'cva', //矢量注记matrixSet: 'c',style: "default",crossOrigin: 'anonymous',format: "tiles",wrapX: true,tileGrid: new WMTSTileGrid({origin: getTopLeft(projectionExtent),resolutions: resolutions,matrixIds: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15','16','17','18']})})})],view: new View({center: [113.082753,28.180449],projection: projection,zoom: 12,maxZoom: 17,minZoom: 1}),//加载控件到地图容器中controls: defaultControls({zoom: false,rotate: false,attribution: false}).extend([overviewMapControl,scaleLine,zoom,mousePosition,zoomSlider,fullScreen])})}}
}
</script>
<style scoped>
#map-container {width: 100%;height: 100vh;
}
#scaleLine-map {position: relative;margin-left: 200px;
}
</style>

四、Gitee源码

地址: Vue2+OpenLayers添加缩放、滑块缩放、拾取坐标、鹰眼、全屏控件


http://www.ppmy.cn/server/160189.html

相关文章

ubuntu 系统 ,docker建的服务 ,其他局网机器可以通过IP:端口的方式访问。不是docker的不行。

根据您的描述&#xff0c;docker 建的服务可以通过 IP&#xff1a;端口的方式被局网其他机器访问&#xff0c;而非 docker 的服务不行&#xff0c;以下是可能的原因及解决方法&#xff1a; 网络配置方面 • 检查非 docker 服务的网络监听配置&#xff1a;确保非 docker 服务是…

在视频汇聚平台EasyNVR平台中使用RTSP拉流的具体步骤

之前有用户反馈&#xff0c;在EasyNVR平台中添加Pull时使用海康设备的RTSP流地址无法播放。经过研发的优化及一系列严谨的验证流程&#xff0c;我们已确认优化后的EasyNVR平台&#xff0c;通过Pull方式添加海康设备的RTSP流已经能够正常播放。以下是具体的操作步骤&#xff1a;…

【AcWing】蓝桥杯辅导课-递归与递推

目录 1、递归 1.1 递归实现指数型枚举 1.2 递归实现排列型枚举 1.3 递归实现组合型枚举 1.4 带分数 方法一 方法二 2、递推 2.1 简单斐波那契 2.2 费解的开关 2.3 翻硬币 2.4 飞行员兄弟 方法一 方法二 1、递归 递归就是在函数内部自己调用自己 我们以递归的形式…

安装 Docker GPU 版本的过程及遇到的坑

首先&#xff0c;安装的 Docker 版本并不支持 GPU&#xff0c;因此需要安装支持 GPU 的 Docker 版本。然而&#xff0c;在安装和配置过程中&#xff0c;遇到了一系列问题和挑战。 错误的安装步骤 以下是我在尝试安装 GPU 版本时&#xff0c;执行的错误操作&#xff1a; # 安…

redis 分布式重入锁

文章目录 前言一、分布式重入锁1、单机重入锁2、redis重入锁 二、redisson实现重入锁1、 添加依赖2、 配置 Redisson 客户端3、 使用 Redisson 实现重入锁4、 验证5、运行项目 三、redisson分布式锁分析1、获取锁对象2、 加锁3、订阅4、锁续期5、释放锁6、流程图 前言 通过前篇…

Data Filtering Network 论文阅读和理解

目录 一、TL&#xff1b;DR 二、Introduction 2.1 apple的结论 2.2 业界做法&#xff1a; 2.3 我们的做法&#xff08;Apple&#xff09; 2.4 如何获取好的DFN 三、未完待续&#xff08;这周出去购物了&#xff0c;下周继续补充&#xff09; 一、TL&#xff1b;DR 核心…

系统架构演进:从单体到微服务的智能转型

软件系统架构的演进&#xff0c;就像生物的进化一样&#xff0c;不断适应着新的环境和需求。从早期的单体架构到如今流行的微服务架构&#xff0c;这不仅仅是技术层面的升级&#xff0c;更是对软件开发模式的一次深刻变革。然而&#xff0c;微服务架构的复杂性也带来了新的挑战…

使用 Element-UI 中的 el-button 添加防抖指令防止重复提交

使用 Element-UI 中的 el-button 添加防抖指令防止重复提交 在现代 Web 开发中&#xff0c;防止用户在短时间内多次点击提交按钮是一个常见的需求。重复点击可能导致表单数据被多次提交&#xff0c;从而引发一系列问题。本文将介绍如何在 Vue.js 项目中使用自定义指令来实现按…