39 lines
1.2 KiB
TypeScript
39 lines
1.2 KiB
TypeScript
import { createApp } from 'vue';
|
|
import { createPinia } from 'pinia';
|
|
|
|
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';
|
|
|
|
const app = createApp(App);
|
|
|
|
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
|
|
app.component(key, component);
|
|
}
|
|
|
|
app.use(createPinia());
|
|
app.use(router);
|
|
|
|
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);
|
|
};
|