From ab5d7f437872cef186797d85bc800506c3f6c6ce Mon Sep 17 00:00:00 2001 From: fangjiakai <450850793@qq.com> Date: Wed, 28 Feb 2024 10:44:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=BA=E5=91=98=E8=81=9A=E9=9B=86=E5=91=8A?= =?UTF-8?q?=E8=AD=A6=E5=9C=B0=E5=9B=BE=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/lib/Cesium/CustomCesium.js | 2779 +++++++++-------- src/assets/images/map/peoIcon_blueImg.png | Bin 0 -> 63697 bytes src/components/map_tools/alarm_view.vue | 84 + src/components/map_tools/map.js | 67 +- src/request/aggregation_management.js | 2 + .../components/alarmDialog.vue | 42 + .../components/viewInfo.vue | 31 +- 7 files changed, 1665 insertions(+), 1340 deletions(-) create mode 100644 src/assets/images/map/peoIcon_blueImg.png create mode 100644 src/components/map_tools/alarm_view.vue create mode 100644 src/views/aggregation_management/gathering_alarm_records/components/alarmDialog.vue diff --git a/public/lib/Cesium/CustomCesium.js b/public/lib/Cesium/CustomCesium.js index d45d1fb..edf6c54 100644 --- a/public/lib/Cesium/CustomCesium.js +++ b/public/lib/Cesium/CustomCesium.js @@ -1,1412 +1,1521 @@ var CustomCesium; (() => { "use strict"; - var e = { - d: (t, i) => { - for (var r in i) e.o(i, r) && !e.o(t, r) && Object.defineProperty(t, r, {enumerable: !0, get: i[r]}) - }, o: (e, t) => Object.prototype.hasOwnProperty.call(e, t), r: e => { - "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {value: "Module"}), Object.defineProperty(e, "__esModule", {value: !0}) - } - }, t = {}; - e.r(t), e.d(t, { - BulletinBoard: () => k, - Carmer: () => s, - EarlyWarning: () => z, - EditGltf: () => A, - Enclosure: () => O, - GroupModel: () => T, - HumanModel: () => P, - Line: () => F, - Model: () => E, - ModelDrag: () => x, - Mouse: () => o, - Radar: () => L, - Scene: () => n, - Tiles3D: () => a - }); + var __webpack_modules__ = { + 117: (__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + __webpack_require__.d(__webpack_exports__, {Z: () => Radar}); - class i { - constructor(e) { - this._definitionChanged = new Cesium.Event, this._color = void 0, this.color = e.color - } - - get isConstant() { - return !1 - } - - get definitionChanged() { - return this._definitionChanged - } - - getType(e) { - return Cesium.Material.WallDiffuseMaterialType - } - - getValue(e, t) { - return Cesium.defined(t) || (t = {}), t.color = Cesium.Property.getValueOrDefault(this._color, e, Cesium.Color.RED, t.color), t - } - - equals(e) { - return this === e || e instanceof i && Cesium.Property.equals(this._color, e._color) - } - } - - class r { - constructor() { - } - - static tileXYToQuadKey(e, t, i) { - for (var r = "", n = i; n >= 0; --n) { - var s = 1 << n, a = 0; - 0 != (e & s) && (a |= 1), 0 != (t & s) && (a |= 2), r += a - } - return "0" === r[0] && (r = r.substr(1)), r - } - - static Cartesian3ToWGS84(e, t) { - var i = e.scene.globe.ellipsoid.cartesianToCartographic(t); - return [Cesium.Math.toDegrees(i.longitude), Cesium.Math.toDegrees(i.latitude), i.height] - } - - static - } - - Cesium.WebMercatorTilingScheme; - - class n { - static google_mapResources = new Cesium.UrlTemplateImageryProvider({ - url: "https://mt1.google.com/vt/lyrs=s&x={x}&y={y}&z={z}", - credit: "谷歌影像服务" - }); - static tiandi_mapResources = new Cesium.UrlTemplateImageryProvider({ - url: "https://ecn.t{s}.tiles.virtualearth.net/tiles/a{q}.jpeg?n=z&g=11404", - subdomains: ["0", "1", "2", "3"], - tilingScheme: new Cesium.WebMercatorTilingScheme, - customTags: { - q: function (e, t, i, n) { - return r.tileXYToQuadKey(t, i, n) + class Radar { + constructor(e) { + this.viewer = e.viewer, this.icy = e, this.entity = null, this.entity1 = null, this.timer = null } - }, - minimumLevel: 3, - maximumLevel: 19 - }); - static gaode_mapResources = new Cesium.UrlTemplateImageryProvider({ - url: "https://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}", - minimumLevel: 3, - maximumLevel: 18 - }); - constructor(e, t, i, r) { - if (this.icy = {viewer: void 0, name: t}, 1 == i) { - let t = new Cesium.UrlTemplateImageryProvider({ - url: r, - fileExtension: "png", - minimumLevel: 0, - maximumLevel: 19, - tilingScheme: new Cesium.WebMercatorTilingScheme - }); - this.init(e, t, 50) + add(positions, color, coneData, canvas, coneId, billboardId) { + this.entity = this.viewer.entities.add({ + position: Cesium.Cartesian3.fromDegrees(positions[0], positions[1], positions[2]), + name: "圆锥", + id: coneId, + cylinder: { + length: coneData.height, + topRadius: 0, + bottomRadius: coneData.width, + disableDepthTestDistance: 5e5, + material: new CircleRippleMaterialProperty({ + color: new Cesium.Color.fromCssColorString(color), + speed: 10, + count: 3, + gradient: .5 + }) + } + }); + let imgUrl = new Image; + imgUrl.src = canvas.toDataURL("image/jpg"), imgUrl.style.borderRadius = "20px", this.entity1 = this.viewer.entities.add({ + name: "聚集铭牌", + id: billboardId, + position: Cesium.Cartesian3.fromDegrees(positions[0], positions[1], eval(positions[2] + coneData.height / 2)), + billboard: { + image: imgUrl, + show: !0, + sizeInMeters: !1, + scaleByDistance: new Cesium.NearFarScalar(0, .5, 1e7, .5), + // disableDepthTestDistance: Number.POSITIVE_INFINITY, + horizontalOrigin: Cesium.HorizontalOrigin.CENTER, + verticalOrigin: Cesium.VerticalOrigin.BOTTOM, + disableDepthTestDistance: 5e5, + scale: 1 + } + }), this.animate() + } + + animate() { + let e = 0; + this.timer = setInterval((() => { + this.entity1.billboard.scale >= 1.5 ? e = 1 : this.entity1.billboard.scale <= 1 && (e = 0), 0 == e ? this.entity1.billboard.scale += .05 : this.entity1.billboard.scale -= .05 + }), 50) + } + + show(e) { + this.entity.show = e, this.entity1.show = e, e ? this.animate() : clearInterval(this.timer) + } + + destroy() { + clearInterval(this.timer), this.icy.viewer.entities.remove(this.entity), this.entity = void 0, this.icy.viewer.entities.remove(this.entity1), this.entity1 = void 0 + } } - 2 == i && this.init(e, n.google_mapResources, 50), 3 == i && this.init(e, n.tiandi_mapResources, 50), 4 == i && this.init(e, n.gaode_mapResources, 50), 5 == i && this.init(e, void 0, 50) - } - getIcy() { - return this.icy - } + function CircleRippleMaterialProperty(e) { + this._definitionChanged = new Cesium.Event, this._color = void 0, this._speed = void 0, this.color = e.color, this.speed = e.speed, this.count = e.count, this.gradient = e.gradient + } - init(e, t, i = 50) { - this.icy.viewer = new Cesium.Viewer(e, { - targetFrameRate: i, - imageryProvider: t, - animation: !1, - timeline: !1, - geocoder: !1, - homeButton: !1, - sceneModePicker: !1, - baseLayerPicker: !1, - navigationHelpButton: !1, - fullscreenButton: !1 - }), this.icy.viewer.scene.mode, Cesium.SceneMode.COLUMBUS_VIEW, this.icy.viewer.scene.screenSpaceCameraController.enableTilt = !0, this.icy.viewer._cesiumWidget._creditContainer.style.display = "none", this.icy.viewer.scene.globe.depthTestAgainstTerrain = !0, this.icy.viewer.scene.sampleHeightSupported || window.alert("浏览器不支持 sampleHeight."), this.icy.viewer.scene.pickPositionSupported || window.alert("不支持深度纹理,无法绘制多边形,地形开挖功能无法使用!"), this.icy.viewer.scene.globe.enableLighting = !1, this.icy.viewer.shadows = !1, this.icy.viewer.scene.globe.fillHighlightColor = 1, this.icy.viewer.scene.postProcessStages.fxaa.enabled = !0, this.fPSShow(!0), this.initMaterial(); - } - - fPSShow(e) { - this.icy.viewer.scene.debugShowFramesPerSecond = e - } - - destroy() { - this.icy.iewer.destroy(), this.icy = void 0 - } - - initMaterial() { - Cesium.WallDiffuseMaterialProperty || (Object.defineProperties(i.prototype, {color: Cesium.createPropertyDescriptor("color")}), Cesium.WallDiffuseMaterialProperty = i, Cesium.Material.WallDiffuseMaterialProperty = "WallDiffuseMaterialProperty", Cesium.Material.WallDiffuseMaterialType = "WallDiffuseMaterialType", Cesium.Material.WallDiffuseMaterialSource = "\n uniform vec4 color;\n czm_material czm_getMaterial(czm_materialInput materialInput){\n czm_material material = czm_getDefaultMaterial(materialInput);\n vec2 st = materialInput.st;\n material.diffuse = color.rgb * 2.0;\n material.alpha = color.a * (1.0 - fract(st.t)) * 0.8;\n return material;\n } \n ", Cesium.Material._materialCache.addMaterial(Cesium.Material.WallDiffuseMaterialType, { + CircleRippleMaterialProperty.prototype = { + get isConstant() { + return !1 + }, get definitionChanged() { + return this._definitionChanged + }, getType: function (e) { + return Cesium.Material.CircleRippleMaterialType + }, getValue: function (e, t) { + return Cesium.defined(t) || (t = {}), t.color = Cesium.Property.getValueOrDefault(this._color, e, Cesium.Color.RED, t.color), t.speed = Cesium.Property.getValueOrDefault(this._speed, e, 10, t.speed), t.count = this.count, t.gradient = this.gradient, t + }, equals: function (e) { + return this === e || e instanceof CircleRippleMaterialProperty && Cesium.Property.equals(this._color, e._color) && Cesium.Property.equals(this._speed, e._speed) && Cesium.Property.equals(this.count, e.count) && Cesium.Property.equals(this.gradient, e.gradient) + } + }, Object.defineProperties(CircleRippleMaterialProperty.prototype, { + color: Cesium.createPropertyDescriptor("color"), + speed: Cesium.createPropertyDescriptor("speed"), + count: Cesium.createPropertyDescriptor("count"), + gradient: Cesium.createPropertyDescriptor("gradient") + }), Cesium.CircleRippleMaterialProperty = CircleRippleMaterialProperty, Cesium.Material.CircleRippleMaterialProperty = "CircleRippleMaterialProperty", Cesium.Material.CircleRippleMaterialType = "CircleRippleMaterialType", Cesium.Material.CircleRippleMaterialSource = "\nuniform vec4 color;\nuniform float speed;\nuniform float count;\nuniform float gradient;\n\nczm_material czm_getMaterial(czm_materialInput materialInput) {\n czm_material material = czm_getDefaultMaterial(materialInput);\n material.diffuse = 1.2 * color.rgb;\n vec2 st = materialInput.st;\n float dis = distance(st, vec2(0.5, 0.5));\n float per = fract(czm_frameNumber * speed / 1000.0);\n if(count == 1.0){\n if(dis > per * 0.5){\n discard;\n }else {\n material.alpha = color.a * dis / per / 2.0;\n }\n } else {\n vec3 str = materialInput.str;\n if(abs(str.z) > 0.001){\n discard;\n }\n if(dis > 0.5){\n discard;\n } else {\n float perDis = 0.5 / count;\n float disNum;\n float bl = 0.0;\n for(int i = 0; i <= 999; i++){\n if(float(i) <= count){\n disNum = perDis * float(i) - dis + per / count;\n if(disNum > 0.0){\n if(disNum < perDis){\n bl = 1.0 - disNum / perDis;\n } else if(disNum - perDis < perDis){\n bl = 1.0 - abs(1.0 - disNum / perDis);\n }\n material.alpha = pow(bl,(1.0 + 10.0 * (1.0 - gradient)));\n }\n }\n }\n }\n }\n return material;\n}\n", Cesium.Material._materialCache.addMaterial(Cesium.Material.CircleRippleMaterialType, { fabric: { - type: Cesium.Material.WallDiffuseMaterialType, - uniforms: {color: new Cesium.Color(1, 0, 0, 1)}, - source: Cesium.Material.WallDiffuseMaterialSource + type: Cesium.Material.CircleRippleMaterialType, + uniforms: { + color: new Cesium.Color.fromCssColorString("#ffffff00"), + speed: 3, + count: 4, + gradient: .2 + }, + source: Cesium.Material.CircleRippleMaterialSource }, translucent: function (e) { return !0 } - })) - } - } - - class s { - constructor(e) { - this.icy = e - } - - flyTo({maxHeight: e, time: t, position: i, angle: r}) { - 3 == i.length ? (e || (e = 10), t && 0 != t || (t = 3), this.icy.viewer.camera.flyTo({ - destination: Cesium.Cartesian3.fromDegrees(i[0], i[1], i[2]), - duration: t, - maximumHeight: e, - orientation: { - heading: Cesium.Math.toRadians(r[0]), - pitch: Cesium.Math.toRadians(r[1]), - roll: Cesium.Math.toRadians(r[2]) - } - })) : console.log("相机飞行请传入经纬高") - } - - flyToInfo({maxHeight: e, time: t, position: i, angle: r}) { - 3 == i.length ? (e || (e = 10), t && 0 != t || (t = 3), this.icy.viewer.camera.flyTo({ - destination: new Cesium.Cartesian3(i[0], i[1], i[2]), - duration: t, - maximumHeight: e, - orientation: {heading: r.heading, pitch: r.pitch, roll: r.roll} - })) : console.log("相机飞行请传入经纬高") - } - - teleporting(e) { - if (6 != e.length) throw"相机跳转参数错误,请检查传入参数"; - icy.viewer.camera.setView({ - destination: {x: e[0], y: e[1], z: e[2]}, - orientation: {heading: e[3], pitch: e[4], roll: e[5]} }) } + }, __webpack_module_cache__ = {}; - follow({angle: e, targetPoint: t, distance: i}, r) { - let n = turf.point([t[0], t[1]]), s = -e[0], a = turf.rhumbDestination(n, i, s, {units: "kilometers"}); - this.flyTo({ - maxHeight: 20, - time: r, - position: [a.geometry.coordinates[0], a.geometry.coordinates[1], t[2]], - angle: e - }) - } - - getgGsture() { - console.log("当前相机姿态输出"); - let e = this.icy.viewer.camera.heading, t = this.icy.viewer.camera.pitch, i = this.icy.viewer.camera.roll, - r = this.icy.viewer.camera.positionWC; - console.log(`destination:{x:${r.x},y:${r.y},z:${r.z}},orientation:{heading:${e},pitch:${t},roll:${i}}`) - } - - changeView(e) { - if ("2D" == e) { - let e = this.getCenterPoint(this.icy.viewer); - this.icy.viewer.scene.camera.flyTo({ - destination: Cesium.Cartesian3.fromDegrees(e[0], e[1], 2e3), - orientation: { - heading: this.icy.viewer.scene.camera.heading, - pitch: Cesium.Math.toRadians(-90), - roll: 0 - } - }), this.icy.viewer.scene.screenSpaceCameraController.enableTilt = !1 - } - if ("3D" == e) { - let e = 0, t = setInterval((() => { - e += 5, this.icy.viewer.scene.camera.moveDown(5), e >= 2e3 && (clearInterval(t), setTimeout((() => { - this.icy.viewer.scene.camera.flyTo({ - destination: this.icy.viewer.scene.camera.positionWC, - orientation: { - heading: this.icy.viewer.scene.camera.heading, - pitch: Cesium.Math.toRadians(-45), - roll: 0 - } - }) - }), 100)) - })); - this.icy.viewer.scene.screenSpaceCameraController.enableTilt = !0 - } - } - - getCenterPoint(e) { - let t = e.camera.pickEllipsoid(new Cesium.Cartesian2(e.canvas.clientWidth / 2, e.canvas.clientHeight / 2)), - i = Cesium.Ellipsoid.WGS84.cartesianToCartographic(t); - return [180 * i.longitude / Math.PI, 180 * i.latitude / Math.PI] - } - - getBottomCenterPoint(e) { - let t = e.camera.pickEllipsoid(new Cesium.Cartesian2(e.canvas.clientWidth / 2, e.canvas.clientHeight)), - i = Cesium.Ellipsoid.WGS84.cartesianToCartographic(t); - return [180 * i.longitude / Math.PI, 180 * i.latitude / Math.PI] - } + function __webpack_require__(e) { + var t = __webpack_module_cache__[e]; + if (void 0 !== t) return t.exports; + var i = __webpack_module_cache__[e] = {exports: {}}; + return __webpack_modules__[e](i, i.exports, __webpack_require__), i.exports } - class a { - constructor(e, t, i = 0) { - this.icy = e, this.tileset = e.viewer.scene.primitives.add(new Cesium.Cesium3DTileset({ - url: t, - show: !0 - })), this.tileset.readyPromise.then((e => { - this.tileset = e, this.setHeight(i) - })) - } - - show(e) { - this.tileset.show = e - } - - setHeight(e = 0) { - const t = this.tileset.boundingSphere, i = Cesium.Cartographic.fromCartesian(t.center), - r = Cesium.Cartesian3.fromRadians(i.longitude, i.latitude, 0), - n = Cesium.Cartesian3.fromRadians(i.longitude, i.latitude, e), - s = Cesium.Cartesian3.subtract(n, r, new Cesium.Cartesian3); - this.tileset.modelMatrix = Cesium.Matrix4.fromTranslation(s) - } - - look() { - this.icy.viewer.zoomTo(this.tileset) - } - - destroy() { - this.tileset.destroy(), this.tileset = void 0 - } - } - - class o { - constructor(e) { - this.icy = e, this.billboard = void 0 - } - - mouseMOVE(e) { - new Cesium.ScreenSpaceEventHandler(this.icy.viewer.scene.canvas).setInputAction((t => { - if (!this.icy.viewer.scene.pick(t.endPosition)) return this.billboard && (this.icy.viewer.canvas.style.cursor = "default", this.billboard.scale = void 0, this.billboard = void 0), void e(!1) - }), Cesium.ScreenSpaceEventType.MOUSE_MOVE) - } - - mouseLeft(e) { - new Cesium.ScreenSpaceEventHandler(this.icy.viewer.scene.canvas).setInputAction((t => { - let i = this.icy.viewer.camera.getPickRay(t.position), - r = this.icy.viewer.scene.globe.pick(i, this.icy.viewer.scene), - n = Cesium.Cartographic.fromCartesian(r), s = Cesium.Math.toDegrees(n.longitude), - a = Cesium.Math.toDegrees(n.latitude), o = n.height, l = { - longitude: Number(s.toFixed(8)), - latitude: Number(a.toFixed(8)), - altitude: Number(o.toFixed(5)) - }; - console.log("鼠标获取经纬高", s, a, o, l); - let h = this.icy.viewer.scene.pick(t.position); - if (console.log(h), !h) return console.log("pick为空"), this.icy.viewer.scene.globe.translucency.enabled = !0, void (this.icy.viewer.scene.globe.translucency.frontFaceAlpha = 1); - e(h.id) - }), Cesium.ScreenSpaceEventType.LEFT_CLICK) - } - - mouseRight(e) { - let t = new Cesium.ScreenSpaceEventHandler(this.icy.viewer.scene.canvas), i = this; - t.setInputAction((t => { - let r = (n = i.icy.viewer.scene.pickPosition(t.position), s = new Cesium.Cartesian3(n.x, n.y, n.z), a = Cesium.Cartographic.fromCartesian(s), o = Cesium.Math.toDegrees(a.latitude), { - lng: Cesium.Math.toDegrees(a.longitude), - lat: o, - alt: a.height - }); - var n, s, a, o; - e(r) - }), Cesium.ScreenSpaceEventType.RIGHT_CLICK) - } - - mouseLeftDouble(e) { - new Cesium.ScreenSpaceEventHandler(this.icy.viewer.scene.canvas).setInputAction((t => { - let i = this.icy.viewer.camera.getPickRay(t.position), - r = this.icy.viewer.scene.globe.pick(i, this.icy.viewer.scene), - n = Cesium.Cartographic.fromCartesian(r), s = Cesium.Math.toDegrees(n.longitude), - a = Cesium.Math.toDegrees(n.latitude), o = n.height; - e(s, a, o) - }), Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK) - } - } - - var l, h = Object.freeze({ - Linear: Object.freeze({ - None: function (e) { - return e - }, In: function (e) { - return this.None(e) - }, Out: function (e) { - return this.None(e) - }, InOut: function (e) { - return this.None(e) - } - }), Quadratic: Object.freeze({ - In: function (e) { - return e * e - }, Out: function (e) { - return e * (2 - e) - }, InOut: function (e) { - return (e *= 2) < 1 ? .5 * e * e : -.5 * (--e * (e - 2) - 1) - } - }), Cubic: Object.freeze({ - In: function (e) { - return e * e * e - }, Out: function (e) { - return --e * e * e + 1 - }, InOut: function (e) { - return (e *= 2) < 1 ? .5 * e * e * e : .5 * ((e -= 2) * e * e + 2) - } - }), Quartic: Object.freeze({ - In: function (e) { - return e * e * e * e - }, Out: function (e) { - return 1 - --e * e * e * e - }, InOut: function (e) { - return (e *= 2) < 1 ? .5 * e * e * e * e : -.5 * ((e -= 2) * e * e * e - 2) - } - }), Quintic: Object.freeze({ - In: function (e) { - return e * e * e * e * e - }, Out: function (e) { - return --e * e * e * e * e + 1 - }, InOut: function (e) { - return (e *= 2) < 1 ? .5 * e * e * e * e * e : .5 * ((e -= 2) * e * e * e * e + 2) - } - }), Sinusoidal: Object.freeze({ - In: function (e) { - return 1 - Math.sin((1 - e) * Math.PI / 2) - }, Out: function (e) { - return Math.sin(e * Math.PI / 2) - }, InOut: function (e) { - return .5 * (1 - Math.sin(Math.PI * (.5 - e))) - } - }), Exponential: Object.freeze({ - In: function (e) { - return 0 === e ? 0 : Math.pow(1024, e - 1) - }, Out: function (e) { - return 1 === e ? 1 : 1 - Math.pow(2, -10 * e) - }, InOut: function (e) { - return 0 === e ? 0 : 1 === e ? 1 : (e *= 2) < 1 ? .5 * Math.pow(1024, e - 1) : .5 * (2 - Math.pow(2, -10 * (e - 1))) - } - }), Circular: Object.freeze({ - In: function (e) { - return 1 - Math.sqrt(1 - e * e) - }, Out: function (e) { - return Math.sqrt(1 - --e * e) - }, InOut: function (e) { - return (e *= 2) < 1 ? -.5 * (Math.sqrt(1 - e * e) - 1) : .5 * (Math.sqrt(1 - (e -= 2) * e) + 1) - } - }), Elastic: Object.freeze({ - In: function (e) { - return 0 === e ? 0 : 1 === e ? 1 : -Math.pow(2, 10 * (e - 1)) * Math.sin(5 * (e - 1.1) * Math.PI) - }, Out: function (e) { - return 0 === e ? 0 : 1 === e ? 1 : Math.pow(2, -10 * e) * Math.sin(5 * (e - .1) * Math.PI) + 1 - }, InOut: function (e) { - return 0 === e ? 0 : 1 === e ? 1 : (e *= 2) < 1 ? -.5 * Math.pow(2, 10 * (e - 1)) * Math.sin(5 * (e - 1.1) * Math.PI) : .5 * Math.pow(2, -10 * (e - 1)) * Math.sin(5 * (e - 1.1) * Math.PI) + 1 - } - }), Back: Object.freeze({ - In: function (e) { - var t = 1.70158; - return 1 === e ? 1 : e * e * ((t + 1) * e - t) - }, Out: function (e) { - var t = 1.70158; - return 0 === e ? 0 : --e * e * ((t + 1) * e + t) + 1 - }, InOut: function (e) { - var t = 2.5949095; - return (e *= 2) < 1 ? e * e * ((t + 1) * e - t) * .5 : .5 * ((e -= 2) * e * ((t + 1) * e + t) + 2) - } - }), Bounce: Object.freeze({ - In: function (e) { - return 1 - h.Bounce.Out(1 - e) - }, Out: function (e) { - return e < 1 / 2.75 ? 7.5625 * e * e : e < 2 / 2.75 ? 7.5625 * (e -= 1.5 / 2.75) * e + .75 : e < 2.5 / 2.75 ? 7.5625 * (e -= 2.25 / 2.75) * e + .9375 : 7.5625 * (e -= 2.625 / 2.75) * e + .984375 - }, InOut: function (e) { - return e < .5 ? .5 * h.Bounce.In(2 * e) : .5 * h.Bounce.Out(2 * e - 1) + .5 - } - }), generatePow: function (e) { - return void 0 === e && (e = 4), e = (e = e < Number.EPSILON ? Number.EPSILON : e) > 1e4 ? 1e4 : e, { - In: function (t) { - return Math.pow(t, e) - }, Out: function (t) { - return 1 - Math.pow(1 - t, e) - }, InOut: function (t) { - return t < .5 ? Math.pow(2 * t, e) / 2 : (1 - Math.pow(2 - 2 * t, e)) / 2 + .5 - } - } - } - }), u = "undefined" == typeof self && "undefined" != typeof process && process.hrtime ? function () { - var e = process.hrtime(); - return 1e3 * e[0] + e[1] / 1e6 - } : "undefined" != typeof self && void 0 !== self.performance && void 0 !== self.performance.now ? self.performance.now.bind(self.performance) : void 0 !== Date.now ? Date.now : function () { - return (new Date).getTime() - }, c = function () { - function e() { - this._tweens = {}, this._tweensAddedDuringUpdate = {} - } - - return e.prototype.getAll = function () { - var e = this; - return Object.keys(this._tweens).map((function (t) { - return e._tweens[t] - })) - }, e.prototype.removeAll = function () { - this._tweens = {} - }, e.prototype.add = function (e) { - this._tweens[e.getId()] = e, this._tweensAddedDuringUpdate[e.getId()] = e - }, e.prototype.remove = function (e) { - delete this._tweens[e.getId()], delete this._tweensAddedDuringUpdate[e.getId()] - }, e.prototype.update = function (e, t) { - void 0 === e && (e = u()), void 0 === t && (t = !1); - var i = Object.keys(this._tweens); - if (0 === i.length) return !1; - for (; i.length > 0;) { - this._tweensAddedDuringUpdate = {}; - for (var r = 0; r < i.length; r++) { - var n = this._tweens[i[r]], s = !t; - n && !1 === n.update(e, s) && !t && delete this._tweens[i[r]] - } - i = Object.keys(this._tweensAddedDuringUpdate) - } - return !0 - }, e - }(), m = { - Linear: function (e, t) { - var i = e.length - 1, r = i * t, n = Math.floor(r), s = m.Utils.Linear; - return t < 0 ? s(e[0], e[1], r) : t > 1 ? s(e[i], e[i - 1], i - r) : s(e[n], e[n + 1 > i ? i : n + 1], r - n) - }, Bezier: function (e, t) { - for (var i = 0, r = e.length - 1, n = Math.pow, s = m.Utils.Bernstein, a = 0; a <= r; a++) i += n(1 - t, r - a) * n(t, a) * e[a] * s(r, a); - return i - }, CatmullRom: function (e, t) { - var i = e.length - 1, r = i * t, n = Math.floor(r), s = m.Utils.CatmullRom; - return e[0] === e[i] ? (t < 0 && (n = Math.floor(r = i * (1 + t))), s(e[(n - 1 + i) % i], e[n], e[(n + 1) % i], e[(n + 2) % i], r - n)) : t < 0 ? e[0] - (s(e[0], e[0], e[1], e[1], -r) - e[0]) : t > 1 ? e[i] - (s(e[i], e[i], e[i - 1], e[i - 1], r - i) - e[i]) : s(e[n ? n - 1 : 0], e[n], e[i < n + 1 ? i : n + 1], e[i < n + 2 ? i : n + 2], r - n) - }, Utils: { - Linear: function (e, t, i) { - return (t - e) * i + e - }, Bernstein: function (e, t) { - var i = m.Utils.Factorial; - return i(e) / i(t) / i(e - t) - }, Factorial: (l = [1], function (e) { - var t = 1; - if (l[e]) return l[e]; - for (var i = e; i > 1; i--) t *= i; - return l[e] = t, t - }), CatmullRom: function (e, t, i, r, n) { - var s = .5 * (i - e), a = .5 * (r - t), o = n * n; - return (2 * t - 2 * i + s + a) * (n * o) + (-3 * t + 3 * i - 2 * s - a) * o + s * n + t - } - } - }, d = function () { - function e() { - } - - return e.nextId = function () { - return e._nextId++ - }, e._nextId = 0, e - }(), p = new c, C = function () { - function e(e, t) { - void 0 === t && (t = p), this._object = e, this._group = t, this._isPaused = !1, this._pauseStart = 0, this._valuesStart = {}, this._valuesEnd = {}, this._valuesStartRepeat = {}, this._duration = 1e3, this._initialRepeat = 0, this._repeat = 0, this._yoyo = !1, this._isPlaying = !1, this._reversed = !1, this._delayTime = 0, this._startTime = 0, this._easingFunction = h.Linear.None, this._interpolationFunction = m.Linear, this._chainedTweens = [], this._onStartCallbackFired = !1, this._onEveryStartCallbackFired = !1, this._id = d.nextId(), this._isChainStopped = !1, this._goToEnd = !1 - } - - return e.prototype.getId = function () { - return this._id - }, e.prototype.isPlaying = function () { - return this._isPlaying - }, e.prototype.isPaused = function () { - return this._isPaused - }, e.prototype.to = function (e, t) { - return this._valuesEnd = Object.create(e), void 0 !== t && (this._duration = t), this - }, e.prototype.duration = function (e) { - return void 0 === e && (e = 1e3), this._duration = e, this - }, e.prototype.start = function (e, t) { - if (void 0 === e && (e = u()), void 0 === t && (t = !1), this._isPlaying) return this; - if (this._group && this._group.add(this), this._repeat = this._initialRepeat, this._reversed) for (var i in this._reversed = !1, this._valuesStartRepeat) this._swapEndStartRepeatValues(i), this._valuesStart[i] = this._valuesStartRepeat[i]; - return this._isPlaying = !0, this._isPaused = !1, this._onStartCallbackFired = !1, this._onEveryStartCallbackFired = !1, this._isChainStopped = !1, this._startTime = e, this._startTime += this._delayTime, this._setupProperties(this._object, this._valuesStart, this._valuesEnd, this._valuesStartRepeat, t), this - }, e.prototype.startFromCurrentValues = function (e) { - return this.start(e, !0) - }, e.prototype._setupProperties = function (e, t, i, r, n) { - for (var s in i) { - var a = e[s], o = Array.isArray(a), l = o ? "array" : typeof a, h = !o && Array.isArray(i[s]); - if ("undefined" !== l && "function" !== l) { - if (h) { - var u = i[s]; - if (0 === u.length) continue; - u = u.map(this._handleRelativeValue.bind(this, a)), void 0 === t[s] && (i[s] = [a].concat(u)) - } - if ("object" !== l && !o || !a || h) (void 0 === t[s] || n) && (t[s] = a), o || (t[s] *= 1), r[s] = h ? i[s].slice().reverse() : t[s] || 0; else { - for (var c in t[s] = o ? [] : {}, a) t[s][c] = a[c]; - r[s] = o ? [] : {}, this._setupProperties(a, t[s], i[s], r[s], n) - } - } - } - }, e.prototype.stop = function () { - return this._isChainStopped || (this._isChainStopped = !0, this.stopChainedTweens()), this._isPlaying ? (this._group && this._group.remove(this), this._isPlaying = !1, this._isPaused = !1, this._onStopCallback && this._onStopCallback(this._object), this) : this - }, e.prototype.end = function () { - return this._goToEnd = !0, this.update(1 / 0), this - }, e.prototype.pause = function (e) { - return void 0 === e && (e = u()), this._isPaused || !this._isPlaying || (this._isPaused = !0, this._pauseStart = e, this._group && this._group.remove(this)), this - }, e.prototype.resume = function (e) { - return void 0 === e && (e = u()), this._isPaused && this._isPlaying ? (this._isPaused = !1, this._startTime += e - this._pauseStart, this._pauseStart = 0, this._group && this._group.add(this), this) : this - }, e.prototype.stopChainedTweens = function () { - for (var e = 0, t = this._chainedTweens.length; e < t; e++) this._chainedTweens[e].stop(); - return this - }, e.prototype.group = function (e) { - return void 0 === e && (e = p), this._group = e, this - }, e.prototype.delay = function (e) { - return void 0 === e && (e = 0), this._delayTime = e, this - }, e.prototype.repeat = function (e) { - return void 0 === e && (e = 0), this._initialRepeat = e, this._repeat = e, this - }, e.prototype.repeatDelay = function (e) { - return this._repeatDelayTime = e, this - }, e.prototype.yoyo = function (e) { - return void 0 === e && (e = !1), this._yoyo = e, this - }, e.prototype.easing = function (e) { - return void 0 === e && (e = h.Linear.None), this._easingFunction = e, this - }, e.prototype.interpolation = function (e) { - return void 0 === e && (e = m.Linear), this._interpolationFunction = e, this - }, e.prototype.chain = function () { - for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]; - return this._chainedTweens = e, this - }, e.prototype.onStart = function (e) { - return this._onStartCallback = e, this - }, e.prototype.onEveryStart = function (e) { - return this._onEveryStartCallback = e, this - }, e.prototype.onUpdate = function (e) { - return this._onUpdateCallback = e, this - }, e.prototype.onRepeat = function (e) { - return this._onRepeatCallback = e, this - }, e.prototype.onComplete = function (e) { - return this._onCompleteCallback = e, this - }, e.prototype.onStop = function (e) { - return this._onStopCallback = e, this - }, e.prototype.update = function (e, t) { - if (void 0 === e && (e = u()), void 0 === t && (t = !0), this._isPaused) return !0; - var i, r, n = this._startTime + this._duration; - if (!this._goToEnd && !this._isPlaying) { - if (e > n) return !1; - t && this.start(e, !0) - } - if (this._goToEnd = !1, e < this._startTime) return !0; - !1 === this._onStartCallbackFired && (this._onStartCallback && this._onStartCallback(this._object), this._onStartCallbackFired = !0), !1 === this._onEveryStartCallbackFired && (this._onEveryStartCallback && this._onEveryStartCallback(this._object), this._onEveryStartCallbackFired = !0), r = (e - this._startTime) / this._duration, r = 0 === this._duration || r > 1 ? 1 : r; - var s = this._easingFunction(r); - if (this._updateProperties(this._object, this._valuesStart, this._valuesEnd, s), this._onUpdateCallback && this._onUpdateCallback(this._object, r), 1 === r) { - if (this._repeat > 0) { - for (i in isFinite(this._repeat) && this._repeat--, this._valuesStartRepeat) this._yoyo || "string" != typeof this._valuesEnd[i] || (this._valuesStartRepeat[i] = this._valuesStartRepeat[i] + parseFloat(this._valuesEnd[i])), this._yoyo && this._swapEndStartRepeatValues(i), this._valuesStart[i] = this._valuesStartRepeat[i]; - return this._yoyo && (this._reversed = !this._reversed), void 0 !== this._repeatDelayTime ? this._startTime = e + this._repeatDelayTime : this._startTime = e + this._delayTime, this._onRepeatCallback && this._onRepeatCallback(this._object), this._onEveryStartCallbackFired = !1, !0 - } - this._onCompleteCallback && this._onCompleteCallback(this._object); - for (var a = 0, o = this._chainedTweens.length; a < o; a++) this._chainedTweens[a].start(this._startTime + this._duration, !1); - return this._isPlaying = !1, !1 - } - return !0 - }, e.prototype._updateProperties = function (e, t, i, r) { - for (var n in i) if (void 0 !== t[n]) { - var s = t[n] || 0, a = i[n], o = Array.isArray(e[n]), l = Array.isArray(a); - !o && l ? e[n] = this._interpolationFunction(a, r) : "object" == typeof a && a ? this._updateProperties(e[n], s, a, r) : "number" == typeof (a = this._handleRelativeValue(s, a)) && (e[n] = s + (a - s) * r) - } - }, e.prototype._handleRelativeValue = function (e, t) { - return "string" != typeof t ? t : "+" === t.charAt(0) || "-" === t.charAt(0) ? e + parseFloat(t) : parseFloat(t) - }, e.prototype._swapEndStartRepeatValues = function (e) { - var t = this._valuesStartRepeat[e], i = this._valuesEnd[e]; - this._valuesStartRepeat[e] = "string" == typeof i ? this._valuesStartRepeat[e] + parseFloat(i) : this._valuesEnd[e], this._valuesEnd[e] = t - }, e - }(), g = d.nextId, f = p, y = f.getAll.bind(f), _ = f.removeAll.bind(f), v = f.add.bind(f), w = f.remove.bind(f), - M = f.update.bind(f); - const S = { - Easing: h, - Group: c, - Interpolation: m, - now: u, - Sequence: d, - nextId: g, - Tween: C, - VERSION: "19.0.0", - getAll: y, - removeAll: _, - add: v, - remove: w, - update: M + __webpack_require__.d = (e, t) => { + for (var i in t) __webpack_require__.o(t, i) && !__webpack_require__.o(e, i) && Object.defineProperty(e, i, { + enumerable: !0, + get: t[i] + }) + }, __webpack_require__.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t), __webpack_require__.r = e => { + "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {value: "Module"}), Object.defineProperty(e, "__esModule", {value: !0}) }; + var __webpack_exports__ = {}; + (() => { + __webpack_require__.r(__webpack_exports__), __webpack_require__.d(__webpack_exports__, { + BulletinBoard: () => k, + Carmer: () => r, + Cone: () => z.Z, + EarlyWarning: () => A, + EditGltf: () => I, + Enclosure: () => D, + GroupModel: () => S, + HumanModel: () => E, + Line: () => O, + Model: () => M, + ModelDrag: () => b, + Mouse: () => s, + Radar: () => F, + Scene: () => i, + Tiles3D: () => n + }); - class E { - static FileUrl = "../public/models/huaxing/glb/"; - - static nameShow(e, t) { - e.map((e => { - e.show(t) - })) - } - - static { - function e() { - S.update(), requestAnimationFrame(e) + class e { + constructor(e) { + this._definitionChanged = new Cesium.Event, this._color = void 0, this.color = e.color } - e() + get isConstant() { + return !1 + } + + get definitionChanged() { + return this._definitionChanged + } + + getType(e) { + return Cesium.Material.WallDiffuseMaterialType + } + + getValue(e, t) { + return Cesium.defined(t) || (t = {}), t.color = Cesium.Property.getValueOrDefault(this._color, e, Cesium.Color.RED, t.color), t + } + + equals(t) { + return this === t || t instanceof e && Cesium.Property.equals(this._color, t._color) + } } - constructor(e, {url: t, height: i, lon: r, lat: n, id: s, name: a, scale: o, angle: l}, h) { - if (this.icy = e, !t && !h) return console.error("传参有问题"); - o = o || 1, i = i || 0, r = r || 116.28678152222574, n = n || 40.05185885026265; - let u = Cesium.Cartesian3.fromDegrees(r, n, i), c = Cesium.Math.toRadians(l[0]), - m = Cesium.Math.toRadians(l[1]), d = Cesium.Math.toRadians(l[2]), - p = new Cesium.HeadingPitchRoll(c, m, d), C = Cesium.Transforms.headingPitchRollQuaternion(u, p); - this.entity = t ? e.viewer.entities.add({ - id: s, - name: a, - position: u, - orientation: C, - model: {uri: t, scale: o, color: new Cesium.Color(1, 1, 1, 1)}, - runAnimations: !1, - incrementallyLoadTextures: !1, - colorBlendMode: Cesium.ColorBlendMode.MIX, - colorBlendAmount: .1, - _icy: {lon: r, lat: n, height: i} - }) : e.viewer.entities.add({ - id: s, - name: a, - position: u, - orientation: C, - model: h, - runAnimations: !1, - incrementallyLoadTextures: !1, - colorBlendMode: Cesium.ColorBlendMode.MIX, - colorBlendAmount: .1, - _icy: {lon: r, lat: n, height: i} - }) - } + class t { + constructor() { + } - show(e) { - this.entity.show = e - } - - move({lon: e, lat: t, height: i, angle: r}) { - let n = Cesium.Cartesian3.fromDegrees(e, t, i), s = Cesium.Math.toRadians(r[0]), - a = Cesium.Math.toRadians(r[1]), o = Cesium.Math.toRadians(r[2]), - l = new Cesium.HeadingPitchRoll(s, a, o), h = Cesium.Transforms.headingPitchRollQuaternion(n, l); - this.entity.position = n, this.entity.orientation = h - } - - updateAngle(e) { - let t = new Cesium.Cartesian3(this.entity.position._value.x, this.entity.position._value.y, this.entity.position._value.z), - i = Cesium.Math.toRadians(e[0]), r = e[1], n = e[2], s = new Cesium.HeadingPitchRoll(i, r, n), - a = Cesium.Transforms.headingPitchRollQuaternion(t, s); - this.entity.orientation = a - } - - animationMove(e, t, i, n, s) { - if (!this.entity) throw"还没有对象呢!!"; - let a = this.entity.position, o = Cesium.Cartesian3.fromDegrees(e, t, i), - l = new S.Tween({x: a._value.x, y: a._value.y, z: a._value.z}); - l.to({x: o.x, y: o.y, z: o.z}, n), l.onUpdate((({x: e, y: t, z: i}) => { - let n = new Cesium.Cartesian3(e, t, i); - if(this.entity){ - this.entity.position = n; + static tileXYToQuadKey(e, t, i) { + for (var r = "", n = i; n >= 0; --n) { + var s = 1 << n, a = 0; + 0 != (e & s) && (a |= 1), 0 != (t & s) && (a |= 2), r += a } - let a = r.Cartesian3ToWGS84(this.icy.viewer, n); - s(a) - })), l.start() - } - - lineColor(e) { - this.entity.model.silhouetteSize = e ? 2 : 0 - } - - getEntity() { - return this.entity - } - - getPosition() { - return this.entity.modelMatrix - } - - clone(e) { - return Cesium.clone(this.entity.model) - } - - destroy() { - this.icy.viewer.entities.remove(this.entity), this.entity = void 0 - } - } - - class x { - static FileUrl = "../public/models/huaxing/glb/"; - - constructor(e, {url: t, height: i, lon: r, lat: n, id: s, name: a, scale: o, angle: l}, h) { - if (this.icy = e, !t && !h) return console.error("传参有问题"); - o = o || 1, i = i || 0, r = r || 116.28678152222574, n = n || 40.05185885026265; - let u = Cesium.Cartesian3.fromDegrees(r, n, i); - var c = Cesium.Math.toRadians(l[0]), m = Cesium.Math.toRadians(l[1]), d = Cesium.Math.toRadians(l[2]), - p = new Cesium.HeadingPitchRoll(c, m, d); - let C = Cesium.Transforms.headingPitchRollToFixedFrame(u, p, Cesium.Ellipsoid.WGS84, Cesium.Transforms.eastNorthUpToFixedFrame, new Cesium.Matrix4); - this.entity = e.viewer.scene.primitives.add(Cesium.Model.fromGltf({ - url: t, - color: Cesium.Color.WHITE, - modelMatrix: C, - scale: o - })) - } - - show(e) { - this.entity.show = e - } - - getEntity() { - return this.entity - } - - getState() { - let e = this.entity.modelMatrix; - const t = Cesium.Matrix4.getTranslation(e, new Cesium.Cartesian3); - var i = this.icy.viewer.scene.globe.ellipsoid.cartesianToCartographic(t), - r = Cesium.Math.toDegrees(i.latitude), n = Cesium.Math.toDegrees(i.longitude), s = i.height; - let a = e; - var o = Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Matrix4.getTranslation(a, new Cesium.Cartesian3), Cesium.Ellipsoid.WGS84, new Cesium.Matrix4), - l = Cesium.Matrix4.multiply(Cesium.Matrix4.inverse(o, new Cesium.Matrix4), a, new Cesium.Matrix4), - h = Cesium.Matrix4.getMatrix3(l, new Cesium.Matrix3), u = Cesium.Quaternion.fromRotationMatrix(h), - c = Cesium.HeadingPitchRoll.fromQuaternion(u); - return { - lng: n, - lat: r, - alt: s, - angle: [Cesium.Math.toDegrees(c.heading), Cesium.Math.toDegrees(c.pitch), Cesium.Math.toDegrees(c.roll)] + return "0" === r[0] && (r = r.substr(1)), r } - } - getPosition() { - return this.entity.modelMatrix - } - - destroy() { - this.icy.viewer.entities.remove(this.entity), this.entity = void 0 - } - } - - class T { - constructor(e) { - this.name = e, this.children = [] - } - - add(e) { - if (!e.entity) throw"请传入模型"; - this.children.push(e) - } - - show(e) { - this.children.forEach((t => { - t.show(e) - })) - } - - move() { - this.children.map((e => { - e.entity.position._value.x -= 1 - })) - } - - destroy(e) { - this.children.forEach((t => { - e.viewer.entities.remove(t.entity) - })) - } - } - - class P extends E { - static PERSON_BLUE = {url: E.FileUrl + "person_000002_blue.gltf"}; - static PERSON_BLUE_FAT = {url: E.FileUrl + "person_000002_blue_fat.gltf"}; - static PERSON_GREEN = {url: E.FileUrl + "person_000002_green.gltf"}; - static PERSON_GREEN_FAT = {url: E.FileUrl + "person_000002_green_fat.gltf"}; - static PERSON_RED = {url: E.FileUrl + "person_000002_red.gltf"}; - static PERSON_RED_FAT = {url: E.FileUrl + "person_000002_red_fat.gltf"}; - static PERSON_WHITE = {url: E.FileUrl + "person_000002_white.gltf"}; - static PERSON_WHITE_FAT = {url: E.FileUrl + "person_000002_white_fat.gltf"}; - static PERSON_YELLOW = {url: E.FileUrl + "person_000002_yellow.gltf"}; - static PERSON_YELLOW_FAT = {url: E.FileUrl + "person_000002_yellow_fat.gltf"}; - - constructor(e, t, {lon: i, lat: r, id: n, name: s, scale: a, angle: o, height: l}) { - super(e, {url: t.url, height: l, lon: i, lat: r, id: n, name: s, scale: a, angle: o}) - } - - destroy() { - } - } - - const b = window.Cesium, I = 52.35987755982988, R = 3.141592653589793, D = class { - static BD09ToGCJ02(e, t) { - let i = +e - .0065, r = +t - .006, n = Math.sqrt(i * i + r * r) - 2e-5 * Math.sin(r * I), - s = Math.atan2(r, i) - 3e-6 * Math.cos(i * I); - return [n * Math.cos(s), n * Math.sin(s)] - } - - static GCJ02ToBD09(e, t) { - t = +t, e = +e; - let i = Math.sqrt(e * e + t * t) + 2e-5 * Math.sin(t * I), r = Math.atan2(t, e) + 3e-6 * Math.cos(e * I); - return [i * Math.cos(r) + .0065, i * Math.sin(r) + .006] - } - - static WGS84ToGCJ02(e, t) { - if (t = +t, e = +e, this.out_of_china(e, t)) return [e, t]; - { - let i = this.delta(e, t); - return [e + i[0], t + i[1]] + static Cartesian3ToWGS84(e, t) { + var i = e.scene.globe.ellipsoid.cartesianToCartographic(t); + return [Cesium.Math.toDegrees(i.longitude), Cesium.Math.toDegrees(i.latitude), i.height] } + + static } - static GCJ02ToWGS84(e, t) { - if (t = +t, e = +e, this.out_of_china(e, t)) return [e, t]; - { - let i = this.delta(e, t); - return [2 * e - (e + i[0]), 2 * t - (t + i[1])] - } - } + Cesium.WebMercatorTilingScheme; - static delta(e, t) { - let i = this.transformLng(e - 105, t - 35), r = this.transformLat(e - 105, t - 35); - const n = t / 180 * R; - let s = Math.sin(n); - s = 1 - .006693421622965943 * s * s; - const a = Math.sqrt(s); - return i = 180 * i / (6378245 / a * Math.cos(n) * R), r = 180 * r / (6335552.717000426 / (s * a) * R), [i, r] - } - - static transformLng(e, t) { - let i = 300 + (e = +e) + 2 * (t = +t) + .1 * e * e + .1 * e * t + .1 * Math.sqrt(Math.abs(e)); - return i += 2 * (20 * Math.sin(6 * e * R) + 20 * Math.sin(2 * e * R)) / 3, i += 2 * (20 * Math.sin(e * R) + 40 * Math.sin(e / 3 * R)) / 3, i += 2 * (150 * Math.sin(e / 12 * R) + 300 * Math.sin(e / 30 * R)) / 3, i - } - - static transformLat(e, t) { - let i = 2 * (e = +e) - 100 + 3 * (t = +t) + .2 * t * t + .1 * e * t + .2 * Math.sqrt(Math.abs(e)); - return i += 2 * (20 * Math.sin(6 * e * R) + 20 * Math.sin(2 * e * R)) / 3, i += 2 * (20 * Math.sin(t * R) + 40 * Math.sin(t / 3 * R)) / 3, i += 2 * (160 * Math.sin(t / 12 * R) + 320 * Math.sin(t * R / 30)) / 3, i - } - - static out_of_china(e, t) { - return t = +t, !((e = +e) > 73.66 && e < 135.05 && t > 3.86 && t < 53.55) - } - - static transformWGS84ToCartesian(e, t, i) { - return t ? b.Cartesian3.fromDegrees(t.lng || t.lon, t.lat, t.alt = i || t.alt, b.Ellipsoid.WGS84) : b.Cartesian3.ZERO - } - - static transformCartesianToWGS84(e, t) { - let i = b.Ellipsoid.WGS84.cartesianToCartographic(t); - return {lng: b.Math.toDegrees(i.longitude), lat: b.Math.toDegrees(i.latitude), alt: i.height} - } - }, A = class { - constructor(e, t, i, r) { - if (!e) throw new Error("viewer is required!"); - this._viewer = e, this._gltf = t, this._handler = void 0, this._defaultWidth = 15, this._currentPick = void 0, this._dStep = i, this._rStep = r, this._params = { - tx: 0, - ty: 0, - tz: 0, - heading: 0, - pitch: 0, - roll: 0, - scale: 1 - }, this._coordArrows = void 0, this._coordCircle = [], this.initEvent() - } - - get params() { - return this._params - } - - initParam() { - this.removeAllTools(); - let e = this._gltf; - this._viewer; - const t = this.returnGltfCentorDegree(e), i = this.returnGltfRotation(e); - return this._params.tx = t.lng, this._params.ty = t.lat, this._params.tz = t.alt, this._params.heading = i.heading, this._params.pitch = i.pitch, this._params.roll = i.roll, { - originDegree: t, - length: 50 - } - } - - returnGltfRotation(e) { - let t = e.modelMatrix, - i = Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Matrix4.getTranslation(t, new Cesium.Cartesian3), Cesium.Ellipsoid.WGS84, new Cesium.Matrix4), - r = Cesium.Matrix4.multiply(Cesium.Matrix4.inverse(i, new Cesium.Matrix4), t, new Cesium.Matrix4), - n = Cesium.Matrix4.getMatrix3(r, new Cesium.Matrix3), s = Cesium.Quaternion.fromRotationMatrix(n); - return Cesium.HeadingPitchRoll.fromQuaternion(s) - } - - returnGltfCentor(e) { - let t = e.modelMatrix; - return new Cesium.Cartesian3(t[12], t[13], t[14]) - } - - returnGltfCentorDegree(e) { - let t = this.returnGltfCentor(e); - return D.transformCartesianToWGS84(this._viewer, t) - } - - editRtation() { - const e = this.initParam(); - this.createCircle(e.originDegree.lng, e.originDegree.lat, e.originDegree.alt, e.length) - } - - createCircle(e, t, i, r) { - const n = []; - for (let e = 0; e <= 360; e += 3) { - const t = Math.sin(Cesium.Math.toRadians(e)), i = r * Math.cos(Cesium.Math.toRadians(e)), s = r * t; - n.push(new Cesium.Cartesian3(i, s, 0)) - } - const s = Cesium.Transforms.eastNorthUpToFixedFrame(new Cesium.Cartesian3.fromDegrees(e, t, i)), - a = this.createAxisSphere("model_edit_zCircle", n, s, Cesium.Color.RED); - this._viewer.scene.primitives.add(a); - const o = this.createAxisSphere("model_edit_yCircle", n, s, Cesium.Color.BLUE); - this._viewer.scene.primitives.add(o); - let l = Cesium.Matrix3.fromRotationY(Cesium.Math.toRadians(90)), - h = Cesium.Matrix4.fromRotationTranslation(l); - Cesium.Matrix4.multiply(o.geometryInstances.modelMatrix, h, o.geometryInstances.modelMatrix); - const u = this.createAxisSphere("model_edit_xCircle", n, s, Cesium.Color.GREEN); - this._viewer.scene.primitives.add(u); - let c = Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(90)), - m = Cesium.Matrix4.fromRotationTranslation(c); - Cesium.Matrix4.multiply(u.geometryInstances.modelMatrix, m, u.geometryInstances.modelMatrix) - } - - createAxisSphere(e, t, i, r) { - let n = new Cesium.Primitive({ - geometryInstances: new Cesium.GeometryInstance({ - id: e, - geometry: new Cesium.PolylineGeometry({positions: t, width: 5}), - attributes: {color: Cesium.ColorGeometryInstanceAttribute.fromColor(r)} - }), - releaseGeometryInstances: !1, - appearance: new Cesium.PolylineColorAppearance({translucent: !1}), - modelMatrix: i + class i { + static google_mapResources = new Cesium.UrlTemplateImageryProvider({ + url: "https://mt1.google.com/vt/lyrs=s&x={x}&y={y}&z={z}", + credit: "谷歌影像服务" }); - return n._name = e, this._coordCircle.push(n), n - } - - onEdit(e) { - this._gltf.color = this._gltf.color.withAlpha(e ? .5 : 1), this._gltf._allowPicking = !e - } - - editTranslation() { - const e = this.initParam(); - this.onEdit(!0); - const t = e.length; - let i = new Cesium.Cartesian3(t, t, t), r = this.returnGltfCentor(this._gltf), - n = this.getTransPostion(r, i); - this.initLineArrow(e.originDegree, n, t) - } - - updateLineArrow(e, t) { - this.removeCoordArrows(), this._viewer; - const i = e.scale * e._boundingSphere.radius / .8; - let r = new Cesium.Cartesian3(i, i, i), n = this.returnGltfCentor(this._gltf), - s = this.getTransPostion(n, r); - this.initLineArrow(t, s, i) - } - - initEvent() { - const e = this, t = this._viewer; - e._handler = new Cesium.ScreenSpaceEventHandler(t.scene.canvas), e._handler.setInputAction((function (i) { - let r = t.scene.pick(i.position); - if (r && r.primitive && r.primitive._name && -1 != r.primitive._name.indexOf("model_edit")) { - t.scene.screenSpaceCameraController.enableRotate = !1, e._currentPick = r.primitive, e._currentPick.width = 25; - let n = t.scene.camera.pickEllipsoid(i.position, t.scene.globe.ellipsoid), - s = JSON.parse(JSON.stringify(e._gltf.modelMatrix)), a = 0, o = 0, l = 0, h = 0, u = 0, c = 0; - if (n && Cesium.defined(n)) { - a = 0, o = 0, l = 0, h = 0, u = 0, c = 0; - const r = D.transformCartesianToWGS84(t, n); - e._handler.setInputAction((function (n) { - let m = t.scene.camera.pickEllipsoid(n.endPosition, t.scene.globe.ellipsoid); - const d = D.transformCartesianToWGS84(t, m), p = n.endPosition.y - i.position.y, - C = n.endPosition.x - i.position.x; - switch (e._currentPick._name) { - case"model_edit_xArrow": - a = d.lng - r.lng; - break; - case"model_edit_yArrow": - o = d.lat - r.lat; - break; - case"model_edit_zArrow": - l = -e._dStep * p; - break; - case"model_edit_xCircle": - h = e._rStep * p; - break; - case"model_edit_yCircle": - u = e._rStep * C; - break; - case"model_edit_zCircle": - c = e._rStep * C - } - e.updateModel(e._params, a, o, l, h, u, c, s) - }), Cesium.ScreenSpaceEventType.MOUSE_MOVE) + static tiandi_mapResources = new Cesium.UrlTemplateImageryProvider({ + url: "https://ecn.t{s}.tiles.virtualearth.net/tiles/a{q}.jpeg?n=z&g=11404", + subdomains: ["0", "1", "2", "3"], + tilingScheme: new Cesium.WebMercatorTilingScheme, + customTags: { + q: function (e, i, r, n) { + return t.tileXYToQuadKey(i, r, n) } - e._handler.setInputAction((function (i) { - t.scene.screenSpaceCameraController.enableRotate = !0, e._currentPick.width = e._defaultWidth, e._currentPick = void 0, e._params.tx += a, e._params.ty += o, e._params.tz += l; - let r = e.returnGltfRotation(e._gltf); - e._params.heading = r.heading, e._params.pitch = r.pitch, e._params.roll = r.roll, e._handler.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE), e._handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_UP) - }), Cesium.ScreenSpaceEventType.LEFT_UP) + }, + minimumLevel: 3, + maximumLevel: 19 + }); + static gaode_mapResources = new Cesium.UrlTemplateImageryProvider({ + url: "https://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}", + minimumLevel: 3, + maximumLevel: 18 + }); + + constructor(e, t, r, n) { + if (this.icy = {viewer: void 0, name: t}, 1 == r) { + let t = new Cesium.UrlTemplateImageryProvider({ + url: n, + fileExtension: "png", + minimumLevel: 0, + maximumLevel: 19, + tilingScheme: new Cesium.WebMercatorTilingScheme + }); + this.init(e, t, 50) } - }), Cesium.ScreenSpaceEventType.LEFT_DOWN) + 2 == r && this.init(e, i.google_mapResources, 50), 3 == r && this.init(e, i.tiandi_mapResources, 50), 4 == r && this.init(e, i.gaode_mapResources, 50), 5 == r && this.init(e, void 0, 50) + } + + getIcy() { + return this.icy + } + + init(e, t, i = 50) { + this.icy.viewer = new Cesium.Viewer(e, { + targetFrameRate: i, + imageryProvider: t, + animation: !1, + timeline: !1, + geocoder: !1, + homeButton: !1, + sceneModePicker: !1, + baseLayerPicker: !1, + navigationHelpButton: !1, + fullscreenButton: !1 + }), this.icy.viewer.scene.mode, Cesium.SceneMode.COLUMBUS_VIEW, this.icy.viewer.scene.screenSpaceCameraController.enableTilt = !0, this.icy.viewer._cesiumWidget._creditContainer.style.display = "none", this.icy.viewer.scene.globe.depthTestAgainstTerrain = !0, this.icy.viewer.scene.sampleHeightSupported || window.alert("浏览器不支持 sampleHeight."), this.icy.viewer.scene.pickPositionSupported || window.alert("不支持深度纹理,无法绘制多边形,地形开挖功能无法使用!"), this.icy.viewer.scene.globe.enableLighting = !1, this.icy.viewer.shadows = !1, this.icy.viewer.scene.globe.fillHighlightColor = 1, this.icy.viewer.scene.postProcessStages.fxaa.enabled = !0, this.fPSShow(!0), this.initMaterial(); + } + + fPSShow(e) { + this.icy.viewer.scene.debugShowFramesPerSecond = e + } + + destroy() { + this.icy.iewer.destroy(), this.icy = void 0 + } + + initMaterial() { + Cesium.WallDiffuseMaterialProperty || (Object.defineProperties(e.prototype, {color: Cesium.createPropertyDescriptor("color")}), Cesium.WallDiffuseMaterialProperty = e, Cesium.Material.WallDiffuseMaterialProperty = "WallDiffuseMaterialProperty", Cesium.Material.WallDiffuseMaterialType = "WallDiffuseMaterialType", Cesium.Material.WallDiffuseMaterialSource = "\n uniform vec4 color;\n czm_material czm_getMaterial(czm_materialInput materialInput){\n czm_material material = czm_getDefaultMaterial(materialInput);\n vec2 st = materialInput.st;\n material.diffuse = color.rgb * 2.0;\n material.alpha = color.a * (1.0 - fract(st.t)) * 0.8;\n return material;\n } \n ", Cesium.Material._materialCache.addMaterial(Cesium.Material.WallDiffuseMaterialType, { + fabric: { + type: Cesium.Material.WallDiffuseMaterialType, + uniforms: {color: new Cesium.Color(1, 0, 0, 1)}, + source: Cesium.Material.WallDiffuseMaterialSource + }, translucent: function (e) { + return !0 + } + })) + } } - updateModel(e, t, i, r, n, s, a, o) { - if (this._coordArrows) { - let n = new Cesium.HeadingPitchRoll(e.heading, e.pitch, e.roll), - s = new Cesium.Cartesian3.fromDegrees(e.tx + t, e.ty + i, e.tz + r), - a = Cesium.Transforms.headingPitchRollToFixedFrame(s, n, Cesium.Ellipsoid.WGS84, Cesium.Transforms.eastNorthUpToFixedFrame, new Cesium.Matrix4); - this._gltf.modelMatrix = a, this.updateLineArrow(this._gltf, { - lng: e.tx + t, - lat: e.ty + i, - alt: e.tz + r + class r { + constructor(e) { + this.icy = e + } + + flyTo({maxHeight: e, time: t, position: i, angle: r}) { + 3 == i.length ? (e || (e = 10), t && 0 != t || (t = 3), this.icy.viewer.camera.flyTo({ + destination: Cesium.Cartesian3.fromDegrees(i[0], i[1], i[2]), + duration: t, + maximumHeight: e, + orientation: { + heading: Cesium.Math.toRadians(r[0]), + pitch: Cesium.Math.toRadians(r[1]), + roll: Cesium.Math.toRadians(r[2]) + } + })) : console.log("相机飞行请传入经纬高") + } + + flyToInfo({maxHeight: e, time: t, position: i, angle: r}) { + 3 == i.length ? (e || (e = 10), t && 0 != t || (t = 3), this.icy.viewer.camera.flyTo({ + destination: new Cesium.Cartesian3(i[0], i[1], i[2]), + duration: t, + maximumHeight: e, + orientation: {heading: r.heading, pitch: r.pitch, roll: r.roll} + })) : console.log("相机飞行请传入经纬高") + } + + teleporting(e) { + if (6 != e.length) throw"相机跳转参数错误,请检查传入参数"; + icy.viewer.camera.setView({ + destination: {x: e[0], y: e[1], z: e[2]}, + orientation: {heading: e[3], pitch: e[4], roll: e[5]} }) } - if (this._coordCircle) { - let e; - 0 != n ? e = Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(n)) : 0 != s ? e = Cesium.Matrix3.fromRotationY(Cesium.Math.toRadians(s)) : 0 != a && (e = Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(a))), this._gltf.modelMatrix = e ? Cesium.Matrix4.multiplyByMatrix3(o, e, new Cesium.Matrix4) : this._gltf.modelMatrix + + follow({angle: e, targetPoint: t, distance: i}, r) { + let n = turf.point([t[0], t[1]]), s = -e[0], a = turf.rhumbDestination(n, i, s, {units: "kilometers"}); + this.flyTo({ + maxHeight: 20, + time: r, + position: [a.geometry.coordinates[0], a.geometry.coordinates[1], t[2]], + angle: e + }) + } + + getgGsture() { + console.log("当前相机姿态输出"); + let e = this.icy.viewer.camera.heading, t = this.icy.viewer.camera.pitch, + i = this.icy.viewer.camera.roll, r = this.icy.viewer.camera.positionWC; + console.log(`destination:{x:${r.x},y:${r.y},z:${r.z}},orientation:{heading:${e},pitch:${t},roll:${i}}`) + } + + changeView(e) { + if ("2D" == e) { + let e = this.getCenterPoint(this.icy.viewer); + this.icy.viewer.scene.camera.flyTo({ + destination: Cesium.Cartesian3.fromDegrees(e[0], e[1], 2e3), + orientation: { + heading: this.icy.viewer.scene.camera.heading, + pitch: Cesium.Math.toRadians(-90), + roll: 0 + } + }), this.icy.viewer.scene.screenSpaceCameraController.enableTilt = !1 + } + if ("3D" == e) { + let e = 0, t = setInterval((() => { + e += 5, this.icy.viewer.scene.camera.moveDown(5), e >= 2e3 && (clearInterval(t), setTimeout((() => { + this.icy.viewer.scene.camera.flyTo({ + destination: this.icy.viewer.scene.camera.positionWC, + orientation: { + heading: this.icy.viewer.scene.camera.heading, + pitch: Cesium.Math.toRadians(-45), + roll: 0 + } + }) + }), 100)) + })); + this.icy.viewer.scene.screenSpaceCameraController.enableTilt = !0 + } + } + + getCenterPoint(e) { + let t = e.camera.pickEllipsoid(new Cesium.Cartesian2(e.canvas.clientWidth / 2, e.canvas.clientHeight / 2)), + i = Cesium.Ellipsoid.WGS84.cartesianToCartographic(t); + return [180 * i.longitude / Math.PI, 180 * i.latitude / Math.PI] + } + + getBottomCenterPoint(e) { + let t = e.camera.pickEllipsoid(new Cesium.Cartesian2(e.canvas.clientWidth / 2, e.canvas.clientHeight)), + i = Cesium.Ellipsoid.WGS84.cartesianToCartographic(t); + return [180 * i.longitude / Math.PI, 180 * i.latitude / Math.PI] } } - initLineArrow(e, t, i) { - const r = new Cesium.PolylineCollection, n = [e.lng, e.lat, e.alt, t.lng, e.lat, e.alt], - s = (this.darwArrow(r, "model_edit_xArrow", n, Cesium.Color.GREEN), [e.lng, e.lat, e.alt, e.lng, t.lat, e.alt]), - a = (this.darwArrow(r, "model_edit_yArrow", s, Cesium.Color.BLUE), [e.lng, e.lat, e.alt, e.lng, e.lat, t.alt]); - this.darwArrow(r, "model_edit_zArrow", a, Cesium.Color.RED), this._coordArrows = this._viewer.scene.primitives.add(r), this._coordArrows._name = "CoordAxis" + class n { + constructor(e, t, i = 0) { + this.icy = e, this.tileset = e.viewer.scene.primitives.add(new Cesium.Cesium3DTileset({ + url: t, + show: !0 + })), this.tileset.readyPromise.then((e => { + this.tileset = e, this.setHeight(i) + })) + } + + show(e) { + this.tileset.show = e + } + + setHeight(e = 0) { + const t = this.tileset.boundingSphere, i = Cesium.Cartographic.fromCartesian(t.center), + r = Cesium.Cartesian3.fromRadians(i.longitude, i.latitude, 0), + n = Cesium.Cartesian3.fromRadians(i.longitude, i.latitude, e), + s = Cesium.Cartesian3.subtract(n, r, new Cesium.Cartesian3); + this.tileset.modelMatrix = Cesium.Matrix4.fromTranslation(s) + } + + look() { + this.icy.viewer.zoomTo(this.tileset) + } + + destroy() { + this.tileset.destroy(), this.tileset = void 0 + } } - darwArrow(e, t, i, r) { - e.add({ - positions: Cesium.Cartesian3.fromDegreesArrayHeights(i), - width: this._defaultWidth, - material: Cesium.Material.fromType(Cesium.Material.PolylineArrowType, {color: r}) - })._name = t + class s { + constructor(e) { + this.icy = e, this.billboard = void 0 + } + + mouseMOVE(e) { + new Cesium.ScreenSpaceEventHandler(this.icy.viewer.scene.canvas).setInputAction((t => { + if (!this.icy.viewer.scene.pick(t.endPosition)) return this.billboard && (this.icy.viewer.canvas.style.cursor = "default", this.billboard.scale = void 0, this.billboard = void 0), void e(!1) + }), Cesium.ScreenSpaceEventType.MOUSE_MOVE) + } + + mouseLeft(e) { + new Cesium.ScreenSpaceEventHandler(this.icy.viewer.scene.canvas).setInputAction((t => { + let i = this.icy.viewer.camera.getPickRay(t.position), + r = this.icy.viewer.scene.globe.pick(i, this.icy.viewer.scene), + n = Cesium.Cartographic.fromCartesian(r), s = Cesium.Math.toDegrees(n.longitude), + a = Cesium.Math.toDegrees(n.latitude), o = n.height, l = { + longitude: Number(s.toFixed(8)), + latitude: Number(a.toFixed(8)), + altitude: Number(o.toFixed(5)) + }; + console.log("鼠标获取经纬高", s, a, o, l); + let u = this.icy.viewer.scene.pick(t.position); + if (console.log(u), !u) return console.log("pick为空"), this.icy.viewer.scene.globe.translucency.enabled = !0, void (this.icy.viewer.scene.globe.translucency.frontFaceAlpha = 1); + e(u.id) + }), Cesium.ScreenSpaceEventType.LEFT_CLICK) + } + + mouseRight(e) { + let t = new Cesium.ScreenSpaceEventHandler(this.icy.viewer.scene.canvas), i = this; + t.setInputAction((t => { + let r = (n = i.icy.viewer.scene.pickPosition(t.position), s = new Cesium.Cartesian3(n.x, n.y, n.z), a = Cesium.Cartographic.fromCartesian(s), o = Cesium.Math.toDegrees(a.latitude), { + lng: Cesium.Math.toDegrees(a.longitude), + lat: o, + alt: a.height + }); + var n, s, a, o; + e(r) + }), Cesium.ScreenSpaceEventType.RIGHT_CLICK) + } + + mouseLeftDouble(e) { + new Cesium.ScreenSpaceEventHandler(this.icy.viewer.scene.canvas).setInputAction((t => { + let i = this.icy.viewer.camera.getPickRay(t.position), + r = this.icy.viewer.scene.globe.pick(i, this.icy.viewer.scene), + n = Cesium.Cartographic.fromCartesian(r), s = Cesium.Math.toDegrees(n.longitude), + a = Cesium.Math.toDegrees(n.latitude), o = n.height; + e(s, a, o) + }), Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK) + } } - getTransPostion(e, t) { - let i = Cesium.Transforms.eastNorthUpToFixedFrame(e), r = new Cesium.Matrix4; - Cesium.Matrix4.setTranslation(Cesium.Matrix4.IDENTITY, t, r); - let n = Cesium.Matrix4.multiply(i, r, i); - return Cesium.Matrix4.getTranslation(n, e), D.transformCartesianToWGS84(this._viewer, e) + var a, o = Object.freeze({ + Linear: Object.freeze({ + None: function (e) { + return e + }, In: function (e) { + return this.None(e) + }, Out: function (e) { + return this.None(e) + }, InOut: function (e) { + return this.None(e) + } + }), Quadratic: Object.freeze({ + In: function (e) { + return e * e + }, Out: function (e) { + return e * (2 - e) + }, InOut: function (e) { + return (e *= 2) < 1 ? .5 * e * e : -.5 * (--e * (e - 2) - 1) + } + }), Cubic: Object.freeze({ + In: function (e) { + return e * e * e + }, Out: function (e) { + return --e * e * e + 1 + }, InOut: function (e) { + return (e *= 2) < 1 ? .5 * e * e * e : .5 * ((e -= 2) * e * e + 2) + } + }), Quartic: Object.freeze({ + In: function (e) { + return e * e * e * e + }, Out: function (e) { + return 1 - --e * e * e * e + }, InOut: function (e) { + return (e *= 2) < 1 ? .5 * e * e * e * e : -.5 * ((e -= 2) * e * e * e - 2) + } + }), Quintic: Object.freeze({ + In: function (e) { + return e * e * e * e * e + }, Out: function (e) { + return --e * e * e * e * e + 1 + }, InOut: function (e) { + return (e *= 2) < 1 ? .5 * e * e * e * e * e : .5 * ((e -= 2) * e * e * e * e + 2) + } + }), Sinusoidal: Object.freeze({ + In: function (e) { + return 1 - Math.sin((1 - e) * Math.PI / 2) + }, Out: function (e) { + return Math.sin(e * Math.PI / 2) + }, InOut: function (e) { + return .5 * (1 - Math.sin(Math.PI * (.5 - e))) + } + }), Exponential: Object.freeze({ + In: function (e) { + return 0 === e ? 0 : Math.pow(1024, e - 1) + }, Out: function (e) { + return 1 === e ? 1 : 1 - Math.pow(2, -10 * e) + }, InOut: function (e) { + return 0 === e ? 0 : 1 === e ? 1 : (e *= 2) < 1 ? .5 * Math.pow(1024, e - 1) : .5 * (2 - Math.pow(2, -10 * (e - 1))) + } + }), Circular: Object.freeze({ + In: function (e) { + return 1 - Math.sqrt(1 - e * e) + }, Out: function (e) { + return Math.sqrt(1 - --e * e) + }, InOut: function (e) { + return (e *= 2) < 1 ? -.5 * (Math.sqrt(1 - e * e) - 1) : .5 * (Math.sqrt(1 - (e -= 2) * e) + 1) + } + }), Elastic: Object.freeze({ + In: function (e) { + return 0 === e ? 0 : 1 === e ? 1 : -Math.pow(2, 10 * (e - 1)) * Math.sin(5 * (e - 1.1) * Math.PI) + }, Out: function (e) { + return 0 === e ? 0 : 1 === e ? 1 : Math.pow(2, -10 * e) * Math.sin(5 * (e - .1) * Math.PI) + 1 + }, InOut: function (e) { + return 0 === e ? 0 : 1 === e ? 1 : (e *= 2) < 1 ? -.5 * Math.pow(2, 10 * (e - 1)) * Math.sin(5 * (e - 1.1) * Math.PI) : .5 * Math.pow(2, -10 * (e - 1)) * Math.sin(5 * (e - 1.1) * Math.PI) + 1 + } + }), Back: Object.freeze({ + In: function (e) { + var t = 1.70158; + return 1 === e ? 1 : e * e * ((t + 1) * e - t) + }, Out: function (e) { + var t = 1.70158; + return 0 === e ? 0 : --e * e * ((t + 1) * e + t) + 1 + }, InOut: function (e) { + var t = 2.5949095; + return (e *= 2) < 1 ? e * e * ((t + 1) * e - t) * .5 : .5 * ((e -= 2) * e * ((t + 1) * e + t) + 2) + } + }), Bounce: Object.freeze({ + In: function (e) { + return 1 - o.Bounce.Out(1 - e) + }, Out: function (e) { + return e < 1 / 2.75 ? 7.5625 * e * e : e < 2 / 2.75 ? 7.5625 * (e -= 1.5 / 2.75) * e + .75 : e < 2.5 / 2.75 ? 7.5625 * (e -= 2.25 / 2.75) * e + .9375 : 7.5625 * (e -= 2.625 / 2.75) * e + .984375 + }, InOut: function (e) { + return e < .5 ? .5 * o.Bounce.In(2 * e) : .5 * o.Bounce.Out(2 * e - 1) + .5 + } + }), generatePow: function (e) { + return void 0 === e && (e = 4), e = (e = e < Number.EPSILON ? Number.EPSILON : e) > 1e4 ? 1e4 : e, { + In: function (t) { + return Math.pow(t, e) + }, Out: function (t) { + return 1 - Math.pow(1 - t, e) + }, InOut: function (t) { + return t < .5 ? Math.pow(2 * t, e) / 2 : (1 - Math.pow(2 - 2 * t, e)) / 2 + .5 + } + } + } + }), l = "undefined" == typeof self && "undefined" != typeof process && process.hrtime ? function () { + var e = process.hrtime(); + return 1e3 * e[0] + e[1] / 1e6 + } : "undefined" != typeof self && void 0 !== self.performance && void 0 !== self.performance.now ? self.performance.now.bind(self.performance) : void 0 !== Date.now ? Date.now : function () { + return (new Date).getTime() + }, u = function () { + function e() { + this._tweens = {}, this._tweensAddedDuringUpdate = {} + } + + return e.prototype.getAll = function () { + var e = this; + return Object.keys(this._tweens).map((function (t) { + return e._tweens[t] + })) + }, e.prototype.removeAll = function () { + this._tweens = {} + }, e.prototype.add = function (e) { + this._tweens[e.getId()] = e, this._tweensAddedDuringUpdate[e.getId()] = e + }, e.prototype.remove = function (e) { + delete this._tweens[e.getId()], delete this._tweensAddedDuringUpdate[e.getId()] + }, e.prototype.update = function (e, t) { + void 0 === e && (e = l()), void 0 === t && (t = !1); + var i = Object.keys(this._tweens); + if (0 === i.length) return !1; + for (; i.length > 0;) { + this._tweensAddedDuringUpdate = {}; + for (var r = 0; r < i.length; r++) { + var n = this._tweens[i[r]], s = !t; + n && !1 === n.update(e, s) && !t && delete this._tweens[i[r]] + } + i = Object.keys(this._tweensAddedDuringUpdate) + } + return !0 + }, e + }(), c = { + Linear: function (e, t) { + var i = e.length - 1, r = i * t, n = Math.floor(r), s = c.Utils.Linear; + return t < 0 ? s(e[0], e[1], r) : t > 1 ? s(e[i], e[i - 1], i - r) : s(e[n], e[n + 1 > i ? i : n + 1], r - n) + }, Bezier: function (e, t) { + for (var i = 0, r = e.length - 1, n = Math.pow, s = c.Utils.Bernstein, a = 0; a <= r; a++) i += n(1 - t, r - a) * n(t, a) * e[a] * s(r, a); + return i + }, CatmullRom: function (e, t) { + var i = e.length - 1, r = i * t, n = Math.floor(r), s = c.Utils.CatmullRom; + return e[0] === e[i] ? (t < 0 && (n = Math.floor(r = i * (1 + t))), s(e[(n - 1 + i) % i], e[n], e[(n + 1) % i], e[(n + 2) % i], r - n)) : t < 0 ? e[0] - (s(e[0], e[0], e[1], e[1], -r) - e[0]) : t > 1 ? e[i] - (s(e[i], e[i], e[i - 1], e[i - 1], r - i) - e[i]) : s(e[n ? n - 1 : 0], e[n], e[i < n + 1 ? i : n + 1], e[i < n + 2 ? i : n + 2], r - n) + }, Utils: { + Linear: function (e, t, i) { + return (t - e) * i + e + }, Bernstein: function (e, t) { + var i = c.Utils.Factorial; + return i(e) / i(t) / i(e - t) + }, Factorial: (a = [1], function (e) { + var t = 1; + if (a[e]) return a[e]; + for (var i = e; i > 1; i--) t *= i; + return a[e] = t, t + }), CatmullRom: function (e, t, i, r, n) { + var s = .5 * (i - e), a = .5 * (r - t), o = n * n; + return (2 * t - 2 * i + s + a) * (n * o) + (-3 * t + 3 * i - 2 * s - a) * o + s * n + t + } + } + }, h = function () { + function e() { + } + + return e.nextId = function () { + return e._nextId++ + }, e._nextId = 0, e + }(), m = new u, d = function () { + function e(e, t) { + void 0 === t && (t = m), this._object = e, this._group = t, this._isPaused = !1, this._pauseStart = 0, this._valuesStart = {}, this._valuesEnd = {}, this._valuesStartRepeat = {}, this._duration = 1e3, this._initialRepeat = 0, this._repeat = 0, this._yoyo = !1, this._isPlaying = !1, this._reversed = !1, this._delayTime = 0, this._startTime = 0, this._easingFunction = o.Linear.None, this._interpolationFunction = c.Linear, this._chainedTweens = [], this._onStartCallbackFired = !1, this._onEveryStartCallbackFired = !1, this._id = h.nextId(), this._isChainStopped = !1, this._goToEnd = !1 + } + + return e.prototype.getId = function () { + return this._id + }, e.prototype.isPlaying = function () { + return this._isPlaying + }, e.prototype.isPaused = function () { + return this._isPaused + }, e.prototype.to = function (e, t) { + return this._valuesEnd = Object.create(e), void 0 !== t && (this._duration = t), this + }, e.prototype.duration = function (e) { + return void 0 === e && (e = 1e3), this._duration = e, this + }, e.prototype.start = function (e, t) { + if (void 0 === e && (e = l()), void 0 === t && (t = !1), this._isPlaying) return this; + if (this._group && this._group.add(this), this._repeat = this._initialRepeat, this._reversed) for (var i in this._reversed = !1, this._valuesStartRepeat) this._swapEndStartRepeatValues(i), this._valuesStart[i] = this._valuesStartRepeat[i]; + return this._isPlaying = !0, this._isPaused = !1, this._onStartCallbackFired = !1, this._onEveryStartCallbackFired = !1, this._isChainStopped = !1, this._startTime = e, this._startTime += this._delayTime, this._setupProperties(this._object, this._valuesStart, this._valuesEnd, this._valuesStartRepeat, t), this + }, e.prototype.startFromCurrentValues = function (e) { + return this.start(e, !0) + }, e.prototype._setupProperties = function (e, t, i, r, n) { + for (var s in i) { + var a = e[s], o = Array.isArray(a), l = o ? "array" : typeof a, u = !o && Array.isArray(i[s]); + if ("undefined" !== l && "function" !== l) { + if (u) { + var c = i[s]; + if (0 === c.length) continue; + c = c.map(this._handleRelativeValue.bind(this, a)), void 0 === t[s] && (i[s] = [a].concat(c)) + } + if ("object" !== l && !o || !a || u) (void 0 === t[s] || n) && (t[s] = a), o || (t[s] *= 1), r[s] = u ? i[s].slice().reverse() : t[s] || 0; else { + for (var h in t[s] = o ? [] : {}, a) t[s][h] = a[h]; + r[s] = o ? [] : {}, this._setupProperties(a, t[s], i[s], r[s], n) + } + } + } + }, e.prototype.stop = function () { + return this._isChainStopped || (this._isChainStopped = !0, this.stopChainedTweens()), this._isPlaying ? (this._group && this._group.remove(this), this._isPlaying = !1, this._isPaused = !1, this._onStopCallback && this._onStopCallback(this._object), this) : this + }, e.prototype.end = function () { + return this._goToEnd = !0, this.update(1 / 0), this + }, e.prototype.pause = function (e) { + return void 0 === e && (e = l()), this._isPaused || !this._isPlaying || (this._isPaused = !0, this._pauseStart = e, this._group && this._group.remove(this)), this + }, e.prototype.resume = function (e) { + return void 0 === e && (e = l()), this._isPaused && this._isPlaying ? (this._isPaused = !1, this._startTime += e - this._pauseStart, this._pauseStart = 0, this._group && this._group.add(this), this) : this + }, e.prototype.stopChainedTweens = function () { + for (var e = 0, t = this._chainedTweens.length; e < t; e++) this._chainedTweens[e].stop(); + return this + }, e.prototype.group = function (e) { + return void 0 === e && (e = m), this._group = e, this + }, e.prototype.delay = function (e) { + return void 0 === e && (e = 0), this._delayTime = e, this + }, e.prototype.repeat = function (e) { + return void 0 === e && (e = 0), this._initialRepeat = e, this._repeat = e, this + }, e.prototype.repeatDelay = function (e) { + return this._repeatDelayTime = e, this + }, e.prototype.yoyo = function (e) { + return void 0 === e && (e = !1), this._yoyo = e, this + }, e.prototype.easing = function (e) { + return void 0 === e && (e = o.Linear.None), this._easingFunction = e, this + }, e.prototype.interpolation = function (e) { + return void 0 === e && (e = c.Linear), this._interpolationFunction = e, this + }, e.prototype.chain = function () { + for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]; + return this._chainedTweens = e, this + }, e.prototype.onStart = function (e) { + return this._onStartCallback = e, this + }, e.prototype.onEveryStart = function (e) { + return this._onEveryStartCallback = e, this + }, e.prototype.onUpdate = function (e) { + return this._onUpdateCallback = e, this + }, e.prototype.onRepeat = function (e) { + return this._onRepeatCallback = e, this + }, e.prototype.onComplete = function (e) { + return this._onCompleteCallback = e, this + }, e.prototype.onStop = function (e) { + return this._onStopCallback = e, this + }, e.prototype.update = function (e, t) { + if (void 0 === e && (e = l()), void 0 === t && (t = !0), this._isPaused) return !0; + var i, r, n = this._startTime + this._duration; + if (!this._goToEnd && !this._isPlaying) { + if (e > n) return !1; + t && this.start(e, !0) + } + if (this._goToEnd = !1, e < this._startTime) return !0; + !1 === this._onStartCallbackFired && (this._onStartCallback && this._onStartCallback(this._object), this._onStartCallbackFired = !0), !1 === this._onEveryStartCallbackFired && (this._onEveryStartCallback && this._onEveryStartCallback(this._object), this._onEveryStartCallbackFired = !0), r = (e - this._startTime) / this._duration, r = 0 === this._duration || r > 1 ? 1 : r; + var s = this._easingFunction(r); + if (this._updateProperties(this._object, this._valuesStart, this._valuesEnd, s), this._onUpdateCallback && this._onUpdateCallback(this._object, r), 1 === r) { + if (this._repeat > 0) { + for (i in isFinite(this._repeat) && this._repeat--, this._valuesStartRepeat) this._yoyo || "string" != typeof this._valuesEnd[i] || (this._valuesStartRepeat[i] = this._valuesStartRepeat[i] + parseFloat(this._valuesEnd[i])), this._yoyo && this._swapEndStartRepeatValues(i), this._valuesStart[i] = this._valuesStartRepeat[i]; + return this._yoyo && (this._reversed = !this._reversed), void 0 !== this._repeatDelayTime ? this._startTime = e + this._repeatDelayTime : this._startTime = e + this._delayTime, this._onRepeatCallback && this._onRepeatCallback(this._object), this._onEveryStartCallbackFired = !1, !0 + } + this._onCompleteCallback && this._onCompleteCallback(this._object); + for (var a = 0, o = this._chainedTweens.length; a < o; a++) this._chainedTweens[a].start(this._startTime + this._duration, !1); + return this._isPlaying = !1, !1 + } + return !0 + }, e.prototype._updateProperties = function (e, t, i, r) { + for (var n in i) if (void 0 !== t[n]) { + var s = t[n] || 0, a = i[n], o = Array.isArray(e[n]), l = Array.isArray(a); + !o && l ? e[n] = this._interpolationFunction(a, r) : "object" == typeof a && a ? this._updateProperties(e[n], s, a, r) : "number" == typeof (a = this._handleRelativeValue(s, a)) && (e[n] = s + (a - s) * r) + } + }, e.prototype._handleRelativeValue = function (e, t) { + return "string" != typeof t ? t : "+" === t.charAt(0) || "-" === t.charAt(0) ? e + parseFloat(t) : parseFloat(t) + }, e.prototype._swapEndStartRepeatValues = function (e) { + var t = this._valuesStartRepeat[e], i = this._valuesEnd[e]; + this._valuesStartRepeat[e] = "string" == typeof i ? this._valuesStartRepeat[e] + parseFloat(i) : this._valuesEnd[e], this._valuesEnd[e] = t + }, e + }(), p = h.nextId, C = m, _ = C.getAll.bind(C), g = C.removeAll.bind(C), f = C.add.bind(C), + y = C.remove.bind(C), v = C.update.bind(C); + const w = { + Easing: o, + Group: u, + Interpolation: c, + now: l, + Sequence: h, + nextId: p, + Tween: d, + VERSION: "19.0.0", + getAll: _, + removeAll: g, + add: f, + remove: y, + update: v + }; + + class M { + static FileUrl = "../public/models/huaxing/glb/"; + + static nameShow(e, t) { + e.map((e => { + e.show(t) + })) + } + + static { + function e() { + w.update(), requestAnimationFrame(e) + } + + e() + } + + constructor(e, {url: t, height: i, lon: r, lat: n, id: s, name: a, scale: o, angle: l}, u) { + if (this.icy = e, !t && !u) return console.error("传参有问题"); + o = o || 1, i = i || 0, r = r || 116.28678152222574, n = n || 40.05185885026265; + let c = Cesium.Cartesian3.fromDegrees(r, n, i), h = Cesium.Math.toRadians(l[0]), + m = Cesium.Math.toRadians(l[1]), d = Cesium.Math.toRadians(l[2]), + p = new Cesium.HeadingPitchRoll(h, m, d), C = Cesium.Transforms.headingPitchRollQuaternion(c, p); + this.entity = t ? e.viewer.entities.add({ + id: s, + name: a, + position: c, + orientation: C, + model: {uri: t, scale: o, color: new Cesium.Color(1, 1, 1, 1)}, + runAnimations: !1, + incrementallyLoadTextures: !1, + colorBlendMode: Cesium.ColorBlendMode.MIX, + colorBlendAmount: .1, + _icy: {lon: r, lat: n, height: i} + }) : e.viewer.entities.add({ + id: s, + name: a, + position: c, + orientation: C, + model: u, + runAnimations: !1, + incrementallyLoadTextures: !1, + colorBlendMode: Cesium.ColorBlendMode.MIX, + colorBlendAmount: .1, + _icy: {lon: r, lat: n, height: i} + }) + } + + show(e) { + this.entity.show = e + } + + move({lon: e, lat: t, height: i, angle: r}) { + let n = Cesium.Cartesian3.fromDegrees(e, t, i), s = Cesium.Math.toRadians(r[0]), + a = Cesium.Math.toRadians(r[1]), o = Cesium.Math.toRadians(r[2]), + l = new Cesium.HeadingPitchRoll(s, a, o), u = Cesium.Transforms.headingPitchRollQuaternion(n, l); + this.entity.position = n, this.entity.orientation = u + } + + updateAngle(e) { + let t = new Cesium.Cartesian3(this.entity.position._value.x, this.entity.position._value.y, this.entity.position._value.z), + i = Cesium.Math.toRadians(e[0]), r = e[1], n = e[2], s = new Cesium.HeadingPitchRoll(i, r, n), + a = Cesium.Transforms.headingPitchRollQuaternion(t, s); + this.entity.orientation = a + } + + animationMove(e, i, r, n, s) { + if (!this.entity) throw"还没有对象呢!!"; + let a = this.entity.position, o = Cesium.Cartesian3.fromDegrees(e, i, r), + l = new w.Tween({x: a._value.x, y: a._value.y, z: a._value.z}); + l.to({x: o.x, y: o.y, z: o.z}, n), l.onUpdate((({x: e, y: i, z: r}) => { + let n = new Cesium.Cartesian3(e, i, r); + if(this.entity){ + this.entity.position = n; + } + let a = t.Cartesian3ToWGS84(this.icy.viewer, n); + s(a) + })), l.start() + } + + lineColor(e) { + this.entity.model.silhouetteSize = e ? 2 : 0 + } + + getEntity() { + return this.entity + } + + getPosition() { + return this.entity.modelMatrix + } + + clone(e) { + return Cesium.clone(this.entity.model) + } + + destroy() { + this.icy.viewer.entities.remove(this.entity), this.entity = void 0 + } } - removeCoordArrows() { - this._coordArrows && (this._viewer.scene.primitives.remove(this._coordArrows), this._coordArrows = void 0) + class b { + static FileUrl = "../public/models/huaxing/glb/"; + + constructor(e, {url: t, height: i, lon: r, lat: n, id: s, name: a, scale: o, angle: l}, u) { + if (this.icy = e, !t && !u) return console.error("传参有问题"); + o = o || 1, i = i || 0, r = r || 116.28678152222574, n = n || 40.05185885026265; + let c = Cesium.Cartesian3.fromDegrees(r, n, i); + var h = Cesium.Math.toRadians(l[0]), m = Cesium.Math.toRadians(l[1]), d = Cesium.Math.toRadians(l[2]), + p = new Cesium.HeadingPitchRoll(h, m, d); + let C = Cesium.Transforms.headingPitchRollToFixedFrame(c, p, Cesium.Ellipsoid.WGS84, Cesium.Transforms.eastNorthUpToFixedFrame, new Cesium.Matrix4); + this.entity = e.viewer.scene.primitives.add(Cesium.Model.fromGltf({ + url: t, + color: Cesium.Color.WHITE, + modelMatrix: C, + scale: o + })) + } + + show(e) { + this.entity.show = e + } + + getEntity() { + return this.entity + } + + getState() { + let e = this.entity.modelMatrix; + const t = Cesium.Matrix4.getTranslation(e, new Cesium.Cartesian3); + var i = this.icy.viewer.scene.globe.ellipsoid.cartesianToCartographic(t), + r = Cesium.Math.toDegrees(i.latitude), n = Cesium.Math.toDegrees(i.longitude), s = i.height; + let a = e; + var o = Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Matrix4.getTranslation(a, new Cesium.Cartesian3), Cesium.Ellipsoid.WGS84, new Cesium.Matrix4), + l = Cesium.Matrix4.multiply(Cesium.Matrix4.inverse(o, new Cesium.Matrix4), a, new Cesium.Matrix4), + u = Cesium.Matrix4.getMatrix3(l, new Cesium.Matrix3), c = Cesium.Quaternion.fromRotationMatrix(u), + h = Cesium.HeadingPitchRoll.fromQuaternion(c); + return { + lng: n, + lat: r, + alt: s, + angle: [Cesium.Math.toDegrees(h.heading), Cesium.Math.toDegrees(h.pitch), Cesium.Math.toDegrees(h.roll)] + } + } + + getPosition() { + return this.entity.modelMatrix + } + + destroy() { + this.icy.viewer.entities.remove(this.entity), this.entity = void 0 + } } - removeCoordCircle() { - this._coordCircle.forEach((e => { - this._viewer.scene.primitives.remove(e) - })), this._coordCircle = [] + class S { + constructor(e) { + this.name = e, this.children = [] + } + + add(e) { + if (!e.entity) throw"请传入模型"; + this.children.push(e) + } + + show(e) { + this.children.forEach((t => { + t.show(e) + })) + } + + move() { + this.children.map((e => { + e.entity.position._value.x -= 1 + })) + } + + destroy(e) { + this.children.forEach((t => { + e.viewer.entities.remove(t.entity) + })) + } } - removeAllTools() { - this.removeCoordArrows(), this.removeCoordCircle() + class E extends M { + static PERSON_BLUE = {url: M.FileUrl + "person_000002_blue.gltf"}; + static PERSON_BLUE_FAT = {url: M.FileUrl + "person_000002_blue_fat.gltf"}; + static PERSON_GREEN = {url: M.FileUrl + "person_000002_green.gltf"}; + static PERSON_GREEN_FAT = {url: M.FileUrl + "person_000002_green_fat.gltf"}; + static PERSON_RED = {url: M.FileUrl + "person_000002_red.gltf"}; + static PERSON_RED_FAT = {url: M.FileUrl + "person_000002_red_fat.gltf"}; + static PERSON_WHITE = {url: M.FileUrl + "person_000002_white.gltf"}; + static PERSON_WHITE_FAT = {url: M.FileUrl + "person_000002_white_fat.gltf"}; + static PERSON_YELLOW = {url: M.FileUrl + "person_000002_yellow.gltf"}; + static PERSON_YELLOW_FAT = {url: M.FileUrl + "person_000002_yellow_fat.gltf"}; + + constructor(e, t, {lon: i, lat: r, id: n, name: s, scale: a, angle: o, height: l}) { + super(e, {url: t.url, height: l, lon: i, lat: r, id: n, name: s, scale: a, angle: o}) + } + + destroy() { + } } - destroy() { - this._gltf.currentPosition = [this._params.tx, this._params.ty, this._params.tz], this.removeAllTools(), this._handler.destroy(), this.onEdit(!1) - } - }; + const T = window.Cesium, P = 52.35987755982988, x = 3.141592653589793, R = class { + static BD09ToGCJ02(e, t) { + let i = +e - .0065, r = +t - .006, n = Math.sqrt(i * i + r * r) - 2e-5 * Math.sin(r * P), + s = Math.atan2(r, i) - 3e-6 * Math.cos(i * P); + return [n * Math.cos(s), n * Math.sin(s)] + } - class O { - constructor(e) { - this.icy = e, this.fenceList = [], this.currentFence = [], this.currentEntity = [], this.currentState = !1, this.currentPolyline, this.currentPolygon + static GCJ02ToBD09(e, t) { + t = +t, e = +e; + let i = Math.sqrt(e * e + t * t) + 2e-5 * Math.sin(t * P), + r = Math.atan2(t, e) + 3e-6 * Math.cos(e * P); + return [i * Math.cos(r) + .0065, i * Math.sin(r) + .006] + } + + static WGS84ToGCJ02(e, t) { + if (t = +t, e = +e, this.out_of_china(e, t)) return [e, t]; + { + let i = this.delta(e, t); + return [e + i[0], t + i[1]] + } + } + + static GCJ02ToWGS84(e, t) { + if (t = +t, e = +e, this.out_of_china(e, t)) return [e, t]; + { + let i = this.delta(e, t); + return [2 * e - (e + i[0]), 2 * t - (t + i[1])] + } + } + + static delta(e, t) { + let i = this.transformLng(e - 105, t - 35), r = this.transformLat(e - 105, t - 35); + const n = t / 180 * x; + let s = Math.sin(n); + s = 1 - .006693421622965943 * s * s; + const a = Math.sqrt(s); + return i = 180 * i / (6378245 / a * Math.cos(n) * x), r = 180 * r / (6335552.717000426 / (s * a) * x), [i, r] + } + + static transformLng(e, t) { + let i = 300 + (e = +e) + 2 * (t = +t) + .1 * e * e + .1 * e * t + .1 * Math.sqrt(Math.abs(e)); + return i += 2 * (20 * Math.sin(6 * e * x) + 20 * Math.sin(2 * e * x)) / 3, i += 2 * (20 * Math.sin(e * x) + 40 * Math.sin(e / 3 * x)) / 3, i += 2 * (150 * Math.sin(e / 12 * x) + 300 * Math.sin(e / 30 * x)) / 3, i + } + + static transformLat(e, t) { + let i = 2 * (e = +e) - 100 + 3 * (t = +t) + .2 * t * t + .1 * e * t + .2 * Math.sqrt(Math.abs(e)); + return i += 2 * (20 * Math.sin(6 * e * x) + 20 * Math.sin(2 * e * x)) / 3, i += 2 * (20 * Math.sin(t * x) + 40 * Math.sin(t / 3 * x)) / 3, i += 2 * (160 * Math.sin(t / 12 * x) + 320 * Math.sin(t * x / 30)) / 3, i + } + + static out_of_china(e, t) { + return t = +t, !((e = +e) > 73.66 && e < 135.05 && t > 3.86 && t < 53.55) + } + + static transformWGS84ToCartesian(e, t, i) { + return t ? T.Cartesian3.fromDegrees(t.lng || t.lon, t.lat, t.alt = i || t.alt, T.Ellipsoid.WGS84) : T.Cartesian3.ZERO + } + + static transformCartesianToWGS84(e, t) { + let i = T.Ellipsoid.WGS84.cartesianToCartographic(t); + return {lng: T.Math.toDegrees(i.longitude), lat: T.Math.toDegrees(i.latitude), alt: i.height} + } + }, I = class { + constructor(e, t, i, r) { + if (!e) throw new Error("viewer is required!"); + this._viewer = e, this._gltf = t, this._handler = void 0, this._defaultWidth = 15, this._currentPick = void 0, this._dStep = i, this._rStep = r, this._params = { + tx: 0, + ty: 0, + tz: 0, + heading: 0, + pitch: 0, + roll: 0, + scale: 1 + }, this._coordArrows = void 0, this._coordCircle = [], this.initEvent() + } + + get params() { + return this._params + } + + initParam() { + this.removeAllTools(); + let e = this._gltf; + this._viewer; + const t = this.returnGltfCentorDegree(e), i = this.returnGltfRotation(e); + return this._params.tx = t.lng, this._params.ty = t.lat, this._params.tz = t.alt, this._params.heading = i.heading, this._params.pitch = i.pitch, this._params.roll = i.roll, { + originDegree: t, + length: 50 + } + } + + returnGltfRotation(e) { + let t = e.modelMatrix, + i = Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Matrix4.getTranslation(t, new Cesium.Cartesian3), Cesium.Ellipsoid.WGS84, new Cesium.Matrix4), + r = Cesium.Matrix4.multiply(Cesium.Matrix4.inverse(i, new Cesium.Matrix4), t, new Cesium.Matrix4), + n = Cesium.Matrix4.getMatrix3(r, new Cesium.Matrix3), s = Cesium.Quaternion.fromRotationMatrix(n); + return Cesium.HeadingPitchRoll.fromQuaternion(s) + } + + returnGltfCentor(e) { + let t = e.modelMatrix; + return new Cesium.Cartesian3(t[12], t[13], t[14]) + } + + returnGltfCentorDegree(e) { + let t = this.returnGltfCentor(e); + return R.transformCartesianToWGS84(this._viewer, t) + } + + editRtation() { + const e = this.initParam(); + this.createCircle(e.originDegree.lng, e.originDegree.lat, e.originDegree.alt, e.length) + } + + createCircle(e, t, i, r) { + const n = []; + for (let e = 0; e <= 360; e += 3) { + const t = Math.sin(Cesium.Math.toRadians(e)), i = r * Math.cos(Cesium.Math.toRadians(e)), s = r * t; + n.push(new Cesium.Cartesian3(i, s, 0)) + } + const s = Cesium.Transforms.eastNorthUpToFixedFrame(new Cesium.Cartesian3.fromDegrees(e, t, i)), + a = this.createAxisSphere("model_edit_zCircle", n, s, Cesium.Color.RED); + this._viewer.scene.primitives.add(a); + const o = this.createAxisSphere("model_edit_yCircle", n, s, Cesium.Color.BLUE); + this._viewer.scene.primitives.add(o); + let l = Cesium.Matrix3.fromRotationY(Cesium.Math.toRadians(90)), + u = Cesium.Matrix4.fromRotationTranslation(l); + Cesium.Matrix4.multiply(o.geometryInstances.modelMatrix, u, o.geometryInstances.modelMatrix); + const c = this.createAxisSphere("model_edit_xCircle", n, s, Cesium.Color.GREEN); + this._viewer.scene.primitives.add(c); + let h = Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(90)), + m = Cesium.Matrix4.fromRotationTranslation(h); + Cesium.Matrix4.multiply(c.geometryInstances.modelMatrix, m, c.geometryInstances.modelMatrix) + } + + createAxisSphere(e, t, i, r) { + let n = new Cesium.Primitive({ + geometryInstances: new Cesium.GeometryInstance({ + id: e, + geometry: new Cesium.PolylineGeometry({positions: t, width: 5}), + attributes: {color: Cesium.ColorGeometryInstanceAttribute.fromColor(r)} + }), + releaseGeometryInstances: !1, + appearance: new Cesium.PolylineColorAppearance({translucent: !1}), + modelMatrix: i + }); + return n._name = e, this._coordCircle.push(n), n + } + + onEdit(e) { + this._gltf.color = this._gltf.color.withAlpha(e ? .5 : 1), this._gltf._allowPicking = !e + } + + editTranslation() { + const e = this.initParam(); + this.onEdit(!0); + const t = e.length; + let i = new Cesium.Cartesian3(t, t, t), r = this.returnGltfCentor(this._gltf), + n = this.getTransPostion(r, i); + this.initLineArrow(e.originDegree, n, t) + } + + updateLineArrow(e, t) { + this.removeCoordArrows(), this._viewer; + const i = e.scale * e._boundingSphere.radius / .8; + let r = new Cesium.Cartesian3(i, i, i), n = this.returnGltfCentor(this._gltf), + s = this.getTransPostion(n, r); + this.initLineArrow(t, s, i) + } + + initEvent() { + const e = this, t = this._viewer; + e._handler = new Cesium.ScreenSpaceEventHandler(t.scene.canvas), e._handler.setInputAction((function (i) { + let r = t.scene.pick(i.position); + if (r && r.primitive && r.primitive._name && -1 != r.primitive._name.indexOf("model_edit")) { + t.scene.screenSpaceCameraController.enableRotate = !1, e._currentPick = r.primitive, e._currentPick.width = 25; + let n = t.scene.camera.pickEllipsoid(i.position, t.scene.globe.ellipsoid), + s = JSON.parse(JSON.stringify(e._gltf.modelMatrix)), a = 0, o = 0, l = 0, u = 0, c = 0, + h = 0; + if (n && Cesium.defined(n)) { + a = 0, o = 0, l = 0, u = 0, c = 0, h = 0; + const r = R.transformCartesianToWGS84(t, n); + e._handler.setInputAction((function (n) { + let m = t.scene.camera.pickEllipsoid(n.endPosition, t.scene.globe.ellipsoid); + const d = R.transformCartesianToWGS84(t, m), p = n.endPosition.y - i.position.y, + C = n.endPosition.x - i.position.x; + switch (e._currentPick._name) { + case"model_edit_xArrow": + a = d.lng - r.lng; + break; + case"model_edit_yArrow": + o = d.lat - r.lat; + break; + case"model_edit_zArrow": + l = -e._dStep * p; + break; + case"model_edit_xCircle": + u = e._rStep * p; + break; + case"model_edit_yCircle": + c = e._rStep * C; + break; + case"model_edit_zCircle": + h = e._rStep * C + } + e.updateModel(e._params, a, o, l, u, c, h, s) + }), Cesium.ScreenSpaceEventType.MOUSE_MOVE) + } + e._handler.setInputAction((function (i) { + t.scene.screenSpaceCameraController.enableRotate = !0, e._currentPick.width = e._defaultWidth, e._currentPick = void 0, e._params.tx += a, e._params.ty += o, e._params.tz += l; + let r = e.returnGltfRotation(e._gltf); + e._params.heading = r.heading, e._params.pitch = r.pitch, e._params.roll = r.roll, e._handler.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE), e._handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_UP) + }), Cesium.ScreenSpaceEventType.LEFT_UP) + } + }), Cesium.ScreenSpaceEventType.LEFT_DOWN) + } + + updateModel(e, t, i, r, n, s, a, o) { + if (this._coordArrows) { + let n = new Cesium.HeadingPitchRoll(e.heading, e.pitch, e.roll), + s = new Cesium.Cartesian3.fromDegrees(e.tx + t, e.ty + i, e.tz + r), + a = Cesium.Transforms.headingPitchRollToFixedFrame(s, n, Cesium.Ellipsoid.WGS84, Cesium.Transforms.eastNorthUpToFixedFrame, new Cesium.Matrix4); + this._gltf.modelMatrix = a, this.updateLineArrow(this._gltf, { + lng: e.tx + t, + lat: e.ty + i, + alt: e.tz + r + }) + } + if (this._coordCircle) { + let e; + 0 != n ? e = Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(n)) : 0 != s ? e = Cesium.Matrix3.fromRotationY(Cesium.Math.toRadians(s)) : 0 != a && (e = Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(a))), this._gltf.modelMatrix = e ? Cesium.Matrix4.multiplyByMatrix3(o, e, new Cesium.Matrix4) : this._gltf.modelMatrix + } + } + + initLineArrow(e, t, i) { + const r = new Cesium.PolylineCollection, n = [e.lng, e.lat, e.alt, t.lng, e.lat, e.alt], + s = (this.darwArrow(r, "model_edit_xArrow", n, Cesium.Color.GREEN), [e.lng, e.lat, e.alt, e.lng, t.lat, e.alt]), + a = (this.darwArrow(r, "model_edit_yArrow", s, Cesium.Color.BLUE), [e.lng, e.lat, e.alt, e.lng, e.lat, t.alt]); + this.darwArrow(r, "model_edit_zArrow", a, Cesium.Color.RED), this._coordArrows = this._viewer.scene.primitives.add(r), this._coordArrows._name = "CoordAxis" + } + + darwArrow(e, t, i, r) { + e.add({ + positions: Cesium.Cartesian3.fromDegreesArrayHeights(i), + width: this._defaultWidth, + material: Cesium.Material.fromType(Cesium.Material.PolylineArrowType, {color: r}) + })._name = t + } + + getTransPostion(e, t) { + let i = Cesium.Transforms.eastNorthUpToFixedFrame(e), r = new Cesium.Matrix4; + Cesium.Matrix4.setTranslation(Cesium.Matrix4.IDENTITY, t, r); + let n = Cesium.Matrix4.multiply(i, r, i); + return Cesium.Matrix4.getTranslation(n, e), R.transformCartesianToWGS84(this._viewer, e) + } + + removeCoordArrows() { + this._coordArrows && (this._viewer.scene.primitives.remove(this._coordArrows), this._coordArrows = void 0) + } + + removeCoordCircle() { + this._coordCircle.forEach((e => { + this._viewer.scene.primitives.remove(e) + })), this._coordCircle = [] + } + + removeAllTools() { + this.removeCoordArrows(), this.removeCoordCircle() + } + + destroy() { + this._gltf.currentPosition = [this._params.tx, this._params.ty, this._params.tz], this.removeAllTools(), this._handler.destroy(), this.onEdit(!1) + } + }; + + class D { + constructor(e) { + this.icy = e, this.fenceList = [], this.currentFence = [], this.currentEntity = [], this.currentState = !1, this.currentPolyline, this.currentPolygon + } + + start() { + this.currentState = !0; + let e = this.icy.viewer.canvas.parentNode, t = document.createElement("div"); + t.id = "menu", t.style = "width:100px;position:fixed;left:20px;top:30px;z-index:99"; + let i = document.createElement("button"); + i.innerHTML = "完成绘制", i.addEventListener("click", (() => { + this.sout(), this.finish() + })), t.appendChild(i), e.appendChild(t) + } + + add(e, t, i = 0) { + if (!this.currentState) throw"绘制电子围栏请先调用start函数"; + let r; + if (this.currentFence.push([e, t, i]), r = this.addPoint(e, t, i), this.currentFence.length > 1) { + let e = Cesium.Cartesian3.fromDegreesArrayHeights(this.currentFence.flat()); + this.currentPolyline ? this.currentPolyline.polyline.positions = e : this.currentPolyline = this.icy.viewer.entities.add({ + polyline: { + positions: e, + width: 5, + material: new Cesium.Color.fromCssColorString("#00fffb"), + clampToGround: !1 + } + }) + } + if (this.currentFence.length > 2) { + let e = Cesium.Cartesian3.fromDegreesArrayHeights(this.currentFence.flat()); + this.currentPolygon ? this.currentPolygon.polygon.hierarchy = e : this.currentPolygon = this.icy.viewer.entities.add({ + polygon: { + hierarchy: e, + material: new Cesium.Color.fromCssColorString("red").withAlpha(.5), + extrudedHeight: i, + height: Number(i + .1) + } + }) + } + this.currentEntity.push(r) + } + + back() { + if (!this.currentState) throw"请先调用start函数"; + this.currentFence.length = this.currentFence.length - 1, this.icy.viewer.entities.remove(this.currentEntity[this.currentEntity.length - 1]), this.currentEntity.length = this.currentEntity.length - 1, this.update_Polygon(), this.update_Polyline() + } + + stop() { + this.currentState ? (this.currentState = !1, 0 != this.currentFence.length && this.fenceList.push(this.currentFence), this.currentFence = []) : console.error("状态已经是停止状态") + } + + finish() { + this.currentEntity.forEach((e => this.icy.viewer.entities.remove(e))), this.currentEntity = [], this.icy.viewer.entities.remove(this.currentPolygon), this.currentPolygon = void 0, this.icy.viewer.entities.remove(this.currentPolyline), this.currentPolyline = void 0, this.currentFence.flat().push(...this.currentFence[0]), this.currentFence.length = 0 + } + + addPoint(e, t, i) { + let r; + return r = this.icy.viewer.entities.add({ + position: Cesium.Cartesian3.fromDegrees(e, t, i), + point: { + pixelSize: 10, + color: Cesium.Color.YELLOW, + disableDepthTestDistance: Number.POSITIVE_INFINITY + } + }), r + } + + update_Polygon() { + this.currentEntity.length < 3 ? (this.icy.viewer.entities.remove(this.currentPolygon), this.currentPolygon = void 0) : this.currentPolygon.polygon.hierarchy = Cesium.Cartesian3.fromDegreesArrayHeights(this.currentFence.flat()) + } + + update_Polyline() { + if (this.currentEntity.length < 2) this.icy.viewer.entities.remove(this.currentPolyline), this.currentPolyline = void 0; else { + let e = this.currentFence.flat(); + this.currentPolyline.polyline.positions = Cesium.Cartesian3.fromDegreesArrayHeights(e) + } + } + + clear() { + try { + this.finish() + } catch (e) { + } + this.fenceList.map((e => { + console.log(e), this.icy.viewer.entities.remove(e) + })), this.fenceList = [] + } + + showDataSource(e, t = 100, i = "yellow") { + let r = e.flat(); + r.push(...e[0]), this.qiang = this.icy.viewer.entities.add({ + wall: { + positions: Cesium.Cartesian3.fromDegreesArrayHeights(r), + maximumHeights: new Array(r.length).fill(t), + minimunHeights: new Array(r.length).fill(10), + material: new Cesium.WallDiffuseMaterialProperty({color: new Cesium.Color.fromCssColorString(i)}) + } + }) + } + + show(e) { + this.qiang.show = e + } + + destroy() { + this.icy.viewer.entities.remove(this.qiang), this.qiang = void 0 + } + + sout() { + console.log("本次您绘制的区域经纬度为"), console.log(JSON.stringify(this.currentFence)) + } } - start() { - this.currentState = !0; - let e = this.icy.viewer.canvas.parentNode, t = document.createElement("div"); - t.id = "menu", t.style = "width:100px;position:fixed;left:20px;top:30px;z-index:99"; - let i = document.createElement("button"); - i.innerHTML = "完成绘制", i.addEventListener("click", (() => { - this.sout(), this.finish() - })), t.appendChild(i), e.appendChild(t) - } - - add(e, t, i = 0) { - if (!this.currentState) throw"绘制电子围栏请先调用start函数"; - let r; - if (this.currentFence.push([e, t, i]), r = this.addPoint(e, t, i), this.currentFence.length > 1) { - let e = Cesium.Cartesian3.fromDegreesArrayHeights(this.currentFence.flat()); - this.currentPolyline ? this.currentPolyline.polyline.positions = e : this.currentPolyline = this.icy.viewer.entities.add({ + class O { + constructor(e, {name: t = null, width: i = 1, positions: r, color: n}) { + this.icy = e, this.positions = r, this.entity = e.viewer.entities.add({ + name: t, polyline: { - positions: e, - width: 5, - material: new Cesium.Color.fromCssColorString("#00fffb"), + positions: Cesium.Cartesian3.fromDegreesArrayHeights(r.flat()), + width: i, + material: Cesium.Color.fromCssColorString(n), clampToGround: !1 } }) } - if (this.currentFence.length > 2) { - let e = Cesium.Cartesian3.fromDegreesArrayHeights(this.currentFence.flat()); - this.currentPolygon ? this.currentPolygon.polygon.hierarchy = e : this.currentPolygon = this.icy.viewer.entities.add({ + + setCurrentIndex(e) { + let t = []; + for (let i = 0; i < e; i++) t.push(this.positions[i]); + this.entity.polyline.positions = new Cesium.CallbackProperty((() => Cesium.Cartesian3.fromDegreesArrayHeights(t.flat())), !1) + } + + show(e) { + this.entity.show = e + } + + destroy() { + this.icy.viewer.entities.remove(this.entity), this.entity = void 0 + } + } + + class A { + constructor(e, {id: t, positions: i, color: r = "red", height: n = 30, name: s = "四色图"}, a) { + this.icy = e, this.entity = e.viewer.entities.add({ + name: s, + id: t, polygon: { - hierarchy: e, - material: new Cesium.Color.fromCssColorString("red").withAlpha(.5), - extrudedHeight: i, - height: Number(i + .1) + hierarchy: Cesium.Cartesian3.fromDegreesArrayHeights(i.flat()), + material: Cesium.Color.fromCssColorString(r).withAlpha(.5), + extrudedHeight: n, + outline: !0, + outlineColor: Cesium.Color.fromCssColorString("#ffffff") + } + }); + var o = this.entity.polygon.hierarchy.getValue(Cesium.JulianDate.now()).positions, + l = Cesium.BoundingSphere.fromPoints(o).center; + let u = (c = l, h = new Cesium.Cartesian3(c.x, c.y, c.z), m = Cesium.Cartographic.fromCartesian(h), d = Cesium.Math.toDegrees(m.latitude), { + lng: Cesium.Math.toDegrees(m.longitude), + lat: d, + alt: m.height + }); + var c, h, m, d; + if (u.alt = n, l = function (e) { + var t = Cesium.Cartesian3.fromDegrees(e.lng, e.lat, e.alt); + return {x: t.x, y: t.y, z: t.z} + }(u), this.entity.position = l, a) { + let e = new Image; + e.src = a.toDataURL("image/jpg"), this.entity.billboard = { + image: e, + disableDepthTestDistance: Number.POSITIVE_INFINITY, + horizontalOrigin: Cesium.HorizontalOrigin.CENTER, + verticalOrigin: Cesium.VerticalOrigin.BOTTOM, + scale: 1 + } + } + } + + show(e) { + this.entity.show = e + } + + destroy() { + this.icy.viewer.entities.remove(this.entity), this.entity = void 0 + } + } + + class F { + constructor(e) { + this.viewer = e.viewer, this.lastStageList = [] + } + + add(e, t, i, r) { + this.lastStageList.push(this.showCircleScan(e, t, i, r)) + } + + clear() { + this.lastStageList.forEach((e => { + this.clearScanEffects(e) + })), this.lastStageList = [] + } + + showCircleScan(e, t, i, r) { + const n = new Cesium.Cartographic(Cesium.Math.toRadians(e[0]), Cesium.Math.toRadians(e[1]), e[2]); + return t = new Cesium.Color.fromCssColorString(t), this._addCircleScanPostStage(n, i, t, r) + } + + _addCircleScanPostStage(e, t, i, r) { + const n = Cesium.Cartographic.toCartesian(e), s = new Cesium.Cartesian4(n.x, n.y, n.z, 1), + a = new Cesium.Cartographic(e.longitude, e.latitude, e.height + 500), + o = Cesium.Cartographic.toCartesian(a), l = new Cesium.Cartesian4(o.x, o.y, o.z, 1), + u = (new Date).getTime(), c = new Cesium.Cartesian4, h = new Cesium.Cartesian4, + m = new Cesium.Cartesian3, d = this, p = new Cesium.PostProcessStage({ + fragmentShader: d._getScanSegmentShader(), + uniforms: { + u_scanCenterEC: function () { + return Cesium.Matrix4.multiplyByVector(d.viewer.camera._viewMatrix, s, c) + }, u_scanPlaneNormalEC: function () { + const e = Cesium.Matrix4.multiplyByVector(d.viewer.camera._viewMatrix, s, c), + t = Cesium.Matrix4.multiplyByVector(d.viewer.camera._viewMatrix, l, h); + return m.x = t.x - e.x, m.y = t.y - e.y, m.z = t.z - e.z, Cesium.Cartesian3.normalize(m, m), m + }, u_radius: function () { + return t * (((new Date).getTime() - u) % r) / r + }, u_scanColor: i + } + }); + return this.viewer.scene.postProcessStages.add(p), p + } + + _getScanSegmentShader() { + return " uniform sampler2D colorTexture;\n uniform sampler2D depthTexture;\n varying vec2 v_textureCoordinates;\n uniform vec4 u_scanCenterEC;\n uniform vec3 u_scanPlaneNormalEC;\n uniform float u_radius;\n uniform vec4 u_scanColor;\n vec4 toEye(in vec2 uv, in float depth){\n vec2 xy = vec2((uv.x * 2.0 - 1.0),(uv.y * 2.0 - 1.0));\n vec4 posInCamera = czm_inverseProjection * vec4(xy, depth, 1.0);\n posInCamera =posInCamera / posInCamera.w;\n return posInCamera;\n }\n vec3 pointProjectOnPlane(in vec3 planeNormal, in vec3 planeOrigin, in vec3 point){\n vec3 v01 = point - planeOrigin;\n float d = dot(planeNormal, v01) ;\n return (point - planeNormal * d);\n }\n float getDepth(in vec4 depth){\n float z_window = czm_unpackDepth(depth);\n z_window = czm_reverseLogDepth(z_window);\n float n_range = czm_depthRange.near;\n float f_range = czm_depthRange.far;\n return (2.0 * z_window - n_range - f_range) / (f_range - n_range);\n }\n void main(){\n gl_FragColor = texture2D(colorTexture, v_textureCoordinates);\n float depth = getDepth(texture2D(depthTexture, v_textureCoordinates));\n vec4 viewPos = toEye(v_textureCoordinates, depth);\n vec3 prjOnPlane = pointProjectOnPlane(u_scanPlaneNormalEC.xyz, u_scanCenterEC.xyz, viewPos.xyz);\n float dis = length(prjOnPlane.xyz - u_scanCenterEC.xyz);\n if(dis < u_radius){\n float f = 1.0 - abs(u_radius - dis) / u_radius;\n f = pow(f, float(18));\n gl_FragColor = mix(gl_FragColor,u_scanColor,f);\n }\n gl_FragColor.a = gl_FragColor.a / 2.0;\n }\n " + } + + clearScanEffects(e) { + this.viewer.scene.postProcessStages.remove(e) + } + } + + var z = __webpack_require__(117); + + class k { + static { + function e() { + w.update(), requestAnimationFrame(e) + } + + e() + } + + constructor(e) { + this.icy = e, this.entity + } + + loadCanvas(e, {lon: t, lat: i, height: r, id: n, name: s}) { + let a = new Image; + a.src = e.toDataURL("image/jpg"), this.entity = this.icy.viewer.entities.add({ + name: s, + id: n, + position: Cesium.Cartesian3.fromDegrees(t, i, r), + billboard: { + image: a, + disableDepthTestDistance: Number.POSITIVE_INFINITY, + horizontalOrigin: Cesium.HorizontalOrigin.CENTER, + verticalOrigin: Cesium.VerticalOrigin.BOTTOM, + scale: 1 } }) } - this.currentEntity.push(r) - } - back() { - if (!this.currentState) throw"请先调用start函数"; - this.currentFence.length = this.currentFence.length - 1, this.icy.viewer.entities.remove(this.currentEntity[this.currentEntity.length - 1]), this.currentEntity.length = this.currentEntity.length - 1, this.update_Polygon(), this.update_Polyline() - } - - stop() { - this.currentState ? (this.currentState = !1, 0 != this.currentFence.length && this.fenceList.push(this.currentFence), this.currentFence = []) : console.error("状态已经是停止状态") - } - - finish() { - this.currentEntity.forEach((e => this.icy.viewer.entities.remove(e))), this.currentEntity = [], this.icy.viewer.entities.remove(this.currentPolygon), this.currentPolygon = void 0, this.icy.viewer.entities.remove(this.currentPolyline), this.currentPolyline = void 0; - let e = this.currentFence.flat(); - e.push(...this.currentFence[0]); - // let t = this.icy.viewer.entities.add({ - // wall: { - // positions: Cesium.Cartesian3.fromDegreesArrayHeights(e), - // maximumHeights: new Array(e.length).fill(60), - // minimunHeights: new Array(e.length).fill(10), - // material: new Cesium.WallDiffuseMaterialProperty({color: new Cesium.Color(1, 1, 0, 1)}) - // } - // }); - this.currentFence.length = 0, this.fenceList.push(t) - } - - addPoint(e, t, i) { - let r; - return r = this.icy.viewer.entities.add({ - position: Cesium.Cartesian3.fromDegrees(e, t, i), - point: {pixelSize: 10, color: Cesium.Color.YELLOW, disableDepthTestDistance: Number.POSITIVE_INFINITY} - }), r - } - - update_Polygon() { - this.currentEntity.length < 3 ? (this.icy.viewer.entities.remove(this.currentPolygon), this.currentPolygon = void 0) : this.currentPolygon.polygon.hierarchy = Cesium.Cartesian3.fromDegreesArrayHeights(this.currentFence.flat()) - } - - update_Polyline() { - if (this.currentEntity.length < 2) this.icy.viewer.entities.remove(this.currentPolyline), this.currentPolyline = void 0; else { - let e = this.currentFence.flat(); - this.currentPolyline.polyline.positions = Cesium.Cartesian3.fromDegreesArrayHeights(e) + uopdateImg(e) { + let t = new Image; + t.src = e.toDataURL("image/jpg"), this.entity.billboard.image = t } - } - clear() { - try { - this.finish() - } catch (e) { + move(e, t, i) { + this.entity.position = Cesium.Cartesian3.fromDegrees(e, t, i) } - this.fenceList.map((e => { - this.icy.viewer.entities.remove(e) - })), this.fenceList = [] - } - showDataSource(e, t = 100, i = "yellow") { - let r = e.flat(); - r.push(...e[0]), this.qiang = this.icy.viewer.entities.add({ - wall: { - positions: Cesium.Cartesian3.fromDegreesArrayHeights(r), - maximumHeights: new Array(r.length).fill(t), - minimunHeights: new Array(r.length).fill(10), - material: new Cesium.WallDiffuseMaterialProperty({color: new Cesium.Color.fromCssColorString(i)}) - } - }) - } - - show(e) { - this.qiang.show = e - } - - destroy() { - this.icy.viewer.entities.remove(this.qiang), this.qiang = void 0 - } - - sout() { - console.log("本次您绘制的区域经纬度为"), console.log(JSON.stringify(this.currentFence)) - } - } - - class F { - constructor(e, {name: t = null, width: i = 1, positions: r, color: n}) { - this.icy = e, this.positions = r, this.entity = e.viewer.entities.add({ - name: t, - polyline: { - positions: Cesium.Cartesian3.fromDegreesArrayHeights(r.flat()), - width: i, - material: Cesium.Color.fromCssColorString(n), - clampToGround: !1 - } - }) - } - - setCurrentIndex(e) { - let t = []; - for (let i = 0; i < e; i++) t.push(this.positions[i]); - this.entity.polyline.positions = new Cesium.CallbackProperty((() => Cesium.Cartesian3.fromDegreesArrayHeights(t.flat())), !1) - } - - show(e) { - this.entity.show = e - } - - destroy() { - this.icy.viewer.entities.remove(this.entity), this.entity = void 0 - } - } - - class z { - constructor(e, {id: t, positions: i, color: r = "red", height: n = 30, name: s = "四色图"}, a) { - this.icy = e, this.entity = e.viewer.entities.add({ - name: s, - id: t, - polygon: { - hierarchy: Cesium.Cartesian3.fromDegreesArrayHeights(i.flat()), - material: Cesium.Color.fromCssColorString(r).withAlpha(.5), - extrudedHeight: n, - outline: !0, - outlineColor: Cesium.Color.fromCssColorString("#ffffff") - } - }); - var o = this.entity.polygon.hierarchy.getValue(Cesium.JulianDate.now()).positions, - l = Cesium.BoundingSphere.fromPoints(o).center; - let h = (u = l, c = new Cesium.Cartesian3(u.x, u.y, u.z), m = Cesium.Cartographic.fromCartesian(c), d = Cesium.Math.toDegrees(m.latitude), { - lng: Cesium.Math.toDegrees(m.longitude), - lat: d, - alt: m.height - }); - var u, c, m, d; - if (h.alt = n, l = function (e) { - var t = Cesium.Cartesian3.fromDegrees(e.lng, e.lat, e.alt); - return {x: t.x, y: t.y, z: t.z} - }(h), this.entity.position = l, a) { - let e = new Image; - e.src = a.toDataURL("image/jpg"), this.entity.billboard = { - image: e, - disableDepthTestDistance: Number.POSITIVE_INFINITY, - horizontalOrigin: Cesium.HorizontalOrigin.CENTER, - verticalOrigin: Cesium.VerticalOrigin.BOTTOM, - scale: 1 - } - } - } - - show(e) { - this.entity.show = e - } - - destroy() { - this.icy.viewer.entities.remove(this.entity), this.entity = void 0 - } - } - - class L { - constructor(e) { - this.viewer = e.viewer, this.lastStageList = [] - } - - add(e, t, i, r) { - this.lastStageList.push(this.showCircleScan(e, t, i, r)) - } - - clear() { - this.lastStageList.forEach((e => { - this.clearScanEffects(e) - })), this.lastStageList = [] - } - - showCircleScan(e, t, i, r) { - const n = new Cesium.Cartographic(Cesium.Math.toRadians(e[0]), Cesium.Math.toRadians(e[1]), e[2]); - return t = new Cesium.Color.fromCssColorString(t), this._addCircleScanPostStage(n, i, t, r) - } - - _addCircleScanPostStage(e, t, i, r) { - const n = Cesium.Cartographic.toCartesian(e), s = new Cesium.Cartesian4(n.x, n.y, n.z, 1), - a = new Cesium.Cartographic(e.longitude, e.latitude, e.height + 500), - o = Cesium.Cartographic.toCartesian(a), l = new Cesium.Cartesian4(o.x, o.y, o.z, 1), - h = (new Date).getTime(), u = new Cesium.Cartesian4, c = new Cesium.Cartesian4, - m = new Cesium.Cartesian3, d = this, p = new Cesium.PostProcessStage({ - fragmentShader: d._getScanSegmentShader(), - uniforms: { - u_scanCenterEC: function () { - return Cesium.Matrix4.multiplyByVector(d.viewer.camera._viewMatrix, s, u) - }, u_scanPlaneNormalEC: function () { - const e = Cesium.Matrix4.multiplyByVector(d.viewer.camera._viewMatrix, s, u), - t = Cesium.Matrix4.multiplyByVector(d.viewer.camera._viewMatrix, l, c); - return m.x = t.x - e.x, m.y = t.y - e.y, m.z = t.z - e.z, Cesium.Cartesian3.normalize(m, m), m - }, u_radius: function () { - return t * (((new Date).getTime() - h) % r) / r - }, u_scanColor: i + animationMove(e, t, i, r) { + if (!this.entity) throw"还没有对象呢!!"; + let n = this.entity.position, s = Cesium.Cartesian3.fromDegrees(e, t, i), + a = new w.Tween({x: n._value.x, y: n._value.y, z: n._value.z}); + a.to({x: s.x, y: s.y, z: s.z}, r), a.onUpdate((({x: e, y: t, z: i}) => { + let r = new Cesium.Cartesian3(e, t, i); + if(this.entity){ + this.entity.position = r; } - }); - return this.viewer.scene.postProcessStages.add(p), p - } - - _getScanSegmentShader() { - return " uniform sampler2D colorTexture;\n uniform sampler2D depthTexture;\n varying vec2 v_textureCoordinates;\n uniform vec4 u_scanCenterEC;\n uniform vec3 u_scanPlaneNormalEC;\n uniform float u_radius;\n uniform vec4 u_scanColor;\n vec4 toEye(in vec2 uv, in float depth){\n vec2 xy = vec2((uv.x * 2.0 - 1.0),(uv.y * 2.0 - 1.0));\n vec4 posInCamera = czm_inverseProjection * vec4(xy, depth, 1.0);\n posInCamera =posInCamera / posInCamera.w;\n return posInCamera;\n }\n vec3 pointProjectOnPlane(in vec3 planeNormal, in vec3 planeOrigin, in vec3 point){\n vec3 v01 = point - planeOrigin;\n float d = dot(planeNormal, v01) ;\n return (point - planeNormal * d);\n }\n float getDepth(in vec4 depth){\n float z_window = czm_unpackDepth(depth);\n z_window = czm_reverseLogDepth(z_window);\n float n_range = czm_depthRange.near;\n float f_range = czm_depthRange.far;\n return (2.0 * z_window - n_range - f_range) / (f_range - n_range);\n }\n void main(){\n gl_FragColor = texture2D(colorTexture, v_textureCoordinates);\n float depth = getDepth(texture2D(depthTexture, v_textureCoordinates));\n vec4 viewPos = toEye(v_textureCoordinates, depth);\n vec3 prjOnPlane = pointProjectOnPlane(u_scanPlaneNormalEC.xyz, u_scanCenterEC.xyz, viewPos.xyz);\n float dis = length(prjOnPlane.xyz - u_scanCenterEC.xyz);\n if(dis < u_radius){\n float f = 1.0 - abs(u_radius - dis) / u_radius;\n f = pow(f, float(18));\n gl_FragColor = mix(gl_FragColor,u_scanColor,f);\n }\n gl_FragColor.a = gl_FragColor.a / 2.0;\n }\n " - } - - clearScanEffects(e) { - this.viewer.scene.postProcessStages.remove(e) - } - } - - class k { - static { - function e() { - S.update(), requestAnimationFrame(e) + })), a.start() } - e() + show(e) { + this.entity.show = e + } + + animate() { + this.entity.billboard.scale > 1.2 ? this.entity.billboard.scale = 1 : this.entity.billboard.scale += .002 + } + + destroy() { + this.icy.viewer.entities.remove(this.entity), this.entity = void 0 + } } - constructor(e) { - this.icy = e, this.entity - } - - loadCanvas(e, {lon: t, lat: i, height: r, id: n, name: s}) { - let a = new Image; - a.src = e.toDataURL("image/jpg"), this.entity = this.icy.viewer.entities.add({ - name: s, - id: n, - position: Cesium.Cartesian3.fromDegrees(t, i, r), - billboard: { - image: a, - disableDepthTestDistance: Number.POSITIVE_INFINITY, - horizontalOrigin: Cesium.HorizontalOrigin.CENTER, - verticalOrigin: Cesium.VerticalOrigin.BOTTOM, - scale: 1 - } - }) - } - - uopdateImg(e) { - let t = new Image; - t.src = e.toDataURL("image/jpg"), this.entity.billboard.image = t - } - - move(e, t, i) { - this.entity.position = Cesium.Cartesian3.fromDegrees(e, t, i) - } - - animationMove(e, t, i, r) { - if (!this.entity) throw"还没有对象呢!!"; - let n = this.entity.position, s = Cesium.Cartesian3.fromDegrees(e, t, i), - a = new S.Tween({x: n._value.x, y: n._value.y, z: n._value.z}); - a.to({x: s.x, y: s.y, z: s.z}, r), a.onUpdate((({x: e, y: t, z: i}) => { - let r = new Cesium.Cartesian3(e, t, i); - if(this.entity){ - this.entity.position = r; - } - })), a.start() - } - - show(e) { - this.entity.show = e - } - - animate() { - this.entity.billboard.scale > 1.2 ? this.entity.billboard.scale = 1 : this.entity.billboard.scale += .002 - } - - destroy() { - this.icy.viewer.entities.remove(this.entity), this.entity = void 0 - } - } - - Cesium.Ion.defaultAccessToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIzNzFlNTg1MC0wOTA0LTQzYzYtOTBjZi05MjIzZjU2NTkzZGQiLCJpZCI6MTE4ODE3LCJpYXQiOjE2NzE1MDY2NjF9.yGR3CbS6VQp2s6Y9NHWOIKq8qKL0sWLZZBZ9eP02Ags", CustomCesium = t + Cesium.Ion.defaultAccessToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIzNzFlNTg1MC0wOTA0LTQzYzYtOTBjZi05MjIzZjU2NTkzZGQiLCJpZCI6MTE4ODE3LCJpYXQiOjE2NzE1MDY2NjF9.yGR3CbS6VQp2s6Y9NHWOIKq8qKL0sWLZZBZ9eP02Ags" + })(), CustomCesium = __webpack_exports__ })(); diff --git a/src/assets/images/map/peoIcon_blueImg.png b/src/assets/images/map/peoIcon_blueImg.png new file mode 100644 index 0000000000000000000000000000000000000000..b09b0f3c92474c116a84b51ccf89f5a01942e5ef GIT binary patch literal 63697 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 literal 0 HcmV?d00001 diff --git a/src/components/map_tools/alarm_view.vue b/src/components/map_tools/alarm_view.vue new file mode 100644 index 0000000..1e0eb4e --- /dev/null +++ b/src/components/map_tools/alarm_view.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/src/components/map_tools/map.js b/src/components/map_tools/map.js index 5e7b951..b539991 100644 --- a/src/components/map_tools/map.js +++ b/src/components/map_tools/map.js @@ -138,7 +138,7 @@ export const handleMouseClick = (model_id) => { // 隐藏逻辑 $mouse.mouseLeft((model) => { if (model._name === "建筑") { - model_id.value = model._id; + if (model_id) model_id.value = model._id; clickBuilding(model); } }); @@ -333,3 +333,68 @@ const addEntity = (id, name, lon, lat, height) => { }; entities.add(obj); }; + +export const handleViewAlarm = (alarm, userList) => { + const canvas = document.createElement("canvas"); + canvas.width = 100; + canvas.height = 30; + const ctx = canvas.getContext("2d"); + ctx.fillStyle = "#000000"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#ff0000"; + ctx.font = "normal bold 20px Arial"; + ctx.fillText("聚集告警", 5, 15); + + // 聚集圆锥特效 + const Cone = new window.CustomCesium.Cone(window.$icy); + Cone.add( + [alarm.lon, alarm.lat, alarm.alt], // 坐标 + alarm.color, // 圆锥颜色 + { width: 20, height: 40 }, // 圆锥的宽高 + canvas, // 圆锥铭牌 + "100201", // 圆锥实体id + "10020101" // 铭牌实体id + ); + const labelPixelOffset = new window.Cesium.Cartesian2(0, -55); + userList.forEach((user) => { + const obj = {}; + obj.entity = window.$icy.viewer.entities.add( + new window.Cesium.Entity({ + id: "user_" + user.card, + name: user.psnName, + position: window.Cesium.Cartesian3.fromDegrees( + user.lon, + user.lat, + user.alt + ), + billboard: { + image: "src/assets/images/map/peoIcon_blueImg.png", + height: 36, + width: 30, + verticalOrigin: window.Cesium.VerticalOrigin.BOTTOM, + horizontalOrigin: window.Cesium.HorizontalOrigin.CENTER, + disableDepthTestDistance: Number.POSITIVE_INFINITY, + }, + label: { + text: user.psnName, + font: "13px sans-serif", + pixelOffset: labelPixelOffset, + showBackground: true, + // 地图上扎点的名字背景色 + // eslint-disable-next-line new-cap + backgroundColor: new window.Cesium.Color.fromCssColorString( + "rgba(20, 58, 142, 1)" + ), + backgroundPadding: new window.Cesium.Cartesian2(7, 5), + disableDepthTestDistance: Number.POSITIVE_INFINITY, + }, + }) + ); + obj.show = (e) => { + obj.entity.show = e; + }; + obj.destroy = () => { + window.$icy.viewer.entities.remove(obj.entity); + }; + }); +}; diff --git a/src/request/aggregation_management.js b/src/request/aggregation_management.js index 30e67be..bf41b27 100644 --- a/src/request/aggregation_management.js +++ b/src/request/aggregation_management.js @@ -10,3 +10,5 @@ export const getAggregatedDataStatistics = (params) => post("/positAlarm/aggregateDataStatistics", params); // 聚集区域统计 export const getAggregationAreaStatistics = (params) => post("/positAlarm/aggregateDataStatisticsByGroup", params); // 聚集数据统计 +export const getAlarmGatherPsnInfo = (params) => + post("/positAlarm/getAlarmGatherPsnInfo", params); // 聚集告警内人员列表 diff --git a/src/views/aggregation_management/gathering_alarm_records/components/alarmDialog.vue b/src/views/aggregation_management/gathering_alarm_records/components/alarmDialog.vue new file mode 100644 index 0000000..9de509d --- /dev/null +++ b/src/views/aggregation_management/gathering_alarm_records/components/alarmDialog.vue @@ -0,0 +1,42 @@ + + + + + diff --git a/src/views/aggregation_management/gathering_alarm_records/components/viewInfo.vue b/src/views/aggregation_management/gathering_alarm_records/components/viewInfo.vue index d93e032..51da5dd 100644 --- a/src/views/aggregation_management/gathering_alarm_records/components/viewInfo.vue +++ b/src/views/aggregation_management/gathering_alarm_records/components/viewInfo.vue @@ -61,6 +61,13 @@ 保存 + +