vue使用leaflet加载天地图
时间: 2025-08-01 16:28:26 浏览: 11
在 Vue 框架中集成 Leaflet 并加载天地图(TianMap)服务,可以通过 `Proj4Leaflet` 插件实现对非 EPSG:3857 坐标系的支持,因为天地图通常使用的是 CGCS2000 或其他国内常用坐标系。以下是一个完整的实现示例。
### 1. 安装依赖
首先确保安装了必要的库:
```bash
npm install leaflet proj4js proj4leaflet
```
### 2. 创建 Vue 组件
创建一个名为 `TianMapLeaflet.vue` 的组件,并引入相关资源:
```vue
<template>
<div id="map" ref="map"></div>
</template>
<script>
import L from 'leaflet';
import 'leaflet/dist/leaflet.css';
import proj4 from 'proj4';
import { CRS } from 'proj4leaflet';
export default {
mounted() {
// 定义 TianMap 使用的坐标系(例如 CGCS2000)
const crs = CRS('EPSG:4526', {
resolutions: [1.40625, 0.703125, 0.3515625, 0.17578125, 0.087890625, 0.0439453125],
origin: [73.628, 53.567],
bounds: L.bounds([73.628, 18.164], [134.773, 53.567]),
});
// 初始化地图
const map = L.map(this.$refs.map, {
crs: crs,
center: [39.9042, 116.4074], // 北京坐标
zoom: 5,
});
// 添加天地图瓦片图层
L.tileLayer('http://webst0{s}.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}', {
subdomains: ['1','2','3','4'],
maxZoom: 18,
attribution: '高德地图'
}).addTo(map);
},
};
</script>
<style scoped>
#map {
width: 100%;
height: 100vh;
}
</style>
```
### 3. 解释关键部分
- **坐标系统定义**:通过 `proj4leaflet` 和 `proj4js` 定义了一个自定义的坐标参考系统(CRS),用于适配天地图所使用的坐标体系[^1]。
- **地图初始化**:使用自定义的 CRS 来初始化 Leaflet 地图实例。
- **天地图图层**:通过 `L.tileLayer` 加载天地图服务,这里以高德地图风格为例,实际 URL 应根据具体服务提供商进行调整。
---
### 注意事项
- 天地图服务可能需要申请授权或提供 Token,具体请查阅其官方文档。
- 如果使用的是标准 Web Mercator 投影(EPSG:3857),则不需要额外配置 Proj4Leaflet。
- 在生产环境中建议对瓦片地址进行封装,以便支持跨域和缓存策略。
---
阅读全文
相关推荐




















