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

Vue3 + OpenLayers + 天地图 简单集成

1.创建项目

# 创建 Vue3 项目
pnpm create vue@latest tianditu-simple# 进入项目目录
cd tianditu-simple# 安装依赖
pnpm install# 安装 OpenLayers
pnpm add ol 

2.创建地图组件

<!-- src/components/MapContainer.vue -->
<script setup>
import { onMounted } from 'vue'
import 'ol/ol.css'
import Map from 'ol/Map'
import View from 'ol/View'
import TileLayer from 'ol/layer/Tile'
import XYZ from 'ol/source/XYZ'
import { fromLonLat } from 'ol/proj'let map = null
const tk = '你的天地图API密钥' // 替换为你的密钥onMounted(() => {map = new Map({target: 'map',layers: [// 矢量底图new TileLayer({source: new XYZ({url: `https://t0.tianditu.gov.cn/vec_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${tk}`})}),// 矢量注记new TileLayer({source: new XYZ({url: `https://t0.tianditu.gov.cn/cva_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cva&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${tk}`})})],view: new View({center: fromLonLat([105.839626, 32.437977]), // 广元市zoom: 12})})
})
</script><template><div id="map"></div>
</template><style scoped>
#map {width: 100%;height: 600px;border: 1px solid #ccc;border-radius: 8px;
}
</style>

3.首页引入使用

<script setup>
import MapContainer from '@/components/MapContainer.vue'
</script><template><div class="home"><h1>天地图项目</h1><p>简单集成天地图</p><MapContainer /></div>
</template><style scoped>
.home {max-width: 1200px;margin: 0 auto;padding: 20px;
}h1 {text-align: center;color: #333;
}p {text-align: center;color: #666;margin-bottom: 20px;
}
</style>

4.运行项目

# 启动开发服务器
pnpm dev

image

5.提示

如果用原生生成的页面,在app.vue使用,需要更改下main.css样式,不然界面中间布局很窄
image

main.css样式文件

@import './base.css';/* 重要:删除原先让 body 居中、让 #app 变两列网格的媒体查询 */
/* 全局主题变量 */
:root {--brand: #3b82f6;--text: #1f2937;--muted: #6b7280;--bg: #f7fafc;
}html, body, #app {height: 100%;
}body {margin: 0;background: var(--bg);color: var(--text);font-synthesis-weight: none;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;
}/* 页面容器:宽屏自适应,移动端留出内边距 */
#app {max-width: 1200px;margin: 0 auto;padding: 24px 16px;
}/* 链接与绿色强调色保持 */
a,
.green {text-decoration: none;color: hsla(160, 100%, 37%, 1);transition: 0.2s;padding: 2px;
}@media (hover: hover) {a:hover {background-color: hsla(160, 100%, 37%, 0.12);}
}
http://www.gsyq.cn/news/20202.html

相关文章:

  • 2025 年万能试验机厂家最新推荐排行榜:涵盖电子 / 液压 / 拉力 / 压力 / 冲击等类型,助力企业科研机构精准选购优质设备
  • 2025 年涡流分离器源头厂家最新推荐排行榜:聚焦国内优质企业,助力制造企业精准采购可靠分离设备旋转分配器/油路分配器/离心过滤器厂家推荐
  • 为了这0.1 dB,他在实验室蹲了整整8年
  • 有范同城全民任务小程序管理系统:连接厂家与播主的高效协作平台
  • axi_ad9361_rx.v
  • 2025年GEO(AI搜索优化)公司口碑推荐排行榜单
  • ​个人微信机器人开发
  • CSS学习日记
  • 2025中国不锈钢反应釜厂家TOP5权威推荐(附技术参数对比)
  • 中电金信 :源启数据建模平台:自定义功能上线,实现高效模型管理
  • 用最通俗易懂的方式解读以太坊的dAI团队和ERC-8004标准
  • 03_mysql运维核心基础
  • 2025年10月双氧水厂家最新权威推荐榜:高效消毒与环保品质之选
  • 详细介绍:权限校验是否应该在 Spring Cloud Gateway 中进行?
  • 日记5
  • 流量突然提升100倍QPS,怎么办?
  • 2025年10月气柱袋厂家最新推荐排行榜,缓冲包装气柱袋,防震气柱袋,充气气柱袋公司推荐!
  • 基于单片机的汽车防碰撞刹车系统(论文+源码) - 实践
  • Objective-C Runtime 中的关联对象(Associated Object)方法
  • 2025年10月防腐木厂家最新推荐排行榜,专业生产户外景观木材,品质卓越值得信赖!
  • AIVILIZATION相关文件记录
  • 详细介绍:如何分析软件需求中的DFX需求?
  • 在运维工作中,如何批量将当前目录下所有的 .tar 镜像文件通过 docker load -i 导入到本地 Docker 环境中,并显示进度和结果。
  • 20232315 2025-2026-1 《网络与系统攻防技术》 实验一实验报告
  • 2025年10月农机带厂家最新推荐排行榜,农业机械传动带,收割机皮带,拖拉机皮带,耐用高效品质之选!
  • 2025年10月清洗机厂家最新权威推荐榜:高压清洗机,超声波清洗机,工业清洗机,家用清洗机品牌精选!
  • 字典 dictionary - 详解
  • 2025年10月磨粉机厂家最新推荐排行榜,超细磨粉机,雷蒙磨粉机,立式磨粉机,高效节能磨粉机公司推荐!
  • 实用指南:简易分析慢 SQL 的流程和方法
  • 2025年10月防水连接器定做厂家最新推荐榜单,专业定制与卓越品质信赖之选!