首页 > 其他分享 >Vue2+OpenLayers调用WMTS服务初始化天地图示例

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

时间:2025-01-11 21:32:25浏览次数:3  
标签:ol 示例 import 地图 WMTS OpenLayers 瓦片 new

目录

一、案例截图

二、安装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服务初始化天地图示例

标签:ol,示例,import,地图,WMTS,OpenLayers,瓦片,new
From: https://blog.csdn.net/HJW_233/article/details/145080351

相关文章

  • 【经典JESD204B ADC采集示例】基于FPGA的JESD204B ADC数据采集驱动源码(以AD9689为例)
    一、基础信息Ad9689是双通道ADC,分辨率14bit,最高采样率2Gsps/2.6Gsps;采用JESD204Bsubclass1协议,共8lanes串行接口输出;框图如下:在不同采样率下,不同输入频点的SFDR和SNR典型值:内部有可编程FIR滤波器,4个DDC:每个DDC包含一个48bitNCO实现混频,以及可编程的抽取速率;如此可......
  • win32汇编环境,对话框程序中对按钮控件常用操作的示例
    ;运行效果;win32汇编环境,对话框程序中对按钮控件常用操作的示例;常用的操作,例如创建按钮控件,使其无效,改变文本,得到文本等。;将代码复制进radasm软件里,直接就可以编译运行。重点部分加备注。;以下为asm文件。;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>&......
  • 如何加密 PL/SQL 程序?思维导图 代码示例(java 架构)
    加密PL/SQL程序通常指的是保护存储在数据库中的PL/SQL代码,防止未经授权的用户查看或修改。Oracle数据库提供了一些方法来实现这一点,比如使用WRAP工具或者通过DBMS_DDL.CREATE_WRAPPED包来进行源代码的加密。思维导图结构-加密PL/SQL程序-使用WRAP工具......
  • 咱们继续学Java——高级篇 第六十三篇:之XSLT转换示例程序全解析
    咱们继续学Java——高级篇第六十三篇:之XSLT转换示例程序全解析在Java编程的学习道路上,我们始终携手共进,不断深入探索知识的领域。此前我们学习了XSL转换(XSLT)的高级应用及在Java中的实现原理,今天我们将全面解析文档中的示例程序TransformTest,深入理解如何在Java中应用XSLT......
  • JavaScript字符串拓展:实用方法与示例全解析
    一、引言:为什么要学习JS字符串拓展在前端开发的世界里,JavaScript如同基石般支撑着网页的交互与动态呈现。而字符串作为我们日常操作中最频繁接触的数据类型之一,其原生方法在面对复杂多变的业务需求时,有时难免显得捉襟见肘。此时,JS字符串拓展方法就如同一个个得力助手,闪亮......
  • .NET AI 开发人员库 --AI Dev Gallery简单示例--问答机器人
    资源及介绍接上篇nuget引用以下组件效果展示:内存和cpu占有:代码如下:路径换成自己的模型路径模型请从上篇文尾下载internalclassProgram{privatestaticCancellationTokenSource?cts;privatestaticIChatClient?model;privatestaticList<M......
  • CRC校验:原理、计算方法、优缺点及MATLAB代码示例
    引言        在数字通信和数据存储领域,数据的完整性和可靠性是至关重要的。为了确保数据在传输或存储过程中不发生错误,人们开发了许多错误检测与校正技术。其中,循环冗余校验(CyclicRedundancyCheck,简称CRC)是一种广泛应用的错误检测机制。本文将详细介绍CRC校验的基本......
  • PyTorch 微调代码完整示例:从模型训练到评估
    PyTorch微调代码完整示例:从模型训练到评估1.环境准备2.代码实现2.1导入必要的库2.2自定义数据集2.3定义模型2.4初始化模型、损失函数和优化器2.5准备数据2.6训练循环2.7模型评估3.代码说明4.总结在深度学习任务中,微调(Fine-tuning)是一个非常重要的步骤,尤......
  • cesium小知识:PostProcess(后处理)详解及示例
    Cesium的PostProcess(后处理)功能允许开发者在场景渲染完成后对图像进行额外的处理,以实现各种视觉效果。通过后处理,可以添加诸如抗锯齿、景深、辉光、色调映射等特效,从而增强最终图像的质量和视觉吸引力。以下是关于Cesium后处理的更详细说明:1.PostProcessStagePostP......
  • ThreeJS入门(217):THREE.DRACOExporter 知识详解,示例代码
    作者:还是大剑师兰特,曾为美国某知名大学计算机专业研究生,现为国内GIS领域高级前端工程师,CSDN知名博主,深耕openlayers、leaflet、mapbox、cesium,webgl,ThreeJS,canvas,echarts等技术开发,欢迎加微信(gis-dajianshi),一起交流。查看本专栏目录-本文是第217篇入门文章......