Files
xian_vue_new/src/main.ts
T

39 lines
1.2 KiB
TypeScript
Raw Normal View History

import { createApp } from 'vue';
import { createPinia } from 'pinia';
2026-04-07 20:01:06 +08:00
import App from './App.vue';
import router from './router';
import * as ElementPlusIconsVue from '@element-plus/icons-vue';
import 'element-plus/dist/index.css';
import proj4 from 'proj4';
import { Cartesian3, GeoJsonDataSource } from 'cesium';
2026-04-07 20:01:06 +08:00
const app = createApp(App);
2026-04-07 20:01:06 +08:00
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
app.component(key, component);
2026-04-07 20:01:06 +08:00
}
app.use(createPinia());
app.use(router);
2026-04-07 20:01:06 +08:00
app.mount('#app');
// 定义 EPSG:4490 (CGCS2000)
proj4.defs('EPSG:4490', '+proj=longlat +ellps=GRS80 +no_defs +type=crs');
// 定义 EPSG:4326 (WGS84)
proj4.defs('EPSG:4326', '+proj=longlat +datum=WGS84 +no_defs +type=crs');
// 坐标转换函数
const transformFunc = proj4('EPSG:4490', 'EPSG:4326').forward;
// 将坐标转换函数注册给Cesium,让它能自动处理所有标记为EPSG:4490的坐标数据
GeoJsonDataSource.crsNames['EPSG:4490'] = function (coordinates: number[]) {
const [x, y] = coordinates;
// 使用 proj4 进行坐标转换
const [lon, lat] = transformFunc([x, y]);
// 返回 Cesium 能识别的笛卡尔坐标
return Cartesian3.fromDegrees(lon, lat);
};