//配置文件地址
|
// import config from "../../../../public/config/config";
|
//服务加载配置文件
|
import server from "./server";
|
|
const InitMap = {
|
earthCtrl: null,
|
Viewer: null,
|
//地图初始化
|
init3DMap() {
|
//设置月球坐标系
|
SmartEarth.Cesium.Ellipsoid.WGS84 = new SmartEarth.Cesium.Ellipsoid(
|
1737400.0,
|
1737400.0,
|
1737400.0
|
);
|
|
//贴地线
|
|
SmartEarth.Cesium.ExternalParameter.changeApproximateTerrainHeights = true;
|
//页面初始化
|
this.earthCtrl = new SmartEarth.EarthCtrl("cesiumContainer", {
|
StaticFileBaseUrl: config.StaticFileBaseUrl,
|
ellipsoidCoordinates: "MOON",
|
timeline: true,
|
});
|
|
window.earthCtrl = this.earthCtrl;
|
|
window.Viewer = this.earthCtrl._Viewer;
|
|
Viewer.scene.skyAtmosphere.show = false;
|
|
window.Cesium = SmartEarth.Cesium;
|
|
window.sgworld = earthCtrl;
|
|
sgworld.Creator.SimpleGraphic.edit(true, { editProp: true });
|
//=======================
|
window.Viewer.imageryLayers.removeAll();
|
|
Viewer.scene.globe.depthTestAgainstTerrain = false; // 开启深度测试
|
Viewer.animation.container.style.visibility = "hidden";
|
Viewer.timeline.container.style.visibility = "hidden";
|
//=======================
|
//大气层
|
Viewer.scene.globe.showGroundAtmosphere = false;
|
window.setLayer();
|
sgworld.Navigate.Stop(); //取消飞行状态
|
sgworld.Navigate.setPosition(-1093596.38, 5729026.12, 4136590.41);
|
},
|
//鼠标左键点击事件添加
|
addMouseLeftClickEvents() {
|
if (window.handleLeftClick) {
|
window.handleLeftClick.removeInputAction(
|
Cesium.ScreenSpaceEventType.LEFT_CLICK
|
); //移除事件
|
window.handleLeftClick = null;
|
}
|
window.handleLeftClick = new Cesium.ScreenSpaceEventHandler(
|
window.Viewer.scene.canvas
|
);
|
window.handleLeftClick.setInputAction(function (event) {
|
let cartesian = window.Viewer.camera.pickEllipsoid(event.position);
|
if (cartesian) {
|
let cartographic = Cesium.Cartographic.fromCartesian(cartesian);
|
let lng = Cesium.Math.toDegrees(cartographic.longitude); // 经度
|
let lat = Cesium.Math.toDegrees(cartographic.latitude); // 纬度
|
let alt = cartographic.height; // 高度,椭球面height永远等于0
|
let coordinate = {
|
longitude: Number(lng.toFixed(6)),
|
latitude: Number(lat.toFixed(6)),
|
altitude: Number(alt.toFixed(2)),
|
};
|
}
|
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
|
},
|
|
addMouseMouseMoveEvents() {
|
if (window.handleMouseMove) {
|
window.handleMouseMove.removeInputAction(
|
Cesium.ScreenSpaceEventType.MOUSE_MOVE
|
); //移除事件
|
window.handleMouseMove = null;
|
}
|
window.handleMouseMove = new Cesium.ScreenSpaceEventHandler(
|
window.Viewer.scene.canvas
|
);
|
window.handleMouseMove.setInputAction(function (movement) {
|
let cartesian = window.Viewer.camera.pickEllipsoid(
|
movement.endPosition,
|
window.Viewer.scene.globe.ellipsoid
|
);
|
if (cartesian) {
|
//将笛卡尔坐标转换为地理坐标
|
var cartographic =
|
window.Viewer.scene.globe.ellipsoid.cartesianToCartographic(
|
cartesian
|
);
|
//将弧度转为度的十进制度表示
|
var lng = Cesium.Math.toDegrees(cartographic.longitude);
|
var lat = Cesium.Math.toDegrees(cartographic.latitude);
|
//获取相机高度
|
var alt = Math.ceil(window.Viewer.camera.positionCartographic.height);
|
|
let coordinate = {
|
longitude: Number(lng.toFixed(6)),
|
latitude: Number(lat.toFixed(6)),
|
altitude: Number(alt.toFixed(2)),
|
type: "MOUSE_MOVE",
|
};
|
window.addMouseEvents(coordinate);
|
}
|
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
|
},
|
|
//CGCS2000转月球坐标---待验证
|
Cjcs2000ToMoon() {
|
// 定义待转换的经纬度坐标和高度
|
const longitude = 110.5;
|
const latitude = 34.5;
|
const height = 0;
|
|
// 定义CGCS2000坐标系
|
const cgcs2000 = new Cesium.Ellipsoid(
|
6378137.0,
|
6378137.0,
|
6356752.3142451793
|
);
|
|
// 定义Moon2000坐标系
|
const moon2000 = new Cesium.Ellipsoid(1737400.0, 1737400.0, 1737400.0);
|
|
// 将经纬度坐标转换为笛卡尔坐标系
|
const cartesian3 = Cesium.Cartesian3.fromDegrees(
|
longitude,
|
latitude,
|
height,
|
cgcs2000
|
);
|
// 将笛卡尔坐标系转换为Moon2000坐标系
|
const moonCartesian3 = Cesium.Transforms.eastNorthUpToFixedFrame(
|
cartesian3,
|
cgcs2000,
|
moon2000
|
);
|
// 输出转换后的经纬度坐标和高度
|
console.log(moonCartesian3);
|
// 将Moon2000坐标系的笛卡尔坐标转换为经纬度坐标
|
const moonPosition = Cesium.Cartographic.fromCartesian(moonCartesian3);
|
// 输出转换后的经纬度坐标和高度
|
console.log(moonPosition);
|
},
|
};
|
export default InitMap;
|