diff --git a/src/components/Common/Cesium/index.js b/src/components/Common/Cesium/index.js index 0ac2d44..d589f14 100644 --- a/src/components/Common/Cesium/index.js +++ b/src/components/Common/Cesium/index.js @@ -2,6 +2,28 @@ import * as Cesium from 'cesium' import CesiumNavigation from 'cesium-navigation-es6' import 'cesium/Build/Cesium/Widgets/widgets.css' +const getCatesian3FromPX = (viewer, px) => { + const picks = viewer.scene.drillPick(px) + viewer.scene.render() + let cartesian + let isOn3dtiles = false + for (var i = 0; i < picks.length; i++) { + if (picks[i] && picks[i].primitive && picks[i].primitive instanceof Cesium.Cesium3DTileset) { + //模型上拾取 + isOn3dtiles = true + break + } + } + if (isOn3dtiles) { + cartesian = viewer.scene.pickPosition(px) + } else { + var ray = viewer.camera.getPickRay(px) + if (!ray) return null + cartesian = viewer.scene.globe.pick(ray, viewer.scene) + } + return cartesian +} + export default class MyCesium { static ImageryProviderUrl = '/map/mapWX/{z}/{x}/{y}.jpg' static RoadProviderUrl = '' @@ -299,4 +321,49 @@ export default class MyCesium { }, }) } + + /** + * 添加军标(base64图片) + * @param base64 + * @param x + * @param y + */ + addPlot(base64, { x, y }) { + this.cancelPreviousOperation() + + const id = Cesium.createGuid() + const position = getCatesian3FromPX(this.viewer, { x, y }) + if (!position) return + + const isEnemy = false + const color = 'red' + const radius = 150000 + + this.viewer.entities.add({ + id, + position, + billboard: { + image: base64, + width: 50, + height: 50, + eyeOffset: new Cesium.Cartesian3(0.0, 0.0, -100000.0), // 使标记在远处看起来更大 + }, + ellipse: { + semiMajorAxis: radius, + semiMinorAxis: radius, + material: Cesium.Color.fromCssColorString('transparent'), + outline: true, + outlineWidth: 1, + outlineColor: Cesium.Color.fromCssColorString(color), + height: 0, + }, + properties: { + type: MyCesium.ENTITY_TYPES.IMAGE, + color, + isEnemy, + radius, + collisions: new Set(), + }, + }) + } } diff --git a/src/components/Common/Form/IconSelector.vue b/src/components/Common/Form/IconSelector.vue index a552f81..3cec42e 100644 --- a/src/components/Common/Form/IconSelector.vue +++ b/src/components/Common/Form/IconSelector.vue @@ -1,13 +1,106 @@ - + diff --git a/src/views/simulationScene/database/zbsjk.vue b/src/views/simulationScene/database/zbsjk.vue index 91e35bf..04f2425 100644 --- a/src/views/simulationScene/database/zbsjk.vue +++ b/src/views/simulationScene/database/zbsjk.vue @@ -337,7 +337,7 @@ export default { }, zb: { entityType: '', - parentId: '', + parentId: 0, queryConfig: { items: [ { @@ -544,10 +544,10 @@ export default { } }, handleOpenEditZbjbModal(id, data) { - this.zbjbModal.title = '修改军标' + this.zbjbModal.title = `修改 ${data.entityName} 军标` this.zbjbModal.formData = {} this.zbjbModal.formData.id = id - this.zbjbModal.formData.iconId = data.iconId + this.$set(this.zbjbModal.formData, 'iconId', data.iconId) this.zbjbModal.visible = true }, handleSubmitZbjb(formData) { diff --git a/src/views/simulationScene/sceneEditing/components/SceneEditing.vue b/src/views/simulationScene/sceneEditing/components/SceneEditing.vue index 0433465..c1ef2d8 100644 --- a/src/views/simulationScene/sceneEditing/components/SceneEditing.vue +++ b/src/views/simulationScene/sceneEditing/components/SceneEditing.vue @@ -42,9 +42,15 @@ @change="getZbysListData()" /> - + - + {{ item.name }} @@ -52,7 +58,12 @@ -
+