diff --git a/public/lib/Cesium/CustomCesium.js b/public/lib/Cesium/CustomCesium.js index edf6c54..f0ae5f2 100644 --- a/public/lib/Cesium/CustomCesium.js +++ b/public/lib/Cesium/CustomCesium.js @@ -1,190 +1,177 @@ var CustomCesium; (() => { - "use strict"; - var __webpack_modules__ = { - 117: (__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - __webpack_require__.d(__webpack_exports__, {Z: () => Radar}); - - class Radar { - constructor(e) { - this.viewer = e.viewer, this.icy = e, this.entity = null, this.entity1 = null, this.timer = null - } - - 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 - } + "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 + }) } - - 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 - } - - 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.CircleRippleMaterialType, - uniforms: { - color: new Cesium.Color.fromCssColorString("#ffffff00"), - speed: 3, - count: 4, - gradient: .2 - }, - source: Cesium.Material.CircleRippleMaterialSource - }, translucent: function (e) { - return !0 - } - }) } - }, __webpack_module_cache__ = {}; - - 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 - } - - __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 { + , t = {}; + e.r(t), + e.d(t, { + EarlyWarning: () => EW,//四色图 + BulletinBoard: () => H,//铭牌 + PoiIconLabel: () => JZ,//基站 + PositioningLabels: () => PL,//标签 + Carmer: () => m, + EditGltf: () => G, + Enclosure: () => U,//围栏 + GroupModel: () => A, + HumanModel: () => F, + Line: () => W,//轨迹线 + Route: () => RT,//绘制路径 + Model: () => D, + ModelDrag: () => O, + Mouse: () => p, + Radar: () => j,//聚集 + Scene: () => c, + Tiles3D: () => d//倾斜摄影 + }); + class i { constructor(e) { - this._definitionChanged = new Cesium.Event, this._color = void 0, this.color = e.color + 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 + 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) + equals(e) { + return this === e || e instanceof i && Cesium.Property.equals(this._color, e._color) } } - - class t { - constructor() { - } - + 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 + 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 + 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 i { + const n = 52.35987755982988 + , s = 3.141592653589793 + , a = 6378245 + , o = .006693421622965943 + , l = class { + static BD09ToGCJ02(e, t) { + let i = +e - .0065 + , r = +t - .006 + , s = Math.sqrt(i * i + r * r) - 2e-5 * Math.sin(r * n) + , a = Math.atan2(r, i) - 3e-6 * Math.cos(i * n); + return [s * Math.cos(a), s * Math.sin(a)] + } + static GCJ02ToBD09(e, t) { + t = +t, + e = +e; + let i = Math.sqrt(e * e + t * t) + 2e-5 * Math.sin(t * n) + , r = Math.atan2(t, e) + 3e-6 * Math.cos(e * n); + 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 * s; + let l = Math.sin(n); + l = 1 - o * l * l; + const h = Math.sqrt(l); + return i = 180 * i / (a / h * Math.cos(n) * s), + r = 180 * r / (a * (1 - o) / (l * h) * s), + [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 * s) + 20 * Math.sin(2 * e * s)) / 3, + i += 2 * (20 * Math.sin(e * s) + 40 * Math.sin(e / 3 * s)) / 3, + i += 2 * (150 * Math.sin(e / 12 * s) + 300 * Math.sin(e / 30 * s)) / 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 * s) + 20 * Math.sin(2 * e * s)) / 3, + i += 2 * (20 * Math.sin(t * s) + 40 * Math.sin(t / 3 * s)) / 3, + i += 2 * (160 * Math.sin(t / 12 * s) + 320 * Math.sin(t * s / 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) + } + } + ; + class h extends Cesium.WebMercatorTilingScheme { + constructor() { + super(); + let e = new Cesium.WebMercatorProjection; + this._projection.project = function (t, i) { + return i = l.WGS84ToGCJ02(Cesium.Math.toDegrees(t.longitude), Cesium.Math.toDegrees(t.latitude)), + i = e.project(new Cesium.Cartographic(Cesium.Math.toRadians(i[0]), Cesium.Math.toRadians(i[1]))), + new Cesium.Cartesian2(i.x, i.y) + } + , + this._projection.unproject = function (t, i) { + let r = e.unproject(t); + return i = l.GCJ02ToWGS84(Cesium.Math.toDegrees(r.longitude), Cesium.Math.toDegrees(r.latitude)), + new Cesium.Cartographic(Cesium.Math.toRadians(i[0]), Cesium.Math.toRadians(i[1])) + } + } + } + const u = h; + class c { static google_mapResources = new Cesium.UrlTemplateImageryProvider({ url: "https://mt1.google.com/vt/lyrs=s&x={x}&y={y}&z={z}", credit: "谷歌影像服务" @@ -194,8 +181,8 @@ var CustomCesium; subdomains: ["0", "1", "2", "3"], tilingScheme: new Cesium.WebMercatorTilingScheme, customTags: { - q: function (e, i, r, n) { - return t.tileXYToQuadKey(i, r, n) + q: function (e, t, i, n) { + return r.tileXYToQuadKey(t, i, n) } }, minimumLevel: 3, @@ -206,11 +193,14 @@ var CustomCesium; minimumLevel: 3, maximumLevel: 18 }); - - constructor(e, t, r, n) { - if (this.icy = {viewer: void 0, name: t}, 1 == r) { + constructor(e, t, i, r) { + if (this.icy = { + viewer: void 0, + name: t + }, + 1 == i) { let t = new Cesium.UrlTemplateImageryProvider({ - url: n, + url: r, fileExtension: "png", minimumLevel: 0, maximumLevel: 19, @@ -218,13 +208,14 @@ var CustomCesium; }); this.init(e, t, 50) } - 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) + 2 == i && this.init(e, c.google_mapResources, 50), + 3 == i && this.init(e, c.tiandi_mapResources, 50), + 4 == i && this.init(e, c.gaode_mapResources, 50), + 5 == i && this.init(e, void 0, 50) } - getIcy() { return this.icy } - init(e, t, i = 50) { this.icy.viewer = new Cesium.Viewer(e, { targetFrameRate: i, @@ -236,68 +227,124 @@ var CustomCesium; 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(); + fullscreenButton: !1, + infoBox: false, + contextOptions: { + webgl: { + alpha: true + } + } + }), + 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.icy.viewer.scene.skyBox.show = false, + this.icy.viewer.scene.globe.showGroundAtmosphere = false, + this.icy.viewer.scene.skyAtmosphere.show = false, + this.icy.viewer.scene.sun.show = false, + this.icy.viewer.scene.moon.show = false, + this.icy.viewer.scene.undergroundMode = true, + this.fPSShow(!0), + this.initMaterial(), + this.icy.viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction( + Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK + ) + // this.icy.viewer.scene.backgroundColor = new Cesium.Color(0,0,0,0) } - fPSShow(e) { this.icy.viewer.scene.debugShowFramesPerSecond = e } - destroy() { - this.icy.iewer.destroy(), this.icy = void 0 + 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 - } - })) + 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, { + fabric: { + type: Cesium.Material.WallDiffuseMaterialType, + uniforms: { + color: new Cesium.Color(1, 0, 0, 1) + }, + source: Cesium.Material.WallDiffuseMaterialSource + }, + translucent: function (e) { + return !0 + } + })) } } - - class r { + class m { constructor(e) { this.icy = e + if (Cesium.FeatureDetection.supportsImageRenderingPixelated()) {//判断是否支持图像渲染像素化处理 + this.icy.viewer.resolutionScale = window.devicePixelRatio; + } } - - 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("相机飞行请传入经纬高") + 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("相机飞行请传入经纬高") + 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"相机跳转参数错误,请检查传入参数"; + 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]} + destination: { + x: e[0], + y: e[1], + z: e[2] + }, + orientation: { + heading: e[3], + pitch: e[4], + roll: e[5] + } }) } - - 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"}); + 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, @@ -305,548 +352,953 @@ var CustomCesium; 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}}`) + 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}}`) + let data = { + x: r.x, + y: r.y, + z: r.z, + heading: e, + pitch: t, + roll: i + } + return [data, this.icy.viewer.camera] } - changeView(e) { - if ("2D" == e) { - let e = this.getCenterPoint(this.icy.viewer); + let cameraHeight = 1200; + if (e == "2D") { + let point = this.getCenterPoint(this.icy.viewer); + // let cameraHeight = Math.round(this.icy.viewer.camera.positionCartographic.height); this.icy.viewer.scene.camera.flyTo({ - destination: Cesium.Cartesian3.fromDegrees(e[0], e[1], 2e3), + // 经度 纬度 高度 + destination: Cesium.Cartesian3.fromDegrees(point[0], point[1], cameraHeight), + // 朝向 仰角 倾斜 orientation: { heading: this.icy.viewer.scene.camera.heading, - pitch: Cesium.Math.toRadians(-90), + pitch: Cesium.Math.toRadians(-90), // Cesium.Math.toRadians(-35.0), + //this.icy.viewer.scene.camera.roll roll: 0 } - }), this.icy.viewer.scene.screenSpaceCameraController.enableTilt = !1 + }) + //禁用放大缩小 + // this.icy.viewer.scene.screenSpaceCameraController.enableZoom = false; + //禁止相机倾斜 + this.icy.viewer.scene.screenSpaceCameraController.enableTilt = false; } - 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 + if (e == "3D") { + // let number = 0; + // //定时循环将number增加到2000 + // let timer = setInterval(() => { + // number += 5; + // this.icy.viewer.scene.camera.moveDown(5) + // if (number >= 1200) { + // clearInterval(timer); + // 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), // Cesium.Math.toRadians(-35.0), + // //this.icy.viewer.scene.camera.roll + // roll: 0 + // } + // }) + // }, 100); + // } + // }) + //禁用放大缩小 + // this.icy.viewer.scene.screenSpaceCameraController.enableZoom = true; + //禁止相机倾斜 + this.icy.viewer.scene.screenSpaceCameraController.enableTilt = true; } } - - 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] + getCenterPoint(viewer) { + let result = viewer.camera.pickEllipsoid( + new Cesium.Cartesian2( + viewer.canvas.clientWidth / 2, + viewer.canvas.clientHeight / 2, + ), + ); + // console.log(result); + let curPosition = Cesium.Ellipsoid.WGS84.cartesianToCartographic(result); + // console.log(curPosition); + const lon = (curPosition.longitude * 180) / Math.PI; + const lat = (curPosition.latitude * 180) / Math.PI; + // console.log([lon,lat]); + return [lon, lat]; } - - 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] + getBottomCenterPoint(viewer) { + let result = viewer.camera.pickEllipsoid( + new Cesium.Cartesian2( + viewer.canvas.clientWidth / 2, + viewer.canvas.clientHeight, + ), + ); + let curPosition = Cesium.Ellipsoid.WGS84.cartesianToCartographic(result); + const lon = (curPosition.longitude * 180) / Math.PI; + const lat = (curPosition.latitude * 180) / Math.PI; + return [lon, lat]; } } - - class n { + class d { 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) - })) + 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) + } + )), + this.polygon = [] } - show(e) { this.tileset.show = e } + cancelClipping() {//取消裁剪 + this.tileset._clippingPlanes = new Cesium.ClippingPlaneCollection({ + //一组ClippingPlane对象,用于选择性地禁用每个平面外部的渲染。 + planes: [ + // 裁剪面两个参数的:第一个为平面法向量,第二个为原点到平面的垂直距离 + new Cesium.ClippingPlane( + //笛卡尔3:表示为三维空间的平面的法向量,x表示为该法向量在x轴上的分量,y表示为该法向量在y轴上的分量,z表示为该法向量在z轴上的分量 + new Cesium.Cartesian3(0.0, 0.0, -1.0), + 2000 + ), + ], + }); + } + clipTileset(polygon) {//裁剪 + this.tileset._clippingPlanes = null; + this.polygon = polygon; + const transform = this.tileset.root.transform; + const inverseTransform = Cesium.Matrix4.inverseTransformation(transform, new Cesium.Matrix4()); + const clippingPlanes = new Cesium.ClippingPlaneCollection({ + //一组ClippingPlane对象,用于选择性地禁用每个平面外部的渲染。 + planes: [ + // 裁剪面两个参数的:第一个为平面法向量,第二个为原点到平面的垂直距离 + new Cesium.ClippingPlane( + //笛卡尔3:表示为三维空间的平面的法向量,x表示为该法向量在x轴上的分量,y表示为该法向量在y轴上的分量,z表示为该法向量在z轴上的分量 + new Cesium.Cartesian3(0.0, 0.0, -1.0), + 1.2//裁剪平面距地面的距离 + ), + ], + }); + for (let i = 0; i < polygon.length - 1; i++) { + const plane = this.createClippingPlane(polygon[i], polygon[i + 1], inverseTransform); + clippingPlanes.add(plane); + } + this.tileset.clippingPlanes = clippingPlanes; + } + createClippingPlane(p1, p2, inverseTransform) { + const p1C3 = this.getOriginCoordinateSystemPoint(p1, inverseTransform); + const p2C3 = this.getOriginCoordinateSystemPoint(p2, inverseTransform); + const up = new Cesium.Cartesian3(0, 0, -1); - 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) + const direction = new Cesium.Cartesian3(); + Cesium.Cartesian3.subtract(p2C3, p1C3, direction); + const normal = new Cesium.Cartesian3(); + Cesium.Cartesian3.cross(up, direction, normal); + Cesium.Cartesian3.normalize(normal, normal); + const distance = -Cesium.Cartesian3.dot(normal, p1C3); + return new Cesium.ClippingPlane(normal, distance); } + getOriginCoordinateSystemPoint(point, inverseTransform) { + const cartesian = Cesium.Cartesian3.fromDegrees(point[0], point[1]); + return Cesium.Matrix4.multiplyByPoint(inverseTransform, cartesian, new Cesium.Cartesian3()); + } + 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 + this.tileset.destroy(), + this.tileset = void 0 } } - - class s { + class p { constructor(e) { - this.icy = e, this.billboard = void 0 + 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) + 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 = { + 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) + // console.log("鼠标获取经纬高", s, a, o, l); + let h = this.icy.viewer.scene.pick(t.position); + // console.log(h); + if (!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) + 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 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, { + var C, g = 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 - g.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 * g.Bounce.In(2 * e) : .5 * g.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) { + }, + Out: function (t) { return 1 - Math.pow(1 - t, e) - }, InOut: function (t) { + }, + 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 () { + } + }), _ = "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 () { + } + : "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) { + } + , f = 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 () { + } + )) + } + , + 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); + } + , + 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 = _()), + void 0 === t && (t = !1); var i = Object.keys(this._tweens); - if (0 === i.length) return !1; + 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; + 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() { + , + e + }(), y = { + Linear: function (e, t) { + var i = e.length - 1 + , r = i * t + , n = Math.floor(r) + , s = y.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 = y.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 = y.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 = y.Utils.Factorial; + return i(e) / i(t) / i(e - t) + }, + Factorial: (C = [1], + function (e) { + var t = 1; + if (C[e]) + return C[e]; + for (var i = e; i > 1; i--) + t *= i; + return C[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 } - - 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 () { + } + }, v = function () { + function e() { } + return e.nextId = function () { + return e._nextId++ + } + , + e._nextId = 0, + e + }(), w = new f, M = function () { + function e(e, t) { + void 0 === t && (t = w), + 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 = g.Linear.None, + this._interpolationFunction = y.Linear, + this._chainedTweens = [], + this._onStartCallbackFired = !1, + this._onEveryStartCallbackFired = !1, + this._id = v.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 () { + } + , + 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) { + } + , + 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 = _()), + 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) { + } + , + 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]); + 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 (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 (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 || 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) + 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 = 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(); + } + , + 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 = _()), + 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 = _()), + 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; + } + , + e.prototype.group = function (e) { + return void 0 === e && (e = w), + 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 = g.Linear.None), + this._easingFunction = e, + this + } + , + e.prototype.interpolation = function (e) { + return void 0 === e && (e = y.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 = _()), + 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; + 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; + 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._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 + 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 + 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) { + } + , + 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, + } + , + 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 + }(), S = v.nextId, T = w, x = T.getAll.bind(T), P = T.removeAll.bind(T), b = T.add.bind(T), E = T.remove.bind(T), R = T.update.bind(T); + const I = { + Easing: g, + Group: f, + Interpolation: y, + now: _, + Sequence: v, + nextId: S, + Tween: M, VERSION: "19.0.0", - getAll: _, - removeAll: g, - add: f, - remove: y, - update: v + getAll: x, + removeAll: P, + add: b, + remove: E, + update: R }; - - class M { - static FileUrl = "../public/models/huaxing/glb/"; - + class D { + static FileUrl = "../public/models/glb/"; static nameShow(e, t) { e.map((e => { - e.show(t) - })) + e.show(t) + } + )) } - static { function e() { - w.update(), requestAnimationFrame(e) + I.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); + constructor(e, { url: t, height: i, lon: r, lat: n, id: s, name: a, scale: o, angle: l, peoName: k, floor: f, isCar: q }, 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: c, + position: u, orientation: C, - model: {uri: t, scale: o, color: new Cesium.Color(1, 1, 1, 1)}, + 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} + _icy: { + lon: r, + lat: n, + height: i + } }) : e.viewer.entities.add({ id: s, name: a, - position: c, + position: u, orientation: C, - model: u, + model: h, runAnimations: !1, incrementallyLoadTextures: !1, colorBlendMode: Cesium.ColorBlendMode.MIX, colorBlendAmount: .1, - _icy: {lon: r, lat: n, height: i} + _icy: { + lon: r, + lat: n, + height: i + } }) - } + this.entity.peoName = k + this.entity.floor = f + this.entity.isCar = q + } 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 + 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); + 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() + animationMove(e, t, i, n, s) { + if (!this.entity || !this.entity.position) + throw "还没有对象呢!!"; + let a = this.entity.position + , o = Cesium.Cartesian3.fromDegrees(e, t, i) + , l = new I.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) { + //console.log('触发移动,但未找到实体'); + return + } else { + if (this.entity.position == null || !this.entity.position) { + //console.log('触发移动,但未找到实体'); + return + } + this.entity.position = n; + 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 + this.icy.viewer.entities.remove(this.entity), + this.entity = 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); + class O { + static FileUrl = "../public/models/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, @@ -854,668 +1306,1398 @@ var CustomCesium; 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; + 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); + 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(h.heading), Cesium.Math.toDegrees(h.pitch), Cesium.Math.toDegrees(h.roll)] + angle: [Cesium.Math.toDegrees(c.heading), Cesium.Math.toDegrees(c.pitch), Cesium.Math.toDegrees(c.roll)] } } - getPosition() { return this.entity.modelMatrix } - destroy() { - this.icy.viewer.entities.remove(this.entity), this.entity = void 0 + this.icy.viewer.entities.remove(this.entity), + this.entity = void 0 } } - - class S { + class A { constructor(e) { - this.name = e, this.children = [] + this.name = e, + this.children = [] } - add(e) { - if (!e.entity) throw"请传入模型"; + if (!e.entity) + throw "请传入模型"; this.children.push(e) } - show(e) { this.children.forEach((t => { - t.show(e) - })) + t.show(e) + } + )) } - move() { this.children.map((e => { - e.entity.position._value.x -= 1 - })) + e.entity.position._value.x -= 1 + } + )) } - destroy(e) { this.children.forEach((t => { - e.viewer.entities.remove(t.entity) - })) - } - } - - 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() { - } - } - - 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)] - } - - 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) + e.viewer.entities.remove(t.entity) } - }), 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 - }) + } + class F extends D { + static PERSON_BLUE = { + url: D.FileUrl + "person_000002_blue.gltf" + }; + static PERSON_BLUE_FAT = { + url: D.FileUrl + "person_000002_blue_fat.gltf" + }; + static PERSON_GREEN = { + url: D.FileUrl + "person_000002_green.gltf" + }; + static PERSON_GREEN_FAT = { + url: D.FileUrl + "person_000002_green_fat.gltf" + }; + static PERSON_RED = { + url: D.FileUrl + "person_000002_red.gltf" + }; + static PERSON_RED_FAT = { + url: D.FileUrl + "person_000002_red_fat.gltf" + }; + static PERSON_WHITE = { + url: D.FileUrl + "person_000002_white.gltf" + }; + static PERSON_WHITE_FAT = { + url: D.FileUrl + "person_000002_white_fat.gltf" + }; + static PERSON_YELLOW = { + url: D.FileUrl + "person_000002_yellow.gltf" + }; + static PERSON_YELLOW_FAT = { + url: D.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 z = window.Cesium + , L = 52.35987755982988 + , k = 3.141592653589793 + , N = class { + static BD09ToGCJ02(e, t) { + let i = +e - .0065 + , r = +t - .006 + , n = Math.sqrt(i * i + r * r) - 2e-5 * Math.sin(r * L) + , s = Math.atan2(r, i) - 3e-6 * Math.cos(i * L); + return [n * Math.cos(s), n * Math.sin(s)] } - 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 + static GCJ02ToBD09(e, t) { + t = +t, + e = +e; + let i = Math.sqrt(e * e + t * t) + 2e-5 * Math.sin(t * L) + , r = Math.atan2(t, e) + 3e-6 * Math.cos(e * L); + 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 * k; + let s = Math.sin(n); + s = 1 - .006693421622965943 * s * s; + const a = Math.sqrt(s); + return i = 180 * i / (6378245 / a * Math.cos(n) * k), + r = 180 * r / (6335552.717000426 / (s * a) * k), + [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 * k) + 20 * Math.sin(2 * e * k)) / 3, + i += 2 * (20 * Math.sin(e * k) + 40 * Math.sin(e / 3 * k)) / 3, + i += 2 * (150 * Math.sin(e / 12 * k) + 300 * Math.sin(e / 30 * k)) / 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 * k) + 20 * Math.sin(2 * e * k)) / 3, + i += 2 * (20 * Math.sin(t * k) + 40 * Math.sin(t / 3 * k)) / 3, + i += 2 * (160 * Math.sin(t / 12 * k) + 320 * Math.sin(t * k / 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 ? z.Cartesian3.fromDegrees(t.lng || t.lon, t.lat, t.alt = i || t.alt, z.Ellipsoid.WGS84) : z.Cartesian3.ZERO + } + static transformCartesianToWGS84(e, t) { + let i = z.Ellipsoid.WGS84.cartesianToCartographic(t); + return { + lng: z.Math.toDegrees(i.longitude), + lat: z.Math.toDegrees(i.latitude), + alt: i.height + } } } - - 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" + , G = 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 N.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 + }); + 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 = N.transformCartesianToWGS84(t, n); + e._handler.setInputAction((function (n) { + let m = t.scene.camera.pickEllipsoid(n.endPosition, t.scene.globe.ellipsoid); + const d = N.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) + } + 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), + N.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) + } } - - 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 { + ; + class U { constructor(e) { - this.icy = e, this.fenceList = [], this.currentFence = [], this.currentEntity = [], this.currentState = !1, this.currentPolyline, this.currentPolygon + 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 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) + i.innerHTML = "完成绘制", + i.addEventListener("click", (() => { + this.sout(), + this.finish() + } + )), + t.appendChild(i), + e.appendChild(t) + i.remove() } - - add(e, t, i = 0) { - if (!this.currentState) throw"绘制电子围栏请先调用start函数"; + add(e, t, i, z) { + // console.log(e, t, i, z, '10001'); + if (z < 0.1) { + z = 0.1 + } + if (!this.currentState) + throw "绘制电子围栏请先调用start函数"; let r; - if (this.currentFence.push([e, t, i]), r = this.addPoint(e, t, i), this.currentFence.length > 1) { + if (this.currentFence.push([e, t, i]), + r = this.addPoint(e, t, i, z), + 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({ + name: '电子围栏', polyline: { positions: e, width: 5, + height: 3, + maximumHeights: 10, + minimumHeights: 0, material: new Cesium.Color.fromCssColorString("#00fffb"), - clampToGround: !1 + // clampToGround: !0 } }) } if (this.currentFence.length > 2) { + let het = z 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: Cesium.Color.RED, material: new Cesium.Color.fromCssColorString("red").withAlpha(.5), - extrudedHeight: i, - height: Number(i + .1) + extrudedHeight: het, + height: Number(het + 0.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() + 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("状态已经是停止状态") + 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 + 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) { + addPoint(e, t, i, z) { let r; return r = this.icy.viewer.entities.add({ position: Cesium.Cartesian3.fromDegrees(e, t, i), point: { - pixelSize: 10, + pixelSize: 8, + extrudedHeight: z, color: Cesium.Color.YELLOW, disableDepthTestDistance: Number.POSITIVE_INFINITY } - }), r + }), + 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()) + 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 { + 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) { - } + } 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)}) + this.icy.viewer.entities.remove(e) } - }) + )), + this.fenceList = [] + } + showDataSource(e, t, i) { + if (!i) { + i = 'red' + } + 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).withAlpha(0.9) + }) + } + }) } - show(e) { this.qiang.show = e } - destroy() { - this.icy.viewer.entities.remove(this.qiang), this.qiang = void 0 + this.icy.viewer.entities.remove(this.qiang), + this.qiang = void 0 } - sout() { - console.log("本次您绘制的区域经纬度为"), console.log(JSON.stringify(this.currentFence)) + console.log("本次您绘制的区域经纬度为"), + console.log(JSON.stringify(this.currentFence)) } } + class W { + constructor(e, { name: t = null, width: i, 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, + clampToGround: !1, + disableDepthTestDistance: 500000,//最高层级显示 + // material: Cesium.Color.fromCssColorString(n), - 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: Cesium.Cartesian3.fromDegreesArrayHeights(r.flat()), - width: i, - material: Cesium.Color.fromCssColorString(n), - clampToGround: !1 - } - }) + material: new Cesium.PolylineGlowMaterialProperty({ + color: Cesium.Color.fromCssColorString(n), + glowPower: 0.5, + }), + // material:new Cesium.PolylineTrailLinkMaterialProperty(Cesium.Color.CYAN, localStorage.getItem('setHttp')+'images/右箭头.png', 4000) + // material: new Cesium.PolylineCityLinkMaterialProperty({ + // image: localStorage.getItem('setHttp')+"images/摄像头1.png", + // color: new Cesium.Color(3.0, 36.0, 64.0), + // duration: 900, + + // }) + } + }) } - setCurrentIndex(e) { - let t = []; - for (let i = 0; i < e; i++) t.push(this.positions[i]); + // let t = []; + let t = JSON.parse(JSON.stringify(this.positions)) + if (e == 1) { + t.splice(0, 1) + } + for (let i = 0; i < e; i++) { + // t.push(this.positions[i]); + t.splice(0, 1) + } + // console.log(t, 'guijj'); 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 + 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: 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 { + class RT { constructor(e) { - this.viewer = e.viewer, this.lastStageList = [] + this.icy = e, + this.positions, + this.entity, + this.polylineArr = [],//点位数组 + this.polylineArrBackups = [],//点位数组撤回备份 + this.pointArr = [],//点位实体 + this.num = 0, + this.label, + this.lastPosition = [], + this.maxDistance = 1000,//最大补点距离 + this.completion = true } - - 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 + add(x, y, z) {// + this.polylineArrBackups = JSON.parse(JSON.stringify(this.polylineArr)) + // z=0.5 + this.icy.viewer.scene.globe.depthTestAgainstTerrain = true + this.num++ + this.polylineArr.push([x, y, z]) + this.positions = Cesium.Cartesian3.fromDegreesArrayHeights(this.polylineArr.flat()); + if (this.num == 1) { + this.entity = this.icy.viewer.entities.add({ + name: 't', + polyline: { + positions: this.positions, + width: 5, + show: this.completion, + clampToGround: !1, + disableDepthTestDistance: 500000,//最高层级显示 + // material: Cesium.Color.fromCssColorString(n), + material: new Cesium.PolylineGlowMaterialProperty({ + color: Cesium.Color.fromCssColorString('blue'), + glowPower: 0.5, + }), + } + }) + this.label = this.icy.viewer.entities.add({ + name: e.type, + position: Cesium.Cartesian3.fromDegrees(x, y, z), + label: { //文字标签 + text: '0m', + font: '500 26px Helvetica',// 15pt monospace + scale: 0.5, + show: this.completion, + style: Cesium.LabelStyle.FILL, + fillColor: new Cesium.Color.fromCssColorString("#54ff2b"), + pixelOffset: new Cesium.Cartesian2(0, -20), //偏移量 + showBackground: true, + backgroundColor: new Cesium.Color.fromBytes(6, 30, 88, 125), + disableDepthTestDistance: Number.POSITIVE_INFINITY,//显示级别 + distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0.0, 100000), } }); - return this.viewer.scene.postProcessStages.add(p), p + this.createPoint([x, y, z]) + } else if (this.num >= 2) { + let aa1 = Cesium.Cartesian3.fromDegrees(this.polylineArr[this.polylineArr.length - 2][0], this.polylineArr[this.polylineArr.length - 2][1]) + let aa2 = Cesium.Cartesian3.fromDegrees(this.polylineArr[this.polylineArr.length - 1][0], this.polylineArr[this.polylineArr.length - 1][1]) + let arr = this.splitPointsBetweenCoordinates(aa1, aa2) + arr.splice(0, 1) + let last = this.polylineArr.splice(this.polylineArr.length - 1, 1) + arr.push(...last) + arr.forEach((i, n) => { + if (n < arr.length - 1) { + arr[n] = [Cartesian3_to_WGS84(i).lng, Cartesian3_to_WGS84(i).lat, z] + } + this.createPoint(arr[n]) + }); + this.lastPosition = JSON.parse(JSON.stringify(arr)) + this.lastPosition.unshift(this.polylineArr[this.polylineArr.length - 1]) + this.polylineArr.push(...arr) + // this.entity.polyline.positions = new Cesium.CallbackProperty((() => Cesium.Cartesian3.fromDegreesArrayHeights(this.polylineArr.flat())), !1) + } } - - _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 " + withdraw(red) { + if (red) { + let num = this.polylineArr.length - 1 + this.polylineArr.splice(num, 1) + this.pointArr.forEach((i, n) => { + this.icy.viewer.entities.remove(i) + }); + this.pointArr = [] + this.polylineArr.forEach(i => { + this.createPoint(i) + }); + } else { + if (this.pointArr.length >= 2) { + this.polylineArr = JSON.parse(JSON.stringify(this.polylineArrBackups)) + // let num=this.polylineArr.length-1 + // console.log(num); + // console.log(this.pointArr); + this.pointArr.forEach((i, n) => { + this.icy.viewer.entities.remove(i) + }); + this.pointArr = [] + this.polylineArr.forEach(i => { + this.createPoint(i) + }); + } + } } - - clearScanEffects(e) { - this.viewer.scene.postProcessStages.remove(e) + createPoint(e) {//创建节点 + let point = this.icy.viewer.entities.add({ + position: Cesium.Cartesian3.fromDegrees(e[0], e[1], e[2]), + point: { + pixelSize: 8, + extrudedHeight: e[2], + color: Cesium.Color.YELLOW, + disableDepthTestDistance: Number.POSITIVE_INFINITY + } + }) + this.pointArr.push(point) + } + splitPointsBetweenCoordinates(point1, point2) {//将经纬度两点间每隔5米分割一个点,返回分割后的数组 + const positions = []; + const distance = Cesium.Cartesian3.distance(point1, point2); // 计算两点之间的距离 + if (distance > this.maxDistance || !this.completion) { + return positions + } + const numPoints = distance / 5; // 计算分割后的点的数量 + const step = 1 / numPoints; // 计算步长 + // 通过插值计算每个分割点的位置,并将其添加到位置数组中 + for (let i = 0; i <= numPoints; i++) { + const position = Cesium.Cartesian3.lerp(point1, point2, i * step, new Cesium.Cartesian3()); + positions.push(position); + } + return positions; + } + setCompletion(e) {//是否补全点,控制线条显示隐藏 + if (this.pointArr.length != 0) { + this.completion = e + this.show(e) + } + } + moveline(e) {//鼠标移动,线条跟随,计算距离 + if (this.num >= 1 && this.completion) { + let t = JSON.parse(JSON.stringify(this.polylineArr)) + t[t.length - 1][2] = 1 + let arr = [t[t.length - 1]] + arr.push([e.lng, e.lat, 1]) + let aa1 = Cesium.Cartesian3.fromDegrees(arr[0][0], arr[0][1]) + let aa2 = Cesium.Cartesian3.fromDegrees(arr[1][0], arr[1][1]) + const distance = Cesium.Cartesian3.distance(aa1, aa2); + if (distance >= this.maxDistance) { + this.label.label.fillColor = new Cesium.Color.fromCssColorString("#ff2b2b") + } else { + this.label.label.fillColor = new Cesium.Color.fromCssColorString("#54ff2b") + } + this.label.label.text = distance.toFixed(2) + 'm' + this.label.position = Cesium.Cartesian3.fromDegrees(e.lng, e.lat, 1) + this.entity.polyline.positions = new Cesium.CallbackProperty((() => Cesium.Cartesian3.fromDegreesArrayHeights(arr.flat())), !1) + } + } + GETposition() { + return this.lastPosition + } + show(e) { + this.entity.show = e + this.label.show = e + } + destroy() { + this.pointArr.forEach((i, n) => { + this.icy.viewer.entities.remove(i) + }); + this.icy.viewer.entities.remove(this.entity), + this.entity = void 0 + this.icy.viewer.entities.remove(this.label), + this.label = void 0 } } - - var z = __webpack_require__(117); - - class k { - static { - function e() { - w.update(), requestAnimationFrame(e) + function WGS84_to_Cartesian3(point) { + var car33 = Cesium.Cartesian3.fromDegrees(point.lng, point.lat, point.alt); + var x = car33.x; + var y = car33.y; + var z = car33.z; + return { x: x, y: y, z: z }; + } + function Cartesian3_to_WGS84(point) { + var cartesian33 = new Cesium.Cartesian3(point.x, point.y, point.z); + var cartographic = Cesium.Cartographic.fromCartesian(cartesian33); + var lat = Cesium.Math.toDegrees(cartographic.latitude); + var lng = Cesium.Math.toDegrees(cartographic.longitude); + var alt = cartographic.height; + return { lng: lng, lat: lat, alt: alt }; + } + class EW { + constructor(e, { id, title, positions: r, color: n, height: h }) { + this.icy = e + this.WGS84_to_Cartesian3 = WGS84_to_Cartesian3 + this.Cartesian3_to_WGS84 = Cartesian3_to_WGS84 + this.entity = this.icy.viewer.entities.add({ + name: '四色图', + id: id + '-06', + polygon: { + hierarchy: Cesium.Cartesian3.fromDegreesArrayHeights(r.flat()), + material: Cesium.Color.fromCssColorString(n).withAlpha(0.5), + extrudedHeight: h, + outline: true,//设置指定box是否有轮廓的Property 默认false + outlineColor: Cesium.Color.fromCssColorString('#ffffff'), //设置轮廓线 + } + }) + var polyPositions = this.entity.polygon.hierarchy.getValue(Cesium.JulianDate.now()).positions; + var polyCenter = Cesium.BoundingSphere.fromPoints(polyPositions).center;//中心点 + let wgs84Center = this.Cartesian3_to_WGS84(polyCenter) + wgs84Center.alt = h + polyCenter = this.WGS84_to_Cartesian3(wgs84Center); + this.entity.position = polyCenter; + this.entity.label = { + text: title, + fillColor: new Cesium.Color.fromCssColorString('#fff'), + backgroundColor: new Cesium.Color.fromCssColorString('#000000e4'), + font: 'normal 32px MicroSoft YaHei', + showBackground: true, + scale: 0.5, + show: false, + horizontalOrigin: Cesium.HorizontalOrigin.LEFT_CLICK, + verticalOrigin: Cesium.VerticalOrigin.BOTTOM, + disableDepthTestDistance: Number.POSITIVE_INFINITY, + disableDepthTestDistance: 10000.0, + outline: true,//设置指定box是否有轮廓的Property 默认false + outlineColor: Cesium.Color.fromCssColorString('#ffffff'), //设置轮廓线 } - - e() } - + show(e) { + this.entity.show = e + } + destroy() { + this.icy.viewer.entities.remove(this.entity), + this.entity = void 0 + } + } + class j { constructor(e) { - this.icy = e, this.entity + this.viewer = e.viewer, + this.icy = e, + this.entity = null, + this.entity1 = null, + this.timer = null } - - 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), + add(e, t, i, img, id) { + this.entity = this.viewer.entities.add({ + position: Cesium.Cartesian3.fromDegrees(e[0], e[1], e[2]), + name: '圆锥', + id: id + '-07', + cylinder: { + length: i.height, // 设置圆锥的底面直径,因为圆锥没有底部,所以长度为半径的两倍 + topRadius: 0, // 设置圆锥的顶点到底面的距离(即圆锥的高度) + bottomRadius: i.width, // 设置圆锥的底面半径为0,即圆锥没有底部 + disableDepthTestDistance: 500000,//最高层级显示 + material: new Cesium.CircleRippleMaterialProperty({ + color: new Cesium.Color.fromCssColorString(t), + speed: 10.0, + count: 3, + gradient: 0.5 + }), + }, + }) + let n = new Image; + n.src = img.toDataURL("image/jpg") + n.style.borderRadius = '20px' + this.entity1 = this.viewer.entities.add({ + name: "聚集铭牌", + id: id + '-0701', + position: Cesium.Cartesian3.fromDegrees(e[0], e[1], eval(e[2] + i.height / 2)), billboard: { - image: a, + image: n, + show: true, + sizeInMeters: false, //图像的尺寸被指定成图像实际的尺寸 + scaleByDistance: new Cesium.NearFarScalar(0, 0.5, 10000000, 0.5),//缩放倍数 disableDepthTestDistance: Number.POSITIVE_INFINITY, horizontalOrigin: Cesium.HorizontalOrigin.CENTER, verticalOrigin: Cesium.VerticalOrigin.BOTTOM, + disableDepthTestDistance: 500000,//最高层级显示 + scale: 1 + } + }) + this.animate() + } + animate() { + let fl = 0 + this.timer = setInterval(() => { + if (this.entity1.billboard.scale >= 1.5) { + fl = 1 + } else if (this.entity1.billboard.scale <= 1) { + fl = 0 + } + if (fl == 0) { + this.entity1.billboard.scale += 0.05 + } else { + this.entity1.billboard.scale -= 0.05 + } + }, 50) + } + show(e) { + this.entity.show = e + this.entity1.show = e + if (e) { + this.animate() + } else { + 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 + } + } + class H { + static { + function e() { + I.update(), requestAnimationFrame(e) + } + e() + } + constructor(e) { + this.icy = e, + this.entity, + this.entity1, + this.entity2, + this.timer = null + } + loadCanvas(e, { lon: t, lat: i, height: r, id: id, url: url, floor: f, isCar: q }) { + let n = new Image; + n.src = e.toDataURL("image/jpg") + this.entity1 = this.icy.viewer.entities.add({ + idr: id, + floor: f, + isCar: q, + name: "告警", + show1: true, + position: Cesium.Cartesian3.fromDegrees(t, i, r), + billboard: { + // image:new Cesium.GifImageProperty({ + // url: localStorage.getItem('setHttp')+'images/告警.gif' + // }),//加载gif图片 + image: localStorage.getItem('setHttp') + 'images/警告.png', + width: 35, + height: 35, + show: true, + pixelOffset: new Cesium.Cartesian2(-15, -25), //偏移量 + horizontalOrigin: Cesium.HorizontalOrigin.LEFT, + verticalOrigin: Cesium.VerticalOrigin.BOTTOM, + disableDepthTestDistance: 5000001,//最高层级显示 + scaleByDistance: new Cesium.NearFarScalar(0, 0.8, 10000000, 0.8),//缩放倍数 + scale: 1, + + }, + }) + // this.entity2 = this.icy.viewer.entities.add({ + // idr: id, + // name: "无信号", + // show1: true, + // position: Cesium.Cartesian3.fromDegrees(t, i, r), + // billboard: { + // image: localStorage.getItem('setHttp') + 'images/无信号.png', + // width: 36, + // height: 26, + // show: true, + // pixelOffset: new Cesium.Cartesian2(-18, -35), //偏移量 + // disableDepthTestDistance: Number.POSITIVE_INFINITY, + // horizontalOrigin: Cesium.HorizontalOrigin.LEFT, + // verticalOrigin: Cesium.VerticalOrigin.BOTTOM, + // disableDepthTestDistance: 500000,//最高层级显示 + // scale: 1, + // distanceDisplayCondition: new Cesium.DistanceDisplayCondition( + // 5000, + // 100000 + // ) + // }, + // }) + this.entity2 = this.icy.viewer.entities.add({ + idr: id, + id: id + '01', + floor: f, + isCar: q, + name: "头像", + show1: true, + position: Cesium.Cartesian3.fromDegrees(t, i, r), + billboard: { + image: url, + width: 26, + height: 26, + show: true, + pixelOffset: new Cesium.Cartesian2(-13, 30), //偏移量 + horizontalOrigin: Cesium.HorizontalOrigin.LEFT, + verticalOrigin: Cesium.VerticalOrigin.BOTTOM, + disableDepthTestDistance: 500000,//最高层级显示 + scale: 1, + distanceDisplayCondition: new Cesium.DistanceDisplayCondition(350, 1000000), + sizeInMeters: false, //图像的尺寸被指定成图像实际的尺寸 + scaleByDistance: new Cesium.NearFarScalar(0, 0.9, 10000000, 0.9),//缩放倍数 + }, + }) + this.entity = this.icy.viewer.entities.add({ + id: id, + floor: f, + isCar: q, + name: "铭牌", + typer: false, + position: Cesium.Cartesian3.fromDegrees(t, i, r), + billboard: { + image: n, + show: true, + sizeInMeters: false, //图像的尺寸被指定成图像实际的尺寸 + scaleByDistance: new Cesium.NearFarScalar(0, 0.5, 10000000, 0.5),//缩放倍数 + horizontalOrigin: Cesium.HorizontalOrigin.CENTER, + verticalOrigin: Cesium.VerticalOrigin.BOTTOM, + disableDepthTestDistance: 500000,//最高层级显示 scale: 1 } }) } - - uopdateImg(e) { + uopdateImg(e, type, floor) { let t = new Image; - t.src = e.toDataURL("image/jpg"), this.entity.billboard.image = t + t.src = e.toDataURL("image/jpg"), + this.entity.billboard.image = t + this.entity.typer = type + this.entity.floor = floor + this.entity1.floor = floor + this.entity2.floor = floor } - move(e, t, i) { this.entity.position = Cesium.Cartesian3.fromDegrees(e, t, i) + this.entity1.position = Cesium.Cartesian3.fromDegrees(e, t, i) + this.entity2.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 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; - } - })), a.start() + if (!this.entity || !this.entity.position) + throw "还没有对象呢!!"; + let n = this.entity.position, n1 = this.entity1.position, n2 = this.entity2.position + , s = Cesium.Cartesian3.fromDegrees(e, t, i) + , a = new I.Tween({ + x: n._value.x, + y: n._value.y, + z: n._value.z + }), b = new I.Tween({ + x: n1._value.x, + y: n1._value.y, + z: n1._value.z + }), c = new I.Tween({ + x: n2._value.x, + y: n2._value.y, + z: n2._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) { + //console.log('触发移动,但未找到实体'); + return + } else { + if (this.entity.position == null || !this.entity.position) { + //console.log('触发移动,但未找到实体'); + return + } + this.entity.position = r + } + } + )), + a.start() + b.to({ + x: s.x, + y: s.y, + z: s.z + }, r), + b.onUpdate((({ x: e, y: t, z: i }) => { + let r = new Cesium.Cartesian3(e, t, i); + if (!this.entity1 || !this.entity1.position) { + //console.log('触发移动,但未找到实体'); + return + } else { + if (this.entity1.position == null || !this.entity1.position) { + //console.log('触发移动,但未找到实体'); + return + } + this.entity1.position = r + } + } + )), + b.start() + c.to({ + x: s.x, + y: s.y, + z: s.z + }, r), + c.onUpdate((({ x: e, y: t, z: i }) => { + let r = new Cesium.Cartesian3(e, t, i); + if (!this.entity2 || !this.entity2.position) { + //console.log('触发移动,但未找到实体'); + } else { + if (this.entity2.position == null || !this.entity2.position) { + //console.log('触发移动,但未找到实体'); + } + this.entity2.position = r + } + } + )), + c.start() } - show(e) { this.entity.show = e + if (!e) { + this.entity1.show = e + this.entity2.show = e + } else { + if (this.entity1.show1) { + this.entity1.show = e + } + // if (this.entity2.show1) { + // this.entity2.show = e + // } + } } + showAlarm(e) { + this.entity1.show = e + this.entity1.show1 = e + } + showSignal(e) { + this.entity2.show = e + this.entity2.show1 = e + } + animate() { + let fl = 0 + this.timer = setInterval(() => { + if (this.entity1.billboard.scale >= 1.5) { + fl = 1 + } else if (this.entity1.billboard.scale <= 1) { + fl = 0 + } + if (fl == 0) { + this.entity1.billboard.scale += 0.05 + } else { + this.entity1.billboard.scale -= 0.05 + } + }, 50) + } + destroy() { + this.icy.viewer.entities.remove(this.entity), + this.entity = void 0 + this.icy.viewer.entities.remove(this.entity1), + this.entity1 = void 0 + + this.icy.viewer.entities.remove(this.entity2), + this.entity2 = void 0 + } + } + class JZ { + static { + function e() { + I.update(), requestAnimationFrame(e) + } + e() + } + constructor(e) { + this.icy = e, + this.entity, + this.entity1, + this.entity2 + } + loadCanvas(e, { lon: t, lat: i, height: r }) { + let url = localStorage.getItem('setHttp') + 'images/区域.png' + r = Number(r) + this.entity = this.icy.viewer.entities.add({ + name: e.name, + position: Cesium.Cartesian3.fromDegrees(t, i, Number(r + 50)), + // 图标 + billboard: { + image: url, + width: 30, + height: 30, + }, + label: { + //文字标签 + text: e.text, + font: '18px sans-serif', + style: Cesium.LabelStyle.FILL, + // 对齐方式(水平和竖直) + horizontalOrigin: Cesium.HorizontalOrigin.LEFT, + verticalOrigin: Cesium.VerticalOrigin.CENTER, + pixelOffset: new Cesium.Cartesian2(15, -2), + showBackground: true, + backgroundColor: new Cesium.Color.fromCssColorString("#022c8d50").withAlpha(0.9), + // backgroundColor: new Cesium.Color.fromBytes(6, 30, 88, 125), + + }, + }); + + // 先画线后画点,防止线压盖点 + let linePositions = []; + linePositions.push(new Cesium.Cartesian3.fromDegrees(t, i, r)); + linePositions.push(new Cesium.Cartesian3.fromDegrees(t, i, Number(r + 50))); + this.entity1 = this.icy.viewer.entities.add({ + name: e.name, + polyline: { + positions: linePositions, + height: 50, + width: 1.5, + material: e.color, + } + }) + + // 画点 + this.entity2 = this.icy.viewer.entities.add({ + name: e.name, + // 给初始点位设置一定的离地高度,否者会被压盖 + position: Cesium.Cartesian3.fromDegrees(t, i, r), + point: { + color: e.color, + pixelSize: 15, + } + }) + } + move(e, t, i) { + this.entity.position = Cesium.Cartesian3.fromDegrees(e, t, i) + this.entity1.position = Cesium.Cartesian3.fromDegrees(e, t, i) + this.entity2.position = Cesium.Cartesian3.fromDegrees(e, t, i) + } + show(e) { + this.entity.show = e + this.entity1.show = e + this.entity2.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 + this.icy.viewer.entities.remove(this.entity), + this.entity = void 0 + + this.icy.viewer.entities.remove(this.entity1), + this.entity1 = void 0 + + this.icy.viewer.entities.remove(this.entity2), + this.entity2 = void 0 } } - Cesium.Ion.defaultAccessToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIzNzFlNTg1MC0wOTA0LTQzYzYtOTBjZi05MjIzZjU2NTkzZGQiLCJpZCI6MTE4ODE3LCJpYXQiOjE2NzE1MDY2NjF9.yGR3CbS6VQp2s6Y9NHWOIKq8qKL0sWLZZBZ9eP02Ags" - })(), CustomCesium = __webpack_exports__ -})(); + class PL { + static { + function e() { + I.update(), requestAnimationFrame(e) + } + e() + } + constructor(e) { + this.icy = e, + this.entity + } + loadCanvas(e) { + this.entity = this.icy.viewer.entities.add({ + parent: e.parent, + name: e.type, + id: e.idr, + title: e.title, + coor: e.coor, + _icy: { + lon: e.lon, lat: e.lat, alt: e.alt + }, + position: Cesium.Cartesian3.fromDegrees(e.lon, e.lat, e.alt), + label: { //文字标签 + text: e.name, + font: '500 28px Helvetica',// 15pt monospace + scale: 0.5, + show: e.textShow, + style: Cesium.LabelStyle.FILL, + fillColor: Cesium.Color.WHITE, + pixelOffset: new Cesium.Cartesian2(0, -(e.size.h / 2 + 13)), //偏移量 + showBackground: true, + backgroundColor: new Cesium.Color.fromCssColorString('#000000ba'), + disableDepthTestDistance: 600000,//显示级别 + distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0.0, 100000), + }, + billboard: { + image: e.url, + width: e.size.w, + height: e.size.h, + show: true, + horizontalOrigin: Cesium.HorizontalOrigin.CENTER, + verticalOrigin: Cesium.VerticalOrigin.BOTTOM, + disableDepthTestDistance: 600000, + distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0.0, 100000), + scale: 0.5, + }, + }); + } + move(e, t, i) { + this.entity.position = Cesium.Cartesian3.fromDegrees(e, t, i) + } + 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 + } +)(); + + + + + + diff --git a/src/components/map_tools/map.js b/src/components/map_tools/map.js index af41e9b..aedec0f 100644 --- a/src/components/map_tools/map.js +++ b/src/components/map_tools/map.js @@ -120,7 +120,7 @@ const flyTo = (lng, lat) => { // 视角飞入 maxHeight: 1500, time: 1, - position: [lng, lat, 200], + position: [lng, lat - 0.001, 200], angle: [0, -60, 0], }); }; diff --git a/src/views/BI/components/historical_trajectory_options.vue b/src/views/BI/components/historical_trajectory_options.vue index 2dfbd92..b30fe88 100644 --- a/src/views/BI/components/historical_trajectory_options.vue +++ b/src/views/BI/components/historical_trajectory_options.vue @@ -195,7 +195,7 @@ const getTrajectoriesData = async (id, startTime, endTime, type) => { type, }); data.positions = data.positions.concat(res.data.data); - if (res.data.msg !== "人物轨迹结束") { + if (res.data.msg !== "人物轨迹结束" && res.data.msg !== "暂无人物轨迹") { type++; await getTrajectoriesData(id, startTime, endTime, type); } diff --git a/src/views/BI/js/history_trajectory.js b/src/views/BI/js/history_trajectory.js index fca295b..98d85a9 100644 --- a/src/views/BI/js/history_trajectory.js +++ b/src/views/BI/js/history_trajectory.js @@ -1,9 +1,7 @@ -let entityArr = []; -let billboardArr = []; +let entity = null; +let billboard = null; let line = []; export const addPerson = (id, name, lon, lat, height) => { - entityArr = new window.CustomCesium.GroupModel("人物模型"); - billboardArr = new window.CustomCesium.GroupModel("人物姓名"); addEntity(id, name, lon, lat, height); addBillboard(id, name, lon, lat, height); }; @@ -17,10 +15,10 @@ const addEntity = (id, name, lon, lat, height) => { let e; // eslint-disable-next-line prefer-const e = obj.clone(e); - const enModule = new window.CustomCesium.Model( + entity = new window.CustomCesium.Model( window.$icy, { - name: "人物", + name: "人物轨迹", height, id, lon, @@ -30,22 +28,18 @@ const addEntity = (id, name, lon, lat, height) => { }, e ); - // 修改模型方向 第一个参数是航向角 - // enModule.updateAngle([-90,20,20]); - entityArr.add(enModule); }; const addBillboard = (id, name, lon, lat, height) => { // 创建广告牌 - const bulletinBoard = new window.CustomCesium.BulletinBoard(window.$icy); - bulletinBoard.loadCanvas(drawCanvas(name), { - name: "人物铭牌", + billboard = new window.CustomCesium.BulletinBoard(window.$icy); + billboard.loadCanvas(drawCanvas(name), { + name: "人物轨迹铭牌", id: id + "_name", lon, lat, height: Number(height) + 2.05, }); - billboardArr.add(bulletinBoard); }; // eslint-disable-next-line no-unused-vars @@ -100,34 +94,23 @@ export const showLine = (positions) => { * entityArr 接收人物模型分组 * billboardArr 接收人物铭牌分组 */ -export const peoMovement = (id, lon, lat, height, alt,speed) => { - entityArr.children.forEach((b, m) => { - if (b.entity._id === id) { - b.updateAngle([alt, 0, 0]); // 改变人物朝向 - b.animationMove(lon, lat, height, speed, () => {}); // 人物平滑移动 - billboardArr.children[m].animationMove( - lon, - lat, - Number(Number(height) + 2.05), - speed - ); // 人物铭牌平滑移动 - } else { - console.log(`人物移动数据错误`); - } - }); +export const peoMovement = (id, lon, lat, height, alt, speed) => { + if (entity) { + entity.updateAngle([alt, 0, 0]); // 改变人物朝向 + entity.animationMove(lon, lat, height, speed, () => {}); // 人物平滑移动 + billboard.animationMove(lon, lat, Number(Number(height) + 2.05), speed); // 人物铭牌平滑移动 + } else { + console.log(`人物移动数据错误`); + } }; export const hadleDestroy = () => { - if (entityArr && entityArr.children) { - entityArr.children.forEach((e) => { - e.destroy(); - }); - billboardArr.children.forEach((e) => { - e.destroy(); - }); + if (entity) { + entity.destroy(); + billboard.destroy(); line.destroy(); - entityArr = []; - billboardArr = []; + entity = null; + billboard = null; line = []; } }; diff --git a/src/views/BI/js/map.js b/src/views/BI/js/map.js index 2dff39d..94d84f4 100644 --- a/src/views/BI/js/map.js +++ b/src/views/BI/js/map.js @@ -40,6 +40,9 @@ export const initMap = (corp) => { const [wgsLat, wgsLon] = bd09ToWgs84(corp.LATITUDE, corp.LONGITUDE); centerLon = wgsLon; centerLat = wgsLat; + + centerLon = 118.40522647; + centerLat = 37.97035807; flyTo(); // 亮度设置 const stages = window.$icy.viewer.scene.postProcessStages; @@ -136,7 +139,7 @@ export const flyTo = () => { // 视角飞入 maxHeight: 1500, time: 1, - position: [centerLon, centerLat, 200], + position: [centerLon, centerLat - 0.001, 200], angle: [0, -60, 0], }); }; diff --git a/src/views/BI/js/trajectory.js b/src/views/BI/js/trajectory.js index 24ce072..9fd02e9 100644 --- a/src/views/BI/js/trajectory.js +++ b/src/views/BI/js/trajectory.js @@ -2,7 +2,7 @@ import pako from "pako"; // 解密gzip插件 import { useWebSocket } from "@vueuse/core"; import { useUserStore } from "@/pinia/user"; import pinia from "@/pinia"; -import { getFenceList } from "@/request/map"; +import { getRealTimeList, getFenceList } from "@/request/map"; const userStore = useUserStore(pinia); const pls_ip = userStore.getUserInfo.POST_URL; @@ -13,6 +13,7 @@ const fencesArr = []; const { open, close } = useWebSocket( encodeURI("ws://" + pls_ip.replace("http://", "") + "/netty/test.io?u=1"), + // encodeURI("ws://58.58.162.14:8084/netty/test.io?userid=1"), { immediate: false, heartbeat: { @@ -24,12 +25,8 @@ const { open, close } = useWebSocket( onMessage: (ws, event) => { const msg = unzip(event.data); const decodedMsg = JSON.parse(decodeURIComponent(msg)); + console.log(decodedMsg); if (decodedMsg.msg === "000") { - console.log(decodedMsg.data); - // decodedMsg.data = [ - // "8379,119.447708695738,39.918422294137,-232.39015608699566,0.12000000000000001,,1,0,大大", - // "9979,119.447611105937,39.918443403627,-343.76932562302534,0.12000000000000001,9979,1,0,测试一", - // ]; peoMovement(decodedMsg.data); } if (decodedMsg.msg === "006") { @@ -52,13 +49,30 @@ const { open, close } = useWebSocket( ); export const handleTrajectory = (b) => { if (b) { + getOnlineUser(); open(); } else { close(); } }; -const addEntity = (id, name, lon, lat, height) => { +const getOnlineUser = async () => { + entityArr = new window.CustomCesium.GroupModel("人物模型"); + billboardArr = new window.CustomCesium.GroupModel("人物姓名"); + await getRealTimeList(); + const { data } = await getRealTimeList(); + const userList = data.data.list; + + userList.forEach((item) => { + const user = item.split(","); + addEntity(user[0], user[5], user[1], user[2], user[3], user[8]); + addBillboard(user[0], user[5], user[1], user[2], user[3], user[8]); + }); + entityArr.show(true); + billboardArr.show(true); +}; + +const addEntity = (id, name, lon, lat, height, floor) => { const obj = new window.CustomCesium.Model(window.$icy, { url: "/src/assets/glb/person_000002_blue.gltf", height: 0, @@ -72,6 +86,7 @@ const addEntity = (id, name, lon, lat, height) => { window.$icy, { name: "人物", + floor, height, id, lon, @@ -86,21 +101,23 @@ const addEntity = (id, name, lon, lat, height) => { entityArr.add(enModule); }; -const addBillboard = (id, name, lon, lat, height) => { +const addBillboard = (id, name, lon, lat, height, floor) => { // 创建广告牌 const bulletinBoard = new window.CustomCesium.BulletinBoard(window.$icy); - bulletinBoard.loadCanvas(drawCanvas(name), { + bulletinBoard.loadCanvas(drawCanvas(name, floor), { name: "人物铭牌", + floor, + peoNamr: name, id: id + "_name", lon, lat, - height: height + 2.05, + height: Number(height) + 2.05, }); billboardArr.add(bulletinBoard); }; // eslint-disable-next-line no-unused-vars -const drawCanvas = (name) => { +const drawCanvas = (name, floor) => { const canvas = document.createElement("canvas"); const width = 70; const height = 20; @@ -129,7 +146,7 @@ const drawCanvas = (name) => { ctx.font = "normal 12px 'Microsoft YaHei'"; ctx.textAlign = "center"; ctx.textBaseline = "middle"; - ctx.fillText(name, width / 2, height / 2); + ctx.fillText((name || "未知人员") + `(${floor}F)`, width / 2, height / 2); return canvas; }; @@ -164,59 +181,40 @@ const unzip = (b64Data) => { function peoMovement(moveData) { const map = new Map(); moveData.forEach((i, n) => { - let addFlag = false; map.set(i.split(",")[0], n); - if (!entityArr || !entityArr.children) { - addFlag = true; - entityArr = new window.CustomCesium.GroupModel("人物模型"); - billboardArr = new window.CustomCesium.GroupModel("人物姓名"); - const entity = i.split(","); - console.log(entity[0], 111111); - addEntity(entity[0], entity[8], entity[1], entity[2], entity[4]); - addBillboard(entity[0], entity[8], entity[1], entity[2], entity[4]); - } - - entityArr.children.forEach((b, m) => { - if (!b.entity) { - addFlag = true; - const entity = i.split(","); - console.log(entity[0], 2222222); - addEntity(entity[0], entity[8], entity[1], entity[2], entity[4]); - addBillboard(entity[0], entity[8], entity[1], entity[2], entity[4]); - return; - } - const index = map.get(b.entity._id); - const item = moveData[index]; - const entity = i.split(","); - if (index !== undefined && entity[0] === b.entity._id) { - addFlag = true; - const itData = item.split(","); // itData下标:0=【卡号】,(1,2,4)=【lon,lat,alt】,3=【人物朝向角度】,5=【工号】,6=【当前楼层】 - if (itData[4] != null && itData.length >= 6) { - b.updateAngle([itData[3], 0, 0]); // 改变人物朝向 - b.animationMove( - itData[1], - itData[2], - Number(itData[4]), - 1000, - () => {} - ); // 人物平滑移动 - billboardArr.children[m].animationMove( - itData[1], - itData[2], - Number(Number(itData[4]) + 2.05), - 1000 - ); // 人物铭牌平滑移动 - } else { - console.log(`人物移动数据错误,错误参数:'${item}'`); + }); + entityArr.children.forEach((b, m) => { + const index = map.get(b.entity._id); + const item = moveData[index]; + if (index !== undefined) { + const itData = item.split(","); // itData下标:0=【卡号】,(1,2,4)=【lon,lat,alt】,3=【人物朝向角度】,5=【工号】,6=【当前楼层】 + if (itData[4] != null && itData.length >= 6) { + b.updateAngle([itData[3], 0, 0]); // 改变人物朝向 + b.animationMove( + itData[1], + itData[2], + Number(itData[4]), + 2000, + () => {} + ); // 人物平滑移动 + billboardArr.children[m].animationMove( + itData[1], + itData[2], + Number(Number(itData[4]) + 2.05), + 2000 + ); // 人物铭牌平滑移动 + console.log(b.entity.floor); + console.log(Number(itData[6])); + if (Number(itData[6]) !== Number(b.entity.floor)) { + b.entity.floor = itData[6]; + billboardArr.children[m].uopdateImg( + drawCanvas(b.entity.peoName, itData[6]), + !0 + ); } + } else { + console.log(`人物移动数据错误,错误参数:'${item}'`); } - }); - - if (!addFlag) { - const entity = i.split(","); - console.log(entity[0], 333333); - addEntity(entity[0], entity[8], entity[1], entity[2], entity[4]); - addBillboard(entity[0], entity[8], entity[1], entity[2], entity[4]); } }); }