当前位置: 首页 > news >正文

Vue2+OpenLayers调用WMTS服务初始化天地图示例(提供Gitee源码)

目录

一、案例截图

二、安装OpenLayers库

三、WMTS服务详解

四、完整代码

五、Gitee源码


一、案例截图

二、安装OpenLayers库

npm install ol

三、WMTS服务详解

WMTS(Web Map Tile Service)是一种标准的网络地图服务协议,用于提供基于瓦片的地图数据。它允许客户端请求地图的具体区域,并将相应的瓦片整合在一起。WMTS的主要优点在于其高效性,能够快速加载和显示地图。

1、layer:指定所请求的地图图层。可以是基础地图图层或叠加图层。

2、style:图层的样式。通常用于定义地图的外观,可以使用默认样式或自定义样式。

3、tilematrixset:指定瓦片矩阵集,定义了地图的缩放层级和瓦片的排列方式。

4、Service:服务指定为WMTS。

5、Request:表示请求的类型,常见的请求包括 GetCapabilities(获取服务能力)、GetTile(获取指定瓦片)等。

6、Version:指定 WMTS 协议的版本,如 1.0.0。

7、Format:表示请求的数据格式,常见的如 image/png、image/jpeg 等。

8、TileMatrix:当前请求的瓦片矩阵,表示具体的缩放级别。

9、TileCol:指定请求的瓦片行。

10、TileRow:指定请求的瓦片列。

请求参数示例截图:

这样就能成功获取到其中一部分瓦片:

四、完整代码

<template><div id="map-container"></div>
</template>
<script>
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} 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);
}let map;
export default {data() {return {}},mounted(){this.initMap() // 加载矢量底图},methods:{initMap() {const KEY = '你申请的KEY'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})})}}
}
</script>
<style scoped>
#map-container {width: 100%;height: 100vh;
}
</style>

补充一下: 

WMTSTileGrid: 这个类用于创建一个瓦片网格,通常用于 Web 地图应用,方便进行地图切片的处理和显示。

origin: 设置瓦片网格的原点,通常是地图的左上角坐标。在这里,getTopLeft(projectionExtent) 是一个函数调用,返回投影范围的左上角坐标。

resolutions: 这是一个数组,定义了每个缩放级别的分辨率。分辨率通常表示地图上单位长度对应于地理坐标的比例,影响地图的细节显示。

matrixIds: 这是一个数组,定义了不同缩放级别的矩阵 ID。在瓦片服务中,矩阵 ID 用于标识每个级别的瓦片位置和组织方式。此处 ID 从 '0' 到 '18',表示 19 个不同的缩放级别。

这段代码是在设置一个地图的瓦片网格,以便将地图切片以不同的分辨率和缩放级别展现出来。

五、Gitee源码

Vue2+OpenLayers调用WMTS服务初始化天地图示例


http://www.mrgr.cn/news/83577.html

相关文章:

  • ThreadLocal 的使用场景
  • Monorepo设置:新手指南
  • 【从0-1实现一个前端脚手架】
  • AcWing 906:区间分组 ← 区间问题+优先队列
  • 潜力巨大但道路曲折的量子计算
  • 【Ubuntu与Linux操作系统:三、用户与组管理】
  • vite5.x配置https
  • Windows 安装 Docker 和 Docker Compose
  • C#中的运算符和类--06
  • C# 虚方法和抽象方法的区别,重写和重载的区别,参数修饰符(ref、out、in、params)--09
  • [Unity]MacOS下开发Unity
  • 计算机组成原理(1)
  • 英语语法精简框架
  • stable diffusion 量化学习笔记
  • Go语言之路————go环境的初始化
  • MySQL表的增删改查(基础)-下篇
  • uc/os-II 原理及应用(八) 系统裁减以及移植到51单片机上
  • Redis高频知识点
  • 项目实战--网页五子棋(用户模块)(1)
  • wow-agent 学习笔记
  • 记一次sealos部署k8s集群之delete了第一台master如何恢复
  • LeetCode热题100-合并两个有序链表【JavaScript讲解】
  • 学习华为熵减,激发组织活力
  • LangChain 学习笔记 1 简介
  • Open FPV VTX开源之默认MAVLink设置
  • C#中的Array数组,List集合和ArrayList集合--07