当前位置: 首页 > 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.jsqmd.com/news/12858/

相关文章:

  • 基于 PyTorch 完全从零手搓 GPT 混合专家 (MOE) 对话模型 - 详解
  • Linux环境下安装Jenkins2.346.3
  • 2025 年疲劳试验机厂家最新推荐排行榜:涵盖液压 / 电动 / 扭转等多类型设备,助力企业精准挑选优质厂家
  • 2025 年万能试验机厂家最新推荐排行榜:涵盖电子 / 液压 / 拉力 / 压力 / 冲击等类型,助力企业科研机构精准选购优质设备
  • 2025 年涡流分离器源头厂家最新推荐排行榜:聚焦国内优质企业,助力制造企业精准采购可靠分离设备旋转分配器/油路分配器/离心过滤器厂家推荐
  • 欧美(美股、加拿大股票、墨西哥股票)股票数据接口文档
  • 2025年GEO(AI搜索优化)服务商口碑排行榜
  • 为了这0.1 dB,他在实验室蹲了整整8年
  • vue播放rtsp流方案
  • 有范同城全民任务小程序管理系统:连接厂家与播主的高效协作平台
  • 2025年GEO(AI搜索优化)源头厂家权威推荐榜单:云视有客科技领跑行业
  • axi_ad9361_rx.v
  • 2025年GEO(AI搜索优化)公司口碑推荐排行榜单
  • ​个人微信机器人开发
  • Kong Gateway 实操实例:代理上游服务并配置限流插件 - 指南
  • 2025 年最新二手手机交易公司推荐排行榜:聚焦企业的专业与诚信实力,为消费者精选可靠选择
  • 项目管理中的批量更新如何帮助节省时间和工作量?
  • 深入解析:云服务器磁盘空间管理:binlog导致磁盘快速增长的应对策略与自动化实践
  • 第三届大数据与数据挖掘国际会议(IEEE BDDM 2025)
  • CSS学习日记
  • 基于MATLAB的波导杆超声波传播仿真程序集设计与实现
  • for 循环中range的部分
  • 中电金信 :源启数据建模平台:自定义功能上线,实现高效模型管理
  • 国产软件项目管理革命:Gitee PPM如何重塑开发效率
  • 网关本质论
  • 用最通俗易懂的方式解读以太坊的dAI团队和ERC-8004标准
  • 赋能智慧农业:ISUP协议视频平台EasyCVR智慧农业视频远程监控管理方案
  • 集成开发工具 IDEA下载
  • 10.12一周观察
  • 视频融合平台EasyCVR在智慧水利中的实战应用:构建全域感知与智能预警平台