Commit a48cb9bf by yzh

Merge branch 'develop' of ssh://47.96.160.63:10022/jlc/cesium-frame into develop

parents 7998bc7b 47f9c923
......@@ -13,6 +13,8 @@ import vueCodeAircraft from '@/examples/movingTarget/aircraft/aircraft.vue?raw'
import vueCodeRobotArmAnimation from '@/examples/movingTarget/robotArmAnimation/robotArmAnimation.vue?raw'
import vueCodeRealTimeDriver from '@/examples/movingTarget/realTimeDriver/realTimeDriver.vue?raw'
import vueCodeCoordinateAxis from '@/examples/movingTarget/coordinateAxis/coordinateAxis.vue?raw'
import vueCodeMovingTargets from '@/examples/movingTarget/movingTargets/movingTargets.vue?raw'
import vueCodeMovingTargetsWebsocket from '@/examples/movingTarget/movingTargetsWebsocket/movingTargetsWebsocket.vue?raw'
import vueCodeMissileLaunch from '@/examples/movingTarget/missileLaunch/missileLaunch.vue?raw'
import vueCodeMissileMobileLaunch from '@/examples/movingTarget/missileMobileLaunch/missileMobileLaunch.vue?raw'
import vueCodeRocketLaunch from '@/examples/movingTarget/rocketLaunch/rocketLaunch.vue?raw'
......@@ -41,8 +43,9 @@ import vueCodeSkyBox from '@/examples/sceneSet/skyBox/skyBox.vue?raw'
import vueCodeMapx from '@/examples/sceneSet/mapx/mapx.vue?raw'
// 相机
import vueCodeCameraZoom from '@/examples/camera/cameraZoom/cameraZoom.vue?raw'
import vueCodeViewTrack from '@/examples/camera/viewTrack/viewTrack.vue?raw'
import vueCodePerspectiveFly from '@/examples/camera/perspectiveFly/perspectiveFly.vue?raw'
import vueCodeCameraZoom from '@/examples/camera/cameraZoom/cameraZoom.vue?raw'
// 天气
import vueCodeRain from '@/examples/weather/rain/rain.vue?raw'
......@@ -74,6 +77,8 @@ const vueCodeMap = {
机械臂动画: vueCodeRobotArmAnimation,
实时驱动: vueCodeRealTimeDriver,
坐标轴: vueCodeCoordinateAxis,
大批量动目标: vueCodeMovingTargets,
大批量动目标websocket: vueCodeMovingTargetsWebsocket,
导弹发射: vueCodeMissileLaunch,
导弹机动发射: vueCodeMissileMobileLaunch,
火箭发射: vueCodeRocketLaunch,
......@@ -103,6 +108,7 @@ const vueCodeMap = {
// 相机
相机缩放: vueCodeCameraZoom,
视角飞行: vueCodePerspectiveFly,
跟踪视角: vueCodeViewTrack,
// 天气
......
......@@ -3,7 +3,7 @@ import functionCodeMoonTrack from '@/examples/spaceMissions/moonTrack/moonTrack-
import functionCodeSunTrack from '@/examples/spaceMissions/sunTrack/sunTrack-function.js?raw'
// 测站
import functionCodeAddStation from '@/examples/measureStation/addStation/addStation-function.js?raw'
import functionCodeAddStation from '@/examples/measureStation/addStation/addStation.js?raw'
import functionCodeStationCoordinate from '@/examples/measureStation/stationCoordinate/stationCoordinate-function.js?raw'
// 动目标
......@@ -13,6 +13,8 @@ import functionCodeAircraft from '@/examples/movingTarget/aircraft/aircraft-func
import functionCodeRobotArmAnimation from '@/examples/movingTarget/robotArmAnimation/robotArmAnimation-function.js?raw'
import functionCodeRealTimeDriver from '@/examples/movingTarget/realTimeDriver/realTimeDriver-function.js?raw'
import functionCodeCoordinateAxis from '@/examples/movingTarget/coordinateAxis/coordinateAxis-function.js?raw'
import functionCodeMovingTargets from '@/examples/movingTarget/movingTargets/movingTargets-function.js?raw'
import functionCodeMovingTargetsWebsocket from '@/examples/movingTarget/movingTargetsWebsocket/movingTargetsWebsocket-function.js?raw'
import functionCodeMissileLaunch from '@/examples/movingTarget/missileLaunch/missileLaunch-function.js?raw'
import functionCodeMissileMobileLaunch from '@/examples/movingTarget/missileMobileLaunch/missileMobileLaunch-function.js?raw'
import functionCodeRocketLaunch from '@/examples/movingTarget/rocketLaunch/rocketLaunch-function.js?raw'
......@@ -41,8 +43,9 @@ import functionCodeSkyBox from '@/examples/sceneSet/skyBox/skyBox-function.js?ra
import functionCodeMapx from '@/examples/sceneSet/mapx/mapx-function.js?raw'
// 相机
import functionCodeCameraZoom from '@/examples/camera/cameraZoom/cameraZoom-function.js?raw'
import functionCodeViewTrack from '@/examples/camera/viewTrack/viewTrack-function.js?raw'
import functionCodePerspectiveFly from '@/examples/camera/perspectiveFly/perspectiveFly-function.js?raw'
import functionCodeCameraZoom from '@/examples/camera/cameraZoom/cameraZoom-function.js?raw'
// 天气
import functionCodeRain from '@/examples/weather/rain/rain-function.js?raw'
......@@ -74,6 +77,8 @@ const functionCodeMap = {
机械臂动画: functionCodeRobotArmAnimation,
实时驱动: functionCodeRealTimeDriver,
坐标轴: functionCodeCoordinateAxis,
大批量动目标: functionCodeMovingTargets,
大批量动目标websocket: functionCodeMovingTargetsWebsocket,
导弹发射: functionCodeMissileLaunch,
导弹机动发射: functionCodeMissileMobileLaunch,
火箭发射: functionCodeRocketLaunch,
......@@ -102,8 +107,9 @@ const functionCodeMap = {
鹰眼图: functionCodeMapx,
// 相机
相机缩放: functionCodeCameraZoom,
跟踪视角: functionCodeViewTrack,
视角飞行: functionCodePerspectiveFly,
相机缩放: functionCodeCameraZoom,
// 天气
: functionCodeRain,
......
export function perspectiveFly(viewer, longitude, latitude, altitude) {
if (longitude && latitude && altitude) {
viewer.camera.flyTo({
destination: Cesium.Cartesian3.fromDegrees(parseFloat(longitude), parseFloat(latitude), parseFloat(altitude)),
});
} else {
console.error('请输入有效的经度、纬度和高度');
}
}
\ No newline at end of file
<template>
<div id="cesiumContainer" class="cesium-container"></div>
<div class="item-class">
<span style="background-color: aliceblue; margin: 2px;">跳转到指定位置</span>
<div>
<input v-model="inputLongitude" style="width: 52px; margin-top: 5px; margin-left: 2px;" placeholder="经度:" />
<input v-model="inputLatitude" style="width: 52px; margin-top: 5px; margin-left: 2px;" placeholder="纬度:" />
<input v-model="inputAltitude" style="width: 52px; margin-top: 5px; margin-left: 2px;" placeholder="高度:" />
</div>
<div style="margin: 2px;">
<button type="primary" @click="perspectiveFly(viewer, inputLongitude, inputLatitude, inputAltitude)">跳转</button>
<button @click="reset()">重置</button>
</div>
</div>
</template>
<script setup>
import { onMounted, ref } from 'vue';
import { perspectiveFly } from './function';
let viewer;
const inputLongitude = ref('')
const inputLatitude = ref('')
const inputAltitude = ref('')
function reset() {
inputLongitude.value = '';
inputLatitude.value = '';
inputAltitude.value = '';
}
onMounted(() => {
const script = document.createElement('script');
script.src = 'https://cesium.com/downloads/cesiumjs/releases/1.99/Build/Cesium/Cesium.js';
script.onload = () => {
window.Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI3Njg4ZWU5Yi1iZDhiLTRhYmUtOTRiYS04YjM5NmUwNjVmMDMiLCJpZCI6MjI3MzQ3LCJpYXQiOjE3MjA1MjA4Mjh9.E5XW4LnwgfVAaBC-znaYr61m4yK0-j2qEQhi9qwFFPE'
viewer = new window.Cesium.Viewer('cesiumContainer', {
infoBox: false,
});
};
document.head.appendChild(script);
const link = document.createElement('link');
link.rel = 'stylesheet';
link.href = 'https://cesium.com/downloads/cesiumjs/releases/1.119/Build/Cesium/Widgets/widgets.css';
document.head.appendChild(link);
});
</script>
<style>
.cesium-container {
width: 100%;
height: 100vh;
}
.item-class {
position: absolute;
top: 10px;
left: 10px;
}
</style>
\ No newline at end of file
/**
* @class 测站类
* @classdesc 该类用于在Cesium场景中创建测站
*/
class Station {
/**
* 测站构造函数
* @param {Object} viewer - viewer对象
* @param {String} id - 测站ID
* @param {Object} [ellipsoid] - 使用椭圆配置西瓜瓣
* @param {Object} [label] - 表单属性
* @param {Object} [model] - 模型属性
* @param {Object} [point] - 点属性
* @param {Array} position - 测站位置
* @param {Boolean} [visible=true] - 测站显隐性
*/
constructor(viewer, id, options = {}) {
this.viewer = viewer;
this.id = id;
this.visible = options.visible !== undefined ? options.visible : true;
this.position = options.position || [0, 0, 0];
const SITE = {
ellipsoid: {
show: true,
heightReference: undefined,
radii: null,
innerRadii: null,
minimumClock: 0.0,
maximumClock: 2 * Cesium.Math.PI,
minimumCone: 0.0,
maximumCone: Cesium.Math.PI,
fill: true,
material: Cesium.Color.RED.withAlpha(0.3),
outline: false,
outlineColor: Cesium.Color.BLACK,
outlineWidth: 1.0,
stackPartitions: 8,
slicePartitions: 8,
subdivisions: 128,
shadows: undefined,
distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0.0, 200000.0),
},
model: {
show: true,
uri: 'https://raw.githubusercontent.com/jinlinchao123/Cesium-assets/main/3Dmodel/Station.glb',
scale: 1,
minimumPixelSize: 30,
maximumScale: 500,
incrementallyLoadTextures: true,
runAnimations: true,
clampAnimations: true,
shadows: Cesium.ShadowMode.ENABLED,
heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
silhouetteColor: Cesium.Color.RED,
silhouetteSize: 0.0,
color: Cesium.Color.WHITE,
colorBlendMode: Cesium.ColorBlendMode.HIGHLIGHT,
colorBlendAmount: 0.5,
imageBasedLightingFactor: new Cesium.Cartesian2(1.0, 1.0),
lightColor: undefined,
distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0.0, 250000.0),
nodeTransformations: undefined,
articulations: undefined,
clippingPlanes: undefined,
},
label: {
show: true,
text: null,
font: '30px sans-serif',
style: Cesium.LabelStyle.FILL,
scale: 0.5,
showBackground: false,
backgroundColor: new Cesium.Color(0.165, 0.165, 0.165, 0.8),
backgroundPadding: new Cesium.Cartesian2(7, 5),
pixelOffset: new Cesium.Cartesian2(15, 0),
eyeOffset: Cesium.Cartesian3.ZERO,
horizontalOrigin: Cesium.HorizontalOrigin.LEFT,
verticalOrigin: Cesium.VerticalOrigin.TOP,
heightReference: Cesium.HeightReference.NONE,
fillColor: Cesium.Color.WHITE,
outlineColor: Cesium.Color.BLACK,
outlineWidth: 1.0,
translucencyByDistance: null,
pixelOffsetScaleByDistance: null,
scaleByDistance: null,
distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0.0, 250000.0),
disableDepthTestDistance: null,
},
point: {
show: true,
pixelSize: 10,
heightReference: Cesium.HeightReference.NONE,
color: Cesium.Color.RED,
outlineColor: Cesium.Color.BLACK,
outlineWidth: 0,
scaleByDistance: undefined,
translucencyByDistance: undefined,
distanceDisplayCondition: new Cesium.DistanceDisplayCondition(250000.0, 99999999999999),
disableDepthTestDistance: undefined,
}
};
let { label, ellipsoid, model, point } = options;
label = { ...SITE.label, ...label };
ellipsoid = { ...SITE.ellipsoid, ...ellipsoid };
model = { ...SITE.model, ...model };
point = { ...SITE.point, ...point };
ellipsoid.radii = new Cesium.Cartesian3(...ellipsoid.radii);
ellipsoid.innerRadii = new Cesium.Cartesian3(...ellipsoid.innerRadii);
ellipsoid.minimumClock = Cesium.Math.toRadians(ellipsoid.minimumClock);
ellipsoid.maximumClock = Cesium.Math.toRadians(ellipsoid.maximumClock);
ellipsoid.minimumCone = Cesium.Math.toRadians(ellipsoid.minimumCone);
ellipsoid.maximumCone = Cesium.Math.toRadians(ellipsoid.maximumCone);
label.text = `${id}`;
this.entity = viewer.entities.add({
id: id,
position: Cesium.Cartesian3.fromDegrees(...this.position),
label: label,
ellipsoid: ellipsoid,
model: model,
point: point,
});
viewer.zoomTo(this.entity);
}
/**
* 设置站点可见性
* @param {Cesium.entity} rectangle 站点实体
* @param {Boolean} visible true为可见,false为不可见
*/
setSiteVisible(site, visible) {
site.show = visible;
}
}
export default Station;
\ No newline at end of file
<template>
<div id="cesiumContainer" class="cesium-container"></div>
<div class="btn-class">
<button @click="changeShow">测站显示/隐藏</button>
</div>
</template>
<script setup>
import { onMounted } from 'vue';
import { addStation } from './function';
import Station from './function.js'; // 确保路径正确
let viewer;
let station;
onMounted(() => {
function cesiumInit() {
const script = document.createElement('script');
script.src = 'https://cesium.com/downloads/cesiumjs/releases/1.99/Build/Cesium/Cesium.js';
script.onload = () => {
......@@ -24,27 +28,36 @@ onMounted(() => {
position: [20, 20, 250],
ellipsoid: {
radii: [50000, 50000, 50000],
innerRadii:[1,1,1],
innerRadii: [1, 1, 1],
minimumClock: 45,
maximumClock: 90,
minimumCone:45,
maximumCone:75,
minimumCone: 45,
maximumCone: 75,
outline: false,
fill: true,
},
label: {
text:''
text: ''
},
}
addStation(viewer, siteInfo)
};
station = new Station(viewer, siteInfo.id, siteInfo);
};
document.head.appendChild(script);
const link = document.createElement('link');
link.rel = 'stylesheet';
link.href = 'https://cesium.com/downloads/cesiumjs/releases/1.119/Build/Cesium/Widgets/widgets.css';
document.head.appendChild(link);
}
function changeShow(){
// 获取站点实体
const siteEntity = viewer.entities.getById('site');
// 切换站点可见性
station.setSiteVisible(siteEntity, !siteEntity.show);
}
onMounted(() => {
cesiumInit()
});
</script>
......@@ -53,4 +66,9 @@ onMounted(() => {
width: 100%;
height: 100vh;
}
.btn-class {
position: absolute;
top: 10px;
left: 10px;
}
</style>
\ No newline at end of file
export function addMovingTargets(viewer) {
const ws = new WebSocket('ws://localhost:8080');
ws.onopen = function() {
console.log('连接开启');
};
let start = Cesium.JulianDate.fromDate(new Date()); // 设置时间轴当前时间为开始时间
start = Cesium.JulianDate.addHours(start, 8, new Cesium.JulianDate()); // 开始时间加8小时改为北京时间
let stop = Cesium.JulianDate.addSeconds(start, 400, new Cesium.JulianDate()); // 设置结束时间为开始时间加400秒
viewer.clock.startTime = start.clone(); // 设置时钟开始时间
viewer.clock.currentTime = start.clone(); // 设置时钟当前时间
viewer.clock.stopTime = stop.clone(); // 设置时钟结束时间
viewer.clock.multiplier = 1; // 设置时间倍数
viewer.timeline.zoomTo(start, stop); // 时间轴绑定到viewer上去
viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP; // 循环执行,到达终止时间,重新从起点时间开始
let modelArr = [];
let pendingUpdates = {};
// 创建飞机
function createModel(obj) {
let property = new Cesium.SampledPositionProperty();
property.setInterpolationOptions({
interpolationDegree: 5,
interpolationAlgorithm: Cesium.LagrangePolynomialApproximation,
});
let entity = viewer.entities.add({
position: property,
orientation: new Cesium.VelocityOrientationProperty(property),
model: {
uri: "https://raw.githubusercontent.com/jinlinchao123/Cesium-assets/main/3Dmodel/Cesium_Air.glb",
minimumPixelSize: 60
}
});
entity.attr = {
property: property,
icao: obj.icao
};
return entity;
}
// 获取模型
function getModelById(id) {
if (!id) return null;
let obj = {};
for (let i = 0; i < modelArr.length; i++) {
let item = modelArr[i];
if (id === item.attr.icao) {
obj.index = i;
obj.model = item;
break;
}
}
return obj;
}
// 更新模型位置
function updateModelPosition(icao, position, time) {
let obj = getModelById(icao);
if (obj.model) {
obj.model.attr.property.addSample(time, position);
}
}
ws.onmessage = function(event) {
const data = JSON.parse(event.data);
console.log('Received data:', data);
let item = data; // 单个数据点
let icao = item.icao;
let position = Cesium.Cartesian3.fromDegrees(item.longitude, item.latitude, item.altitude);
let julianDate = Cesium.JulianDate.addSeconds(start, item.time, new Cesium.JulianDate());
// 存储待更新的数据
pendingUpdates[icao] = { position, julianDate };
// 延迟几秒钟再更新位置
setTimeout(() => {
if (pendingUpdates[icao]) {
let obj = getModelById(icao);
if (!obj.model) {
// 如果模型不存在,创建模型
obj.model = createModel(item);
modelArr.push(obj.model);
}
updateModelPosition(icao, pendingUpdates[icao].position, pendingUpdates[icao].julianDate);
delete pendingUpdates[icao];
}
}, 3000); // 延迟3秒钟
};
ws.onclose = function() {
console.log('连接关闭');
};
}
\ No newline at end of file
<template>
<div id="cesiumContainer" class="cesium-container"></div>
</template>
<script setup>
import { onMounted } from 'vue';
import { addMovingTargets } from './function';
let viewer;
onMounted(() => {
const script = document.createElement('script');
script.src = 'https://cesium.com/downloads/cesiumjs/releases/1.99/Build/Cesium/Cesium.js';
script.onload = () => {
window.Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI3Njg4ZWU5Yi1iZDhiLTRhYmUtOTRiYS04YjM5NmUwNjVmMDMiLCJpZCI6MjI3MzQ3LCJpYXQiOjE3MjA1MjA4Mjh9.E5XW4LnwgfVAaBC-znaYr61m4yK0-j2qEQhi9qwFFPE'
viewer = new Cesium.Viewer('cesiumContainer', {
baseLayerPicker: false, // 影像切换
animation: true, //是否显示动画控件
timeline: false, //是否显示时间线控件
infoBox: true, //是否显示点击要素之后显示的信息
geocoder: false, //是否显示地名查找控件
timeline: true, //是否启用时间线控件
fullscreenButton: false,
shouldAnimate: true,
navigationHelpButton: false, //是否显示帮助信息控件
// terrainProvider: Cesium.createWorldTerrain({
// requestWaterMask: true, // required for water effects
// requestVertexNormals: true // required for terrain lighting
// })
})
addMovingTargets(viewer)
};
document.head.appendChild(script);
const link = document.createElement('link');
link.rel = 'stylesheet';
link.href = 'https://cesium.com/downloads/cesiumjs/releases/1.119/Build/Cesium/Widgets/widgets.css';
document.head.appendChild(link);
});
</script>
<style>
.cesium-container {
width: 100%;
height: 100vh;
}
</style>
\ No newline at end of file
export function addMovingTargetsWebsocket(viewer) {
const ws = new WebSocket('ws://localhost:8080');
ws.onopen = function() {
console.log('连接开启');
};
let property = new Cesium.SampledPositionProperty();
let start = Cesium.JulianDate.fromDate(new Date()); // 设置时间轴当前时间为开始时间
start = Cesium.JulianDate.addHours(start, 8, new Cesium.JulianDate()); // 开始时间加8小时改为北京时间
let stop = Cesium.JulianDate.addSeconds(start, 400, new Cesium.JulianDate()); // 设置结束时间为开始时间加400秒
viewer.clock.startTime = start.clone(); // 设置时钟开始时间
viewer.clock.currentTime = start.clone(); // 设置时钟当前时间
viewer.clock.stopTime = stop.clone(); // 设置时钟结束时间
viewer.clock.multiplier = 1; // 设置时间倍数
viewer.timeline.zoomTo(start, stop); // 时间轴绑定到viewer上去
viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP; // 循环执行,到达终止时间,重新从起点时间开始
let entity = viewer.entities.add({
availability: new Cesium.TimeIntervalCollection([new Cesium.TimeInterval({
start: start,
stop: stop
})]),
position: property,
orientation: new Cesium.VelocityOrientationProperty(property), // 根据速度计算方向角
model: {
uri: 'https://raw.githubusercontent.com/jinlinchao123/Cesium-assets/main/3Dmodel/ship.glb', //gltf文件的URL
scale: 0.05, // 放大倍数
silhouetteColor: Cesium.Color.fromCssColorString('rgba(0, 255, 0, 1)'), // 船模型边框颜色
silhouetteSize: 1, // 船模型边框宽度
minimumPixelSize: 128
},
path: { // 船路径
resolution: 1, // 这个不知道是啥
material: new Cesium.PolylineGlowMaterialProperty({
glowPower: 0.1, // 颜色透明度
color: Cesium.Color.fromCssColorString('rgba(0, 253, 239, 0.5)') // 路线颜色
}),
width: 2 // 路线的显示宽度
}
});
viewer.trackedEntity = entity; // 视角跟随模型
ws.onmessage = function(event) {
const data = JSON.parse(event.data);
console.log('Received data:', data);
// 更新位置属性
let time = Cesium.JulianDate.addSeconds(start, data.time, new Cesium.JulianDate());
let position = Cesium.Cartesian3.fromDegrees(data.longitude, data.latitude, data.height);
property.addSample(time, position);
};
ws.onclose = function() {
console.log('连接关闭');
};
}
\ No newline at end of file
<template>
<div id="cesiumContainer" class="cesium-container"></div>
</template>
<script setup>
import { onMounted } from 'vue';
import { addMovingTargetsWebsocket } from './function';
let viewer;
onMounted(() => {
const script = document.createElement('script');
script.src = 'https://cesium.com/downloads/cesiumjs/releases/1.99/Build/Cesium/Cesium.js';
script.onload = () => {
window.Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI3Njg4ZWU5Yi1iZDhiLTRhYmUtOTRiYS04YjM5NmUwNjVmMDMiLCJpZCI6MjI3MzQ3LCJpYXQiOjE3MjA1MjA4Mjh9.E5XW4LnwgfVAaBC-znaYr61m4yK0-j2qEQhi9qwFFPE'
viewer = new Cesium.Viewer('cesiumContainer', {
baseLayerPicker: false, // 影像切换
animation: true, //是否显示动画控件
timeline: false, //是否显示时间线控件
infoBox: false, //是否显示点击要素之后显示的信息
geocoder: false, //是否显示地名查找控件
timeline: true, //是否启用时间线控件
fullscreenButton: false,
shouldAnimate: true,
navigationHelpButton: false, //是否显示帮助信息控件
terrainProvider: Cesium.createWorldTerrain({
requestWaterMask: true, // required for water effects
requestVertexNormals: true // required for terrain lighting
})
})
addMovingTargetsWebsocket(viewer)
};
document.head.appendChild(script);
const link = document.createElement('link');
link.rel = 'stylesheet';
link.href = 'https://cesium.com/downloads/cesiumjs/releases/1.119/Build/Cesium/Widgets/widgets.css';
document.head.appendChild(link);
});
</script>
<style>
.cesium-container {
width: 100%;
height: 100vh;
}
</style>
\ No newline at end of file
......@@ -48,6 +48,14 @@ export const elementMovingMap = {
title: '坐标轴',
pngUrl: '/src/assets/CoordinateAxis.png'
},
大批量动目标: {
title: '大批量动目标',
pngUrl: '/src/assets/CoordinateAxis.png'
},
大批量动目标websocket: {
title: '大批量动目标websocket',
pngUrl: '/src/assets/CoordinateAxis.png'
},
导弹发射: {
title: '导弹发射',
pngUrl: '/src/assets/MissileLaunch.png'
......@@ -122,7 +130,7 @@ export const elementSceneSetMap = {
},
刻度盘: {
title: '刻度盘',
pngUrl: '/src/assets/JingweiNetwork2D.png'
pngUrl: '/src/assets/Dial.png'
},
圆形空间网格: {
title: '圆形空间网格',
......@@ -150,7 +158,11 @@ export const elementSceneSetMap = {
export const elementCameraMap = {
跟踪视角: {
title: '跟踪视角',
pngUrl: '/src/assets/Mapx.png'
pngUrl: '/src/assets/ViewTrack.png'
},
视角飞行: {
title: '视角飞行',
pngUrl: '/src/assets/PerspectiveFly.png'
},
相机缩放: {
title: '相机缩放',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment