vue3创建多种遥感底图的网页教程

news2024/11/17 16:03:36

创建一个能调用多种遥感底图的网页教程

简介

大家好,我是锐多宝。

最近我正在使用vue3,这里记录一下我是如何使用vue3调用多种遥感底图。当然,如果你觉得安装vue麻烦,也可以直接使用原生的JavaScript,方法大同小异。

目前我用到的底图有:

安装开发环境

总的来说,创建一个vue3的网页应用,然后调用openlayer。如果你已经有vue3的环境,直接跳到第3步。具体步骤如下:

(1)先安装node js的最新版本,去网站下载最新版本(https://nodejs.org/en):

下载完nodejs后,直接点击安装,然后将nodejs的路径添加到环境变量中。

(2)安装vue3的开发环境:

使用node js安装vue3的开发环境:

npm create vue@latest

(3)使用nodejs安装vue3-openlayers包

现在我们需要vue应用去展示遥感底图,用到的包叫做vue3-openlayers,这是一个根据openlayer开发的vue3包。OpenLayers 是一个高性能、功能丰富的库,用于在网页上创建地图。这个开源 JavaScript 库允许用户在网页上展示地理信息数据。

npm install ol ol-ext ol-contextmenu 
npm install vue3-openlayers           

在vue3的环境文件main.js注册使用vue3-openlayers:

import { createApp } from "vue";
import App from "./App.vue";

import OpenLayersMap from "vue3-openlayers";
import "vue3-openlayers/styles.css"; 

const app = createApp(App);
app.use(OpenLayersMap);

app.mount("#app");

遥感底图的token和调用地址

我们可以调用多种遥感底图,但不少需要token,这里我列一下我用到的底图的token情况以及对应的申请地址:

名称是否需要token(申请地址)
Google遥感底图
必应遥感底图是(https://www.bingmapsportal.com/)
esri world image
高德遥感底图
mapbox遥感底图
吉林一号遥感底图是(https://www.jl1mall.com/rskit/)
星图地球遥感底图是(https://datacloud.geovisearth.com/)

有了token我们应该如何调用底图了?一般来说,这些在线图源,大部分都支持wmts和xyz,我这里列一下我调用xyz协议的情况:

名称是否需要token(申请地址)
Google遥感底图http://mt0.google.com/vt/lyrs=s&hl=en&x={x}&y={y}&z={z}
必应遥感底图openlayer内置ol-source-bingmaps标签,输入token即可
esri world imagehttps://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}
高德遥感底图https://webst01.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}
mapbox遥感底图https://api.mapbox.com/styles/v1/ruiduobao/clhsti3xz00r001rhctgnfybh/tiles/{z}/{x}/{y}?access_token=mapbox的token(改用户名、样式和图层即可)
吉林一号遥感底图https://api.jl1mall.com/getMap/{z}/{x}/{-y}?mk=吉林一号token
星图地球遥感底图https://tiles1.geovisearth.com/base/v1/img/{z}/{x}/{y}?format=webp&tmsIds=w&token=星图地球的token

搭建遥感底图页面

有了openlayer调用遥感底图,我们就可以开始写代码了。这里我写了一个vue3创建多种遥感底图的页面代码示例:

<template>
    <ol-map ref="map" style="height: 100%" :controls="[]">
      <ol-view
        ref="view"
        :center="center"
        :rotation="rotation"
        :zoom="zoom"
        :projection="projection"
      />
  
      <ol-tile-layer ref="xingtu" title="星图地球">
        <ol-source-xyz
          crossOrigin="anonymous"
          url="https://tiles1.geovisearth.com/base/v1/img/{z}/{x}/{y}?format=webp&tmsIds=w&token=星图地球的token"
        />
      </ol-tile-layer>

      <ol-tile-layer ref="JILIN" title="吉林一号">
        <ol-source-xyz
          crossOrigin="anonymous"
          url="https://api.jl1mall.com/getMap/{z}/{x}/{-y}?mk=吉林一号token"
        />
      </ol-tile-layer>

      <ol-tile-layer ref="ESRI_layer" title="ESRI影像">
        <ol-source-xyz
          crossOrigin="anonymous"
          url="https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}"
        />
      </ol-tile-layer>

      <ol-tile-layer ref="google_layer" title="google影像">
        <ol-source-xyz
          crossOrigin="anonymous"
          url="http://mt0.google.com/vt/lyrs=s&hl=en&x={x}&y={y}&z={z}"
        />
      </ol-tile-layer>

      <ol-tile-layer ref="mapbox_layer" title="mapbox">
        <ol-source-xyz
          url="https://api.mapbox.com/styles/v1/ruiduobao/clhsti3xz00r001rhctgnfybh/tiles/{z}/{x}/{y}?access_token=mapbox的token"
        />
      </ol-tile-layer>

      <ol-tile-layer ref="GAODE_layer" title="高德影像">
        <ol-source-xyz
          url="https://webst01.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}"
        />
      </ol-tile-layer>

      <ol-tile-layer ref="GAODE_name_layer" title="高德注记">
        <ol-source-xyz
          url="https://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}"
        />
      </ol-tile-layer>

      <ol-tile-layer ref="bingLayer" title="Bing地图">
        <ol-source-bingmaps
          apiKey="必应底图的token"
          :imagerySet="'Aerial'"
        />
      </ol-tile-layer>
  
      <ol-layerswitcher-control v-if="layerList.length > 0" :mouseover="true"/>
    </ol-map>

  </template>
  
  <script setup>
  import { ref, onMounted } from "vue";
  const rotation = ref(0);
  const center = ref([108, 45]);
  const projection = ref("EPSG:4326");
  const zoom = ref(4);
  const layerList = ref([]);
  const xingtu = ref(null);
  const JILIN = ref(null);
  const bingLayer = ref(null);
  const ESRI_layer=ref(null);
  const google_layer=ref(null)
  const mapbox_layer=ref(null) 
  const GAODE_layer=ref(null) 
  const GAODE_name_layer=ref(null)

  
  onMounted(() => {
    layerList.value.push(xingtu.value.tileLayer);
    layerList.value.push(JILIN.value.tileLayer);
    layerList.value.push(ESRI_layer.value.tileLayer);
    layerList.value.push(google_layer.value.tileLayer);
    layerList.value.push(mapbox_layer.value.tileLayer);    
    layerList.value.push(GAODE_layer.value.tileLayer);   
    layerList.value.push(GAODE_name_layer.value.tileLayer);   
    layerList.value.push(bingLayer.value.tileLayer);
  });
  </script>

效果展示

vue3调用多种遥感底图

总结

使用OpenLayers和vue3-openlayers库,能够在网页上展示来自不同源的地图图层。我总结一下:

(1)首先设置了开发环境,安装了必要的Node.js和Vue 3框架。

(2)安装了vue3-openlayers以及其他必要的OpenLayers相关包。

(3)在获取各种遥感底图的token之后,通过XYZ协议集成到我们的Vue应用中,包括Google、必应、esri、高德、mapbox、吉林一号以及星图地球。

希望这个教程对部分读者有帮助。

参考

nodejs的安装包 https://nodejs.org/en

vue的官方网站 https://vuejs.org/

vue3-openlayers https://vue3openlayers.netlify.app/

星图地球的申请token网站 https://datacloud.geovisearth.com/

吉林一号的申请token网站 https://www.jl1mall.com/rskit/

必应底图的申请token网站 https://www.bingmapsportal.com/

mapbox的申请token网站 https://www.mapbox.com/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1410937.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习:多元线性回归闭式解(Python)

import numpy as np import matplotlib.pyplot as pltclass LRClosedFormSol:def __init__(self, fit_interceptTrue, normalizeTrue):""":param fit_intercept: 是否训练bias:param normalize: 是否标准化数据"""self.theta None # 训练权重系…

【Chrome】浏览器怎么清除缓存并强制刷新

文章目录 1、正常刷新&#xff1a;正常刷新网页&#xff0c;网页有缓存则采用缓存。 F5 或 刷新键2、强制刷新&#xff1a;忽略缓存刷新&#xff0c;重新下载资源不用缓存。 CtrlF5 或 ShiftF5 或 CtrlShiftR3、在浏览器的设置里面清除所有数据

哪些 3D 建模软件值得推荐?

云端地球是一款免费的在线实景三维建模软件&#xff0c;不需要复杂的技巧&#xff0c;只要需要手机&#xff0c;多拍几张照片&#xff0c;就可以得到完整的三维模型&#xff01; 无论是大场景倾斜摄影测量还是小场景、小物体建模&#xff0c;都可以通过云端地球将二维数据向三…

MTP与管理壳(AAS)有异曲同工之妙

在过去的几年中&#xff0c;流程工业中的不同部门&#xff08;例如制药、精细化学品以及食品和饮料部门&#xff09;遇到了一系列共同且可比较的新兴挑战。这些挑战包括&#xff1a; 新产品的需求迅速接连不断&#xff0c;更快交货和更低价格的压力&#xff0c;更多定制产品&a…

【wvp】关于码率等的相关流程设计

目录 流程设计 前端UI大致设计 终端上的相关修改界面参考 流程设计 前端UI大致设计 终端上的相关修改界面参考

【WPF.NET开发】WPF中的双向功能

本文内容 FlowDirectionFlowDocumentSpan 元素非文本元素的 FlowDirection数字替换 与其他任何开发平台不同&#xff0c;WPF 具有许多支持双向内容快速开发的功能&#xff0c;例如&#xff0c;同一文档中混合了从左到右和从右到左的数据。 同时&#xff0c;WPF 也为需要双向功…

文件IO讲解

&#x1f495;"跑起来就有意义"&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;文件IO讲解 一.与文件相关的基本概念 1.什么是文件 文件从广义上来说就是操作系统对其所持有的硬件设备和软件资源的抽象化表示,但是在日常生活中我们所提到的文件就…

《Visual Tree Convolutional Neural Network in Image Classification》阅读笔记

论文标题 《Visual Tree Convolutional Neural Network in Image Classification》 图像分类中的视觉树卷积神经网络 作者 Yuntao Liu、Yong Dou、Ruochun Jin 和 Peng Qiao 来自国防科技大学并行和分布式处理国家实验室 初读 摘要 问题&#xff1a; 在图像分类领域&…

1.25号c++

1.引用 引用就是给变量起别名 格式&#xff1a; 数据类型 &引用名 同类型的变量名 &#xff08;& 引用符号&#xff09; eg: int a 10; int &b a; //b引用a,或者给a变量取个别名叫b int *p; //指针可以先定义 后指向 p &a; //int &a…

谷歌推出 AutoRT 机器人代理大规模编排的具体基础模型,远程操作和收集 77,000 个机器人事件

演示 AutoRT 向多个建筑物中的20多个机器人提出指令&#xff0c;并通过远程操作和自主机器人策略收集77,000个真实的机器人事件。实验表明&#xff0c;AutoRT 收集的此类“野外”数据明显更加多样化&#xff0c;并且 AutoRT 使用 LLMs 允许遵循能够符合人类偏好的数据收集机器人…

Jenkins全局工具配置

目录 Jenkins全局工具全局工具配置Settings 文件配置Maven配置JDK配置Git配置 Jenkins全局工具 我们在安装了Jenkins之后&#xff0c;就可以开始使用Jenkins来进行一些自动化构建发布工作&#xff0c;但是开始之前我们还需要进行全局工具的配置&#xff0c;Jenkins全局工具配置…

QT入门篇---无门槛学习

1.1 什么是 Qt Qt 是⼀个 跨平台的 C 图形⽤⼾界⾯应⽤程序框架 。它为应⽤程序开发者提供了建⽴艺术级图形界⾯所需的所有功能。它是完全⾯向对象的&#xff0c;很容易扩展。Qt 为开发者提供了⼀种基于组件的开发模式&#xff0c;开发者可以通过简单的拖拽和组合来实现复杂的…

【深度学习】【注意力机制】【自然语言处理】【图像识别】深度学习中的注意力机制详解、self-attention

1、深度学习的输入 无论是我们的语言处理、还是图像处理等&#xff0c;我们的输入都可以看作是一个向量。通过Model最终输出结果。这里&#xff0c;我们的vector大小是不会改变的。 然而&#xff0c;我们有可能会遇到这样的情况&#xff1a; 输入的sequence的长度是不定的怎…

Idea上操作Git回退本地版本,怎么样保留已修改的文件,回退本地版本的四种方式代表什么?

Git的基本概念:Git是一个版本控制系统,用于管理代码的变更历史记录。核心概念包括仓库、分支、提交和合并。 1、可以帮助开发者合并开发的代码 2、如果出现冲突代码的合并,会提示后提交合并代码的开发者,让其解决冲突 3、代码文件版本管理 问题描述 当我们使用git提交代码…

Hive3.1.3基础学习

文章目录 一、Hive入门与安装1、Hive入门1.1 简介1.2 Hive架构原理 2、Hive安装2.1 安装地址2.2 Hive最小化安装(测试用)2.3 MySQL安装2.4 配置Hive元数据存储到MySQL2.5 Hive服务部署2.6 Hive服务启动脚本(了解) 3、Hive使用技巧3.1 Hive常用交互命令3.2 Hive参数配置方式3.3 …

蓝桥杯(C++ 左移右移 买二增一 松散子序列 填充 有奖问答 更小的数 )

目录 左移右移 思路&#xff1a; 代码&#xff1a; 买二增一 思路&#xff1a; 代码&#xff1a; 松散子序列 思路&#xff1a; 代码&#xff1a; 填充 思路&#xff1a; 代码 &#xff1a; 有奖问答 思路&#xff1a; 代码&#xff1a; 更小的数 思路&#…

【快影】怎么制作卡拉OK字幕

您好&#xff0c;您添加了字幕之后可以添加动画&#xff0c;选择卡拉OK&#xff0c;其中 卡拉OK1是支持修改颜色的&#xff0c;卡拉OK2只支持修改文字的底色。

OpenCV使用基础、技巧

OpenCV概述与安装 视觉概述 人类的视觉能够很轻易地从图像中识别出内容。但是&#xff0c;计算机视觉不会像人类视觉那样能够对图像进行感知和识别&#xff0c;更不会自动控制焦距和光圈&#xff0c;而是把图像解析为按照栅格状排列的数字。 这些按照栅格状排列的数字包含大量…

Java中Integer(127)==Integer(127)为True,Integer(128)==Integer(128)却为False,这是为什么?

文章目录 1.前言2. 源码解析3.总结 1.前言 相信大家职业生涯中或多或少的碰到过Java比较变态的笔试题&#xff0c;下面这道题目大家应该不陌生&#xff1a; Integer i 127; Integer j 127;Integer m 128; Integer n 128;System.out.println(i j); // 输出为 true System.o…

华为数通方向HCIP-DataCom H12-831题库(判断题:121-140)

第121题 BGP/MPLS IP VPN内层采用MP-BGP分配的标签区分不同的VPN实例,外层可采用多种隧道类型,例如GRE隧道。 正确 错误 答案: 错误 解析: VPN业务的转发需要隧道来承载,隧道类型包括GRE隧道、LSP隧道、TE隧道(即CR-LSP)。 如果网络边缘的PE设备具备MPLS功能,但骨干网核…