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 @@
-
+
+
+
+
{{ item.name }}