menghao 1 month ago
parent
commit
f63b8d16a6
  1. 166
      ruoyi-ui/src/views/cesiumMap/index.vue

166
ruoyi-ui/src/views/cesiumMap/index.vue

@ -40,14 +40,11 @@
@show-transform-box="showPlatformIconTransformBox"
@toggle-route-label="toggleRouteLabelVisibility"
@toggle-route-lock="toggleRouteLock"
<<<<<<< HEAD
@edit-platform="openEditPlatformDialog"
@power-zone="openPowerZoneDialog"
=======
@start-route-before-platform="handleStartRouteBeforePlatform"
@start-route-after-platform="handleStartRouteAfterPlatform"
@copy-route="handleCopyRouteFromMenu"
>>>>>>> 9363256d79ba1d213479769fa0a97c737d179e32
@edit-platform="openEditPlatformDialog"
@power-zone="openPowerZoneDialog"
/>
<!-- 定位弹窗 -->
@ -136,7 +133,7 @@
/>
</el-form-item>
<el-form-item label="填充颜色">
<el-color-picker v-model="powerZoneForm.color" show-alpha size="small" />
<el-color-picker v-model="powerZoneForm.color" show-alpha size="small" />
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
@ -291,16 +288,13 @@ export default {
},
// 线routeId -> true / false
routeLabelVisible: {},
<<<<<<< HEAD
// 线routeId -> { fontSize, fontColor }
routeLabelStyles: {},
// 线routeId -> true / false
routeLocked: {},
=======
// 线 prop routeLocked
// 线{ platformInfo: { platformId, platform }, mode: 'before'|'after' }
platformRouteDrawing: null,
>>>>>>> 9363256d79ba1d213479769fa0a97c737d179e32
//
defaultStyles: {
point: { color: '#FF0000', size: 12 },
@ -1667,7 +1661,7 @@ export default {
//
if (!this.routeLabelStyles[routeId]) {
this.$set(this.routeLabelStyles, routeId, { fontSize: 16, fontColor: '#000000' });
this.$set(this.routeLabelStyles, routeId, { fontSize: 16, fontColor: '#000000' });
}
const currentStyle = this.routeLabelStyles[routeId];
@ -1698,10 +1692,10 @@ export default {
});
// 使
labelEntity.labelDataCache = {
name: (platform && platform.name) || '平台',
altitude: firstAlt,
speed: firstSpeed,
headingDeg: initialHeadingDeg
name: (platform && platform.name) || '平台',
altitude: firstAlt,
speed: firstSpeed,
headingDeg: initialHeadingDeg
};
}
// 线
@ -2333,62 +2327,62 @@ export default {
Object.assign(labelEntity.labelDataCache, labelData);
if (labelEntity.billboard) {
const style = this.routeLabelStyles[routeId] || { fontSize: 16, fontColor: '#000000' };
//
const displayData = {
name: labelData.name || '平台',
altitude: Math.round(Number(labelData.altitude || 0)),
speed: Math.round(Number(labelData.speed || 0)),
heading: Math.round(Number(labelData.headingDeg || 0))
};
//
const last = labelEntity._lastRenderParams;
const now = Date.now();
// 1000ms
// position
if (last &&
last.name === displayData.name &&
last.altitude === displayData.altitude &&
last.speed === displayData.speed &&
last.heading === displayData.heading &&
last.fontSize === style.fontSize &&
last.fontColor === style.fontColor) {
//
return;
}
// 1
if (last && (now - (labelEntity._lastUpdateTime || 0) < 1000)) {
return;
}
const canvas = this.createRoundedLabelCanvas({
name: displayData.name,
altitude: displayData.altitude,
speed: displayData.speed,
heading: displayData.heading,
fontSize: style.fontSize,
fontColor: style.fontColor
});
// canvas ConstantProperty Cesium
labelEntity.billboard.image = canvas;
//
labelEntity._lastRenderParams = {
...displayData,
fontSize: style.fontSize,
fontColor: style.fontColor
};
labelEntity._lastUpdateTime = now;
// requestRenderMode
if (this.viewer.scene.requestRenderMode) {
this.viewer.scene.requestRender();
}
const style = this.routeLabelStyles[routeId] || { fontSize: 16, fontColor: '#000000' };
//
const displayData = {
name: labelData.name || '平台',
altitude: Math.round(Number(labelData.altitude || 0)),
speed: Math.round(Number(labelData.speed || 0)),
heading: Math.round(Number(labelData.headingDeg || 0))
};
//
const last = labelEntity._lastRenderParams;
const now = Date.now();
// 1000ms
// position
if (last &&
last.name === displayData.name &&
last.altitude === displayData.altitude &&
last.speed === displayData.speed &&
last.heading === displayData.heading &&
last.fontSize === style.fontSize &&
last.fontColor === style.fontColor) {
//
return;
}
// 1
if (last && (now - (labelEntity._lastUpdateTime || 0) < 1000)) {
return;
}
const canvas = this.createRoundedLabelCanvas({
name: displayData.name,
altitude: displayData.altitude,
speed: displayData.speed,
heading: displayData.heading,
fontSize: style.fontSize,
fontColor: style.fontColor
});
// canvas ConstantProperty Cesium
labelEntity.billboard.image = canvas;
//
labelEntity._lastRenderParams = {
...displayData,
fontSize: style.fontSize,
fontColor: style.fontColor
};
labelEntity._lastUpdateTime = now;
// requestRenderMode
if (this.viewer.scene.requestRenderMode) {
this.viewer.scene.requestRender();
}
} else if (labelEntity.label) {
labelEntity.label.text = this.formatPlatformLabelText(labelData);
labelEntity.label.text = this.formatPlatformLabelText(labelData);
}
}
}
@ -5252,8 +5246,8 @@ export default {
let fontColor = '#333333'
if (this.routeLabelStyles[routeId]) {
fontSize = this.routeLabelStyles[routeId].fontSize;
fontColor = this.routeLabelStyles[routeId].fontColor;
fontSize = this.routeLabelStyles[routeId].fontSize;
fontColor = this.routeLabelStyles[routeId].fontColor;
} else if (labelEntity && labelEntity.label) {
const now = Cesium.JulianDate.now()
const fontValue = labelEntity.label.font && labelEntity.label.font.getValue
@ -5325,23 +5319,23 @@ export default {
const labelEntity = this.viewer.entities.getById(`route-platform-label-${routeId}`)
if (labelEntity) {
if (labelEntity.billboard) {
const data = labelEntity.labelDataCache || { name: '平台', altitude: 0, speed: 0, headingDeg: 0 };
const canvas = this.createRoundedLabelCanvas({
name: data.name,
altitude: data.altitude,
speed: data.speed,
heading: data.headingDeg,
fontSize: fontSize,
fontColor: fontColor
});
// 使 ConstantProperty
labelEntity.billboard.image = new Cesium.ConstantProperty(canvas);
const data = labelEntity.labelDataCache || { name: '平台', altitude: 0, speed: 0, headingDeg: 0 };
const canvas = this.createRoundedLabelCanvas({
name: data.name,
altitude: data.altitude,
speed: data.speed,
heading: data.headingDeg,
fontSize: fontSize,
fontColor: fontColor
});
// 使 ConstantProperty
labelEntity.billboard.image = new Cesium.ConstantProperty(canvas);
} else if (labelEntity.label) {
labelEntity.label.font = `${fontSize}px Microsoft YaHei`
labelEntity.label.fillColor = Cesium.Color.fromCssColorString(fontColor)
labelEntity.label.font = `${fontSize}px Microsoft YaHei`
labelEntity.label.fillColor = Cesium.Color.fromCssColorString(fontColor)
//
labelEntity.label.backgroundColor = Cesium.Color.fromCssColorString('rgba(255, 255, 255, 0.6)')
//
labelEntity.label.backgroundColor = Cesium.Color.fromCssColorString('rgba(255, 255, 255, 0.6)')
}
}

Loading…
Cancel
Save