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 } } 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; } }) function PolylineTrailLinkMaterialProperty(options, viewer) { this.viewer = viewer; this._definitionChanged = new Cesium.Event; this._color = undefined; this._colorSubscription = undefined; this.color = options.color; this.duration = options.duration; this.trailImage = options.trailImage; this._time = new Date().getTime(); } PolylineTrailLinkMaterialProperty.prototype = { get isConstant() { return !1; }, get definitionChanged() { return this._definitionChanged; }, getType: function() { return "PolylineTrailLink"; }, getValue: function(time, result) { if (!Cesium.defined(result)) { result = {}; } result.color = Cesium.Property.getValueOrClonedDefault( this._color, time, Cesium.Color.WHITE, result.color ); if (this.trailImage) { result.image = this.trailImage; } else { result.image = Cesium.Material.PolylineTrailLinkImage; } if (this.duration) { result.time = ((new Date().getTime() - this._time) % this.duration) / this.duration; } this.viewer.scene.requestRender(); return result; }, equals: function(other) { return ( this === other || (other instanceof PolylineTrailLinkMaterialProperty && Cesium.Property.equals(this._color, other._color)) ); } }; Object.defineProperties(PolylineTrailLinkMaterialProperty.prototype, { color: Cesium.createPropertyDescriptor("color") }); Cesium.PolylineTrailLinkMaterialProperty = PolylineTrailLinkMaterialProperty; Cesium.Material.PolylineTrailLinkType = "PolylineTrailLink"; // let n = new Image; // // // let imgxx = new URL("/src/assets/images/img.png", import.meta.url) // // .href; // // n.src = imgxx.toDataURL("image/jpg"); // // console.log("-------------n"); // // console.log(n); Cesium.Material.PolylineTrailLinkImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAAgCAYAAABkS8DlAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkI0MTJBRUY3NzZDQTExRUVBRTkzQzIxOEQyNkY5NjA4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkI0MTJBRUY4NzZDQTExRUVBRTkzQzIxOEQyNkY5NjA4Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QjQxMkFFRjU3NkNBMTFFRUFFOTNDMjE4RDI2Rjk2MDgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QjQxMkFFRjY3NkNBMTFFRUFFOTNDMjE4RDI2Rjk2MDgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4iZbTiAAAPV0lEQVR42uyd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"; Cesium.Material.PolylineTrailLinkSource = `czm_material czm_getMaterial(czm_materialInput materialInput)\n\ {\n\ czm_material material = czm_getDefaultMaterial(materialInput);\n\ vec2 st = materialInput.st;\n\ vec4 colorImage = texture2D(image, vec2(fract(st.t - time), st.t));\n\ vec4 fragColor;\n\ fragColor.rgb = color.rgb / 1.0;\n\ fragColor = czm_gammaCorrect(fragColor);\n\ material.alpha = colorImage.a * color.a;\n\ material.diffuse = color.rgb;\n\ material.emission = fragColor.rgb;\n\ return material;\n\ }`; Cesium.Material._materialCache.addMaterial( Cesium.Material.PolylineTrailLinkType, { fabric: { type: Cesium.Material.PolylineTrailLinkType, uniforms: { color: new Cesium.Color(1.0, 1.0, 1.0, 1), image: Cesium.Material.PolylineTrailLinkImage, time: 0 }, source: Cesium.Material.PolylineTrailLinkSource }, translucent: function() { return true; } } ); } }, __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__, { EarlyWarning: () => EW,//四色图 BulletinBoard: () => H,//铭牌 PoiIconLabel: () => JZ,//基站 PositioningLabels: () => PL,//标签 Carmer: () => m, Cone: () => zz.Z, 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 } get isConstant() { return !1 } get definitionChanged() { return this._definitionChanged } getType(e) { return Cesium.Material.WallDiffuseMaterialType } getValue(e, t) { return Cesium.defined(t) || (t = {}), t.color = Cesium.Property.getValueOrDefault(this._color, e, Cesium.Color.RED, t.color), t } equals(e) { return this === e || e instanceof i && Cesium.Property.equals(this._color, e._color) } } class r { constructor() { } static tileXYToQuadKey(e, t, i) { for (var r = "", n = i; n >= 0; --n) { var s = 1 << n , a = 0; 0 != (e & s) && (a |= 1), 0 != (t & s) && (a |= 2), r += a } return "0" === r[0] && (r = r.substr(1)), r } static Cartesian3ToWGS84(e, t) { var i = e.scene.globe.ellipsoid.cartesianToCartographic(t); return [Cesium.Math.toDegrees(i.longitude), Cesium.Math.toDegrees(i.latitude), i.height] } static } 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: "谷歌影像服务" }); static tiandi_mapResources = new Cesium.UrlTemplateImageryProvider({ url: "https://ecn.t{s}.tiles.virtualearth.net/tiles/a{q}.jpeg?n=z&g=11404", subdomains: ["0", "1", "2", "3"], tilingScheme: new Cesium.WebMercatorTilingScheme, customTags: { q: function (e, t, i, n) { return r.tileXYToQuadKey(t, i, n) } }, minimumLevel: 3, maximumLevel: 18 }); static gaode_mapResources = new Cesium.UrlTemplateImageryProvider({ url: "https://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}", minimumLevel: 3, maximumLevel: 18 }); constructor(e, t, i, r) { if (this.icy = { viewer: void 0, name: t }, 1 == i) { let t = new Cesium.UrlTemplateImageryProvider({ url: r, fileExtension: "png", minimumLevel: 0, maximumLevel: 18, tilingScheme: new Cesium.WebMercatorTilingScheme }); this.init(e, t, 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, imageryProvider: t, animation: !1, timeline: !1, geocoder: !1, homeButton: !1, sceneModePicker: !1, baseLayerPicker: !1, navigationHelpButton: !1, 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 } initMaterial() { Cesium.WallDiffuseMaterialProperty || (Object.defineProperties(i.prototype, { color: Cesium.createPropertyDescriptor("color") }), Cesium.WallDiffuseMaterialProperty = i, Cesium.Material.WallDiffuseMaterialProperty = "WallDiffuseMaterialProperty", Cesium.Material.WallDiffuseMaterialType = "WallDiffuseMaterialType", Cesium.Material.WallDiffuseMaterialSource = "\n uniform vec4 color;\n czm_material czm_getMaterial(czm_materialInput materialInput){\n czm_material material = czm_getDefaultMaterial(materialInput);\n vec2 st = materialInput.st;\n material.diffuse = color.rgb * 2.0;\n material.alpha = color.a * (1.0 - fract(st.t)) * 0.8;\n return material;\n } \n ", Cesium.Material._materialCache.addMaterial(Cesium.Material.WallDiffuseMaterialType, { fabric: { type: Cesium.Material.WallDiffuseMaterialType, uniforms: { color: new Cesium.Color(1, 0, 0, 1) }, source: Cesium.Material.WallDiffuseMaterialSource }, translucent: function (e) { return !0 } })) } } 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("相机飞行请传入经纬高") } flyToInfo({ maxHeight: e, time: t, position: i, angle: r }) { 3 == i.length ? (e || (e = 10), t && 0 != t || (t = 3), this.icy.viewer.camera.flyTo({ destination: new Cesium.Cartesian3(i[0], i[1], i[2]), duration: t, maximumHeight: e, orientation: { heading: r.heading, pitch: r.pitch, roll: r.roll } })) : console.log("相机飞行请传入经纬高") } teleporting(e) { if (6 != e.length) throw "相机跳转参数错误,请检查传入参数"; icy.viewer.camera.setView({ destination: { x: e[0], y: e[1], z: e[2] }, orientation: { heading: e[3], pitch: e[4], roll: e[5] } }) } follow({ angle: e, targetPoint: t, distance: i }, r) { let n = turf.point([t[0], t[1]]) , s = -e[0] , a = turf.rhumbDestination(n, i, s, { units: "kilometers" }); this.flyTo({ maxHeight: 20, time: r, position: [a.geometry.coordinates[0], a.geometry.coordinates[1], t[2]], angle: e }) } getgGsture() { console.log("当前相机姿态输出"); let e = this.icy.viewer.camera.heading , t = this.icy.viewer.camera.pitch , i = this.icy.viewer.camera.roll , r = this.icy.viewer.camera.positionWC; // console.log(`destination:{x:${r.x},y:${r.y},z:${r.z}},orientation:{heading:${e},pitch:${t},roll:${i}}`) 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,h) { // 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(point[0], point[1], h), // 朝向 仰角 倾斜 orientation: { heading: this.icy.viewer.scene.camera.heading, pitch: Cesium.Math.toRadians(-90), // Cesium.Math.toRadians(-35.0), //this.icy.viewer.scene.camera.roll roll: 0 } }) //禁用放大缩小 // this.icy.viewer.scene.screenSpaceCameraController.enableZoom = false; //禁止相机倾斜 this.icy.viewer.scene.screenSpaceCameraController.enableTilt = false; } 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(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(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 d { constructor(e, t, i = 0) { this.icy = e,this.ground_arr = [], this.buildingArr = [], 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 } init(e) { return new Promise((t => { new Cesium.Resource.fetchJson({url: e}).then((e => { let i = []; i = e.scenes, i[0].children.forEach(((e, t) => { e.children && this.buildingArr.push(e) })), this.buildingArr.forEach(((e, t) => { i[0].children.forEach(((i, r) => { "ground_000001" == i.name && e.name.split("F")[0] > 0 && (this.buildingArr[t].children.push(i), this.ground_arr = i) })) })), this.buildingArr.sort(((e, t) => parseInt(e.name.replace("F", "")) - parseInt(t.name.replace("F", "")))); let r = []; this.buildingArr.forEach(((e, t) => { r.push({floor: e.name, index: t}) })), t({scenesArr: i, buildingArr: r}) })) })) } showTilesFloor(e) { let t = {name: null, children: null}; "all" != e && (t = this.buildingArr[e]), console.log(this.buildingArr[e]), t.name && (t.name.split("F")[0] < 0 ? this.icy.viewer.scene.globe.depthTestAgainstTerrain = !1 : this.icy.viewer.scene.globe.depthTestAgainstTerrain = !0); const i = []; t.children && t.children.forEach((e => { const t = ["${name} === '" + e.name + "'", "rgba(255,255,255,1)"]; i.push(t) })), "all" == e ? (this.icy.viewer.scene.globe.depthTestAgainstTerrain = !0, i.push(["true", "rgba(255,255,255,1)"])) : i.push(["true", "rgba(255,255,255,0.08)"]), this.tileset.style = new Cesium.Cesium3DTileStyle({color: {conditions: i}}) } clipTileset(e) { this.tileset._clippingPlanes = null, this.polygon = e; const t = this.tileset.root.transform, i = Cesium.Matrix4.inverseTransformation(t, new Cesium.Matrix4), r = new Cesium.ClippingPlaneCollection({planes: [new Cesium.ClippingPlane(new Cesium.Cartesian3(0, 0, -1), 1.03)] }); for (let t = 0; t < e.length - 1; t++) { const n = this.createClippingPlane(e[t], e[t + 1], i); r.add(n) } this.tileset.clippingPlanes = r } createClippingPlane(e, t, i) { const r = this.getOriginCoordinateSystemPoint(e, i), n = this.getOriginCoordinateSystemPoint(t, i), s = new Cesium.Cartesian3(0, 0, -1), a = new Cesium.Cartesian3; Cesium.Cartesian3.subtract(n, r, a); const o = new Cesium.Cartesian3; Cesium.Cartesian3.cross(s, a, o), Cesium.Cartesian3.normalize(o, o); const l = -Cesium.Cartesian3.dot(o, r); return new Cesium.ClippingPlane(o, l) } getOriginCoordinateSystemPoint(e, t) { const i = Cesium.Cartesian3.fromDegrees(e[0], e[1]); return Cesium.Matrix4.multiplyByPoint(t, i, 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 } } class p { constructor(e) { this.icy = e, this.billboard = void 0 } mouseMOVE(e) { new Cesium.ScreenSpaceEventHandler(this.icy.viewer.scene.canvas).setInputAction((t => { if (!this.icy.viewer.scene.pick(t.endPosition)) return this.billboard && (this.icy.viewer.canvas.style.cursor = "default", this.billboard.scale = void 0, this.billboard = void 0), void e(!1) } ), Cesium.ScreenSpaceEventType.MOUSE_MOVE) } mouseLeft(e) { new Cesium.ScreenSpaceEventHandler(this.icy.viewer.scene.canvas).setInputAction((t => { let i = this.icy.viewer.camera.getPickRay(t.position) , r = this.icy.viewer.scene.globe.pick(i, this.icy.viewer.scene) , n = Cesium.Cartographic.fromCartesian(r) , s = Cesium.Math.toDegrees(n.longitude) , a = Cesium.Math.toDegrees(n.latitude) , o = n.height , l = { longitude: Number(s.toFixed(8)), latitude: Number(a.toFixed(8)), altitude: Number(o.toFixed(5)) }; console.log("鼠标获取经纬高", s, a, o, l); //方向 围绕Z轴旋转 let heading = Cesium.Math.toDegrees(this.icy.viewer.camera.heading).toFixed(2); //倾斜角度 围绕Y轴旋转 let pitch = Cesium.Math.toDegrees(this.icy.viewer.camera.pitch).toFixed(2); //围绕X轴旋转 let roll = Cesium.Math.toDegrees(this.icy.viewer.camera.roll).toFixed(2); console.log(heading+','+pitch+','+roll); 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; console.log("---鼠标获取经纬高----", Cesium.Math.toDegrees(a.longitude), o, a.height); e(r); }), Cesium.ScreenSpaceEventType.RIGHT_CLICK) } mouseLeftDouble(e) { new Cesium.ScreenSpaceEventHandler(this.icy.viewer.scene.canvas).setInputAction((t => { let i = this.icy.viewer.camera.getPickRay(t.position) , r = this.icy.viewer.scene.globe.pick(i, this.icy.viewer.scene) , n = Cesium.Cartographic.fromCartesian(r) , s = Cesium.Math.toDegrees(n.longitude) , a = Cesium.Math.toDegrees(n.latitude) , o = n.height; e(s, a, o) } ), Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK) } } var 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) { return 1 - Math.pow(1 - t, e) }, InOut: function (t) { return t < .5 ? Math.pow(2 * t, e) / 2 : (1 - Math.pow(2 - 2 * t, e)) / 2 + .5 } } } }), _ = "undefined" == typeof self && "undefined" != typeof process && process.hrtime ? function () { var e = process.hrtime(); return 1e3 * e[0] + e[1] / 1e6 } : "undefined" != typeof self && void 0 !== self.performance && void 0 !== self.performance.now ? self.performance.now.bind(self.performance) : void 0 !== Date.now ? Date.now : function () { return (new Date).getTime() } , 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 () { 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 = _()), void 0 === t && (t = !1); var i = Object.keys(this._tweens); if (0 === i.length) return !1; for (; i.length > 0;) { this._tweensAddedDuringUpdate = {}; for (var r = 0; r < i.length; r++) { var n = this._tweens[i[r]] , s = !t; n && !1 === n.update(e, s) && !t && delete this._tweens[i[r]] } i = Object.keys(this._tweensAddedDuringUpdate) } return !0 } , e }(), 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 } } }, 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 () { 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 = _()), void 0 === t && (t = !1), this._isPlaying) return this; if (this._group && this._group.add(this), this._repeat = this._initialRepeat, this._reversed) for (var i in this._reversed = !1, this._valuesStartRepeat) this._swapEndStartRepeatValues(i), this._valuesStart[i] = this._valuesStartRepeat[i]; return this._isPlaying = !0, this._isPaused = !1, this._onStartCallbackFired = !1, this._onEveryStartCallbackFired = !1, this._isChainStopped = !1, this._startTime = e, this._startTime += this._delayTime, this._setupProperties(this._object, this._valuesStart, this._valuesEnd, this._valuesStartRepeat, t), this } , e.prototype.startFromCurrentValues = function (e) { return this.start(e, !0) } , e.prototype._setupProperties = function (e, t, i, r, n) { for (var s in i) { var a = e[s] , o = Array.isArray(a) , l = o ? "array" : typeof a , h = !o && Array.isArray(i[s]); if ("undefined" !== l && "function" !== l) { if (h) { var u = i[s]; if (0 === u.length) continue; u = u.map(this._handleRelativeValue.bind(this, a)), void 0 === t[s] && (i[s] = [a].concat(u)) } if ("object" !== l && !o || !a || h) (void 0 === t[s] || n) && (t[s] = a), o || (t[s] *= 1), r[s] = h ? i[s].slice().reverse() : t[s] || 0; else { for (var c in t[s] = o ? [] : {}, a) t[s][c] = a[c]; r[s] = o ? [] : {}, this._setupProperties(a, t[s], i[s], r[s], n) } } } } , e.prototype.stop = function () { return this._isChainStopped || (this._isChainStopped = !0, this.stopChainedTweens()), this._isPlaying ? (this._group && this._group.remove(this), this._isPlaying = !1, this._isPaused = !1, this._onStopCallback && this._onStopCallback(this._object), this) : this } , e.prototype.end = function () { return this._goToEnd = !0, this.update(1 / 0), this } , e.prototype.pause = function (e) { return void 0 === e && (e = _()), 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 = 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; t && this.start(e, !0) } if (this._goToEnd = !1, e < this._startTime) return !0; !1 === this._onStartCallbackFired && (this._onStartCallback && this._onStartCallback(this._object), this._onStartCallbackFired = !0), !1 === this._onEveryStartCallbackFired && (this._onEveryStartCallback && this._onEveryStartCallback(this._object), this._onEveryStartCallbackFired = !0), r = (e - this._startTime) / this._duration, r = 0 === this._duration || r > 1 ? 1 : r; var s = this._easingFunction(r); if (this._updateProperties(this._object, this._valuesStart, this._valuesEnd, s), this._onUpdateCallback && this._onUpdateCallback(this._object, r), 1 === r) { if (this._repeat > 0) { for (i in isFinite(this._repeat) && this._repeat--, this._valuesStartRepeat) this._yoyo || "string" != typeof this._valuesEnd[i] || (this._valuesStartRepeat[i] = this._valuesStartRepeat[i] + parseFloat(this._valuesEnd[i])), this._yoyo && this._swapEndStartRepeatValues(i), this._valuesStart[i] = this._valuesStartRepeat[i]; return this._yoyo && (this._reversed = !this._reversed), void 0 !== this._repeatDelayTime ? this._startTime = e + this._repeatDelayTime : this._startTime = e + this._delayTime, this._onRepeatCallback && this._onRepeatCallback(this._object), this._onEveryStartCallbackFired = !1, !0 } this._onCompleteCallback && this._onCompleteCallback(this._object); for (var a = 0, o = this._chainedTweens.length; a < o; a++) this._chainedTweens[a].start(this._startTime + this._duration, !1); return this._isPlaying = !1, !1 } return !0 } , e.prototype._updateProperties = function (e, t, i, r) { for (var n in i) if (void 0 !== t[n]) { var s = t[n] || 0 , a = i[n] , o = Array.isArray(e[n]) , l = Array.isArray(a); !o && l ? e[n] = this._interpolationFunction(a, r) : "object" == typeof a && a ? this._updateProperties(e[n], s, a, r) : "number" == typeof (a = this._handleRelativeValue(s, a)) && (e[n] = s + (a - s) * r) } } , e.prototype._handleRelativeValue = function (e, t) { return "string" != typeof t ? t : "+" === t.charAt(0) || "-" === t.charAt(0) ? e + parseFloat(t) : parseFloat(t) } , e.prototype._swapEndStartRepeatValues = function (e) { var t = this._valuesStartRepeat[e] , i = this._valuesEnd[e]; this._valuesStartRepeat[e] = "string" == typeof i ? this._valuesStartRepeat[e] + parseFloat(i) : this._valuesEnd[e], this._valuesEnd[e] = t } , e }(), 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: x, removeAll: P, add: b, remove: E, update: R }; class D { static FileUrl = "../public/models/glb/"; static nameShow(e, t) { e.map((e => { e.show(t) } )) } static { function e() { I.update(), requestAnimationFrame(e) } e() } constructor(e, { url: t, height: i, lon: r, lat: n, id: s, name: a, scale: o, angle: l, peoName: k,gltf: gltf, 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: u, orientation: C, model: { uri: t, scale: o, color: new Cesium.Color(1, 1, 1, 1) }, runAnimations: !1, incrementallyLoadTextures: !1, colorBlendMode: Cesium.ColorBlendMode.MIX, colorBlendAmount: .1, _icy: { lon: r, lat: n, height: i } }) : e.viewer.entities.add({ id: s, name: a, position: u, orientation: C, model: h, runAnimations: !1, incrementallyLoadTextures: !1, colorBlendMode: Cesium.ColorBlendMode.MIX, colorBlendAmount: .1, _icy: { lon: r, lat: n, height: i } }) this.entity.peoName = k this.entity.floor = f this.entity.isCar = q this.entity.gltf = gltf } show(e) { this.entity.show = e } move({ lon: e, lat: t, height: i, angle: r }) { let n = Cesium.Cartesian3.fromDegrees(e, t, i) , s = Cesium.Math.toRadians(r[0]) , a = Cesium.Math.toRadians(r[1]) , o = Cesium.Math.toRadians(r[2]) , l = new Cesium.HeadingPitchRoll(s, a, o) , h = Cesium.Transforms.headingPitchRollQuaternion(n, l); this.entity.position = n, this.entity.orientation = h } updateAngle(e) { let t = new Cesium.Cartesian3(this.entity.position._value.x, this.entity.position._value.y, this.entity.position._value.z) , i = Cesium.Math.toRadians(e[0]) , r = e[1] , n = e[2] , s = new Cesium.HeadingPitchRoll(i, r, n) , a = Cesium.Transforms.headingPitchRollQuaternion(t, s); this.entity.orientation = a } animationMove(e, t, i, n, s) { if (!this.entity || !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 } } 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, modelMatrix: C, scale: o })) } show(e) { this.entity.show = e } getEntity() { return this.entity } getState() { let e = this.entity.modelMatrix; const t = Cesium.Matrix4.getTranslation(e, new Cesium.Cartesian3); var i = this.icy.viewer.scene.globe.ellipsoid.cartesianToCartographic(t) , r = Cesium.Math.toDegrees(i.latitude) , n = Cesium.Math.toDegrees(i.longitude) , s = i.height; let a = e; var o = Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Matrix4.getTranslation(a, new Cesium.Cartesian3), Cesium.Ellipsoid.WGS84, new Cesium.Matrix4) , l = Cesium.Matrix4.multiply(Cesium.Matrix4.inverse(o, new Cesium.Matrix4), a, new Cesium.Matrix4) , h = Cesium.Matrix4.getMatrix3(l, new Cesium.Matrix3) , u = Cesium.Quaternion.fromRotationMatrix(h) , c = Cesium.HeadingPitchRoll.fromQuaternion(u); return { lng: n, lat: r, alt: s, angle: [Cesium.Math.toDegrees(c.heading), Cesium.Math.toDegrees(c.pitch), Cesium.Math.toDegrees(c.roll)] } } getPosition() { return this.entity.modelMatrix } destroy() { this.icy.viewer.entities.remove(this.entity), this.entity = void 0 } } class A { constructor(e) { this.name = e, this.children = [] } add(e) { if (!e.entity) throw "请传入模型"; this.children.push(e) } show(e) { this.children.forEach((t => { t.show(e) } )) } move() { this.children.map((e => { e.entity.position._value.x -= 1 } )) } destroy(e) { this.children.forEach((t => { e.viewer.entities.remove(t.entity) } )) } } class 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)] } 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 } } } , 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) } } ; class U { constructor(e) { this.icy = e, this.fenceList = [], this.currentFence = [], this.currentEntity = [], this.currentState = !1, this.currentPolyline, this.currentPolygon } start() { this.currentState = !0; let e = this.icy.viewer.canvas.parentNode , t = document.createElement("div"); t.id = "menu", t.style = "width:100px;position:fixed;left:20px;top:30px;z-index:99"; let i = document.createElement("button"); i.innerHTML = "完成绘制", i.addEventListener("click", (() => { this.sout(), this.finish() } )), t.appendChild(i), e.appendChild(t) i.remove() } 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, 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: !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: 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() } stop() { this.currentState ? (this.currentState = !1, 0 != this.currentFence.length && this.fenceList.push(this.currentFence), this.currentFence = []) : console.error("状态已经是停止状态") } finish() { this.currentEntity.forEach((e => this.icy.viewer.entities.remove(e))), this.currentEntity = [], this.icy.viewer.entities.remove(this.currentPolygon), this.currentPolygon = void 0, this.icy.viewer.entities.remove(this.currentPolyline), this.currentPolyline = void 0; let e = this.currentFence.flat(); e.push(...this.currentFence[0]); let t = this.icy.viewer.entities.add({ wall: { positions: Cesium.Cartesian3.fromDegreesArrayHeights(e), maximumHeights: new Array(e.length).fill(60), minimunHeights: new Array(e.length).fill(10), material: new Cesium.WallDiffuseMaterialProperty({ color: new Cesium.Color(1, 1, 0, 1) }) } }); this.currentFence.length = 0, this.fenceList.push(t) } addPoint(e, t, i, z) { let r; return r = this.icy.viewer.entities.add({ position: Cesium.Cartesian3.fromDegrees(e, t, i), point: { pixelSize: 8, extrudedHeight: z, color: Cesium.Color.YELLOW, disableDepthTestDistance: Number.POSITIVE_INFINITY } }), r } update_Polygon() { this.currentEntity.length < 3 ? (this.icy.viewer.entities.remove(this.currentPolygon), this.currentPolygon = void 0) : this.currentPolygon.polygon.hierarchy = Cesium.Cartesian3.fromDegreesArrayHeights(this.currentFence.flat()) } update_Polyline() { if (this.currentEntity.length < 2) this.icy.viewer.entities.remove(this.currentPolyline), this.currentPolyline = void 0; else { let e = this.currentFence.flat(); this.currentPolyline.polyline.positions = Cesium.Cartesian3.fromDegreesArrayHeights(e) } } clear() { try { this.finish() } catch (e) { } this.fenceList.map((e => { 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 } sout() { 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), 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 = []; 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 } // 动态线材质 } class RT { constructor(e) { 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(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), } }); 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) } } 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) }); } } } 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 } } 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, type: t }) { this.icy = e; this.WGS84_to_Cartesian3 = WGS84_to_Cartesian3; this.Cartesian3_to_WGS84 = Cartesian3_to_WGS84; if (t === "wall") { // let polyCenter2 = Cesium.Cartesian3.fromDegreesArrayHeights(r.flat()) // var polyCenter = Cesium.BoundingSphere.fromPoints(polyCenter2).center // let wgs84Center = this.Cartesian3_to_WGS84(polyCenter) // console.log(polyCenter); // console.log(wgs84Center); // wgs84Center.alt = h // polyCenter = this.WGS84_to_Cartesian3(wgs84Center); // console.log(polyCenter); // 外墙 this.entity = this.icy.viewer.entities.add({ name: "外墙", id: id + "-06", wall: { positions: Cesium.Cartesian3.fromDegreesArrayHeights(r.flat()), maximumHeights: new Array(r.length).fill(20), minimunHeights: new Array(r.length).fill(20), // material: Cesium.Color.fromCssColorString(n).withAlpha(0.5) material: new Cesium.PolylineTrailLinkMaterialProperty({ color: Cesium.Color.fromBytes(201, 118, 243).withAlpha(0.5), duration: 2000 }, this.icy.viewer) } }); } else { 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") //设置轮廓线 }; } } show(e) { this.entity.show = e } destroy() { this.icy.viewer.entities.remove(this.entity), this.entity = void 0 } } class j { constructor(e) { this.viewer = e.viewer, this.icy = e, this.entity = null, this.entity1 = null, this.timer = null } 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: 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,name:s }) { 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: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAu9JREFUWEfFV09vEkEU/20NGgMWMClNVCpSY2y8eDFmjZpy8gtoL91GiH/iTb+AaRs/gVc1KQnLRelFP0CrFw6ePPgnNAqWtBrRUsEqlT/bzALLzrCzO0tIOpfdzLx57/d+772ZNxL2eUj7bB+uAGTj8QgajZsApqFpEUhSBJpW0J2QJPJdBfBaVlXyFRpCALKKQgwu6QZFBgE1MrIop1JJJ3FbAB2Pl3SPBxkEiMcTk5PJNksWgwtA9xpYGcQutYeAkKQELyyWAIZmvIvEBkQfgA7teRHPg+cCODjqQfn9Nv5X6vZbOOHoB6AohHbHmEdnIvCFvbrRL2828edt2RmzphXkdPqUWZACkJ2bi+vZ7jC8YS8mZ+iC+Py8gJ3ijtNWsh4z5wMNQND7yVun4Q0cooxVyjVsZtaFQmFmwQAg6v24PIbxSyHdeKnS1L9jowfchcLEgisAJOHO3jljeP7oxW/9/+ENvzH36WnOmQVgQVbVRbKpB2B2lpx0cbsg+i4EEb16zBC5/6ydeI9vB405wYRclVU1xgLI2x21rPdksxUAMu/Igqkaegwoimbnffj6BIInj1AiPADlr1UUM+t8dW4BWJUd0b6c/YtSpYV713x9xj68KqCR45elrKq68+Yc4IZgIhFF4OhhkRo3ZLa3/uH7ctE6ITkMWJ6A5rJjEbBlyK5zE1LTknI6naAZUJR5AAtmJVaJZ163KkMWhGVCcgD0Xb9s2bHKPxbbF9BU2MMND4cF4zi2PYpbl/04f/GEq9izwvm1LVRffutNMxcSC4BiYfnXBu4+kHE8RJefKKKNH1VkUu8QQ++g0psTU6tmex2XajU8ya3h5+6uqE1Kbsrvx5XxEMi3M4wTsDth3ZDU6yvCDag7aNRVTFWBWc/QW7K28j7jXABkwU1rZkvCIE1pV+FQ2nKbjtiWAQpEszmNVmteOC/aXie7d74dQ0IvIyMk5Id9mpG53vOMvISG/zRzl+jupIUZcKdWXHoPjmlrMB9cdeMAAAAASUVORK5CYII=", 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(50, 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: s, 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, type, floor) { let t = new Image; 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 || !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 this.entity1.show =false // 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.entity1), this.entity1 = void 0 this.icy.viewer.entities.remove(this.entity2), this.entity2 = void 0 } } var zz = __webpack_require__(117); 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 = __webpack_exports__ })();