2024-02-26 08:47:12 +08:00
|
|
|
|
var CustomCesium;
|
|
|
|
|
(() => {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
"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
|
|
|
|
|
})
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
, 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 {
|
2024-02-28 10:44:18 +08:00
|
|
|
|
constructor(e) {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
this._definitionChanged = new Cesium.Event,
|
|
|
|
|
this._color = void 0,
|
|
|
|
|
this.color = e.color
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
2024-02-28 10:44:18 +08:00
|
|
|
|
get isConstant() {
|
|
|
|
|
return !1
|
|
|
|
|
}
|
|
|
|
|
get definitionChanged() {
|
|
|
|
|
return this._definitionChanged
|
|
|
|
|
}
|
|
|
|
|
getType(e) {
|
|
|
|
|
return Cesium.Material.WallDiffuseMaterialType
|
|
|
|
|
}
|
|
|
|
|
getValue(e, t) {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
return Cesium.defined(t) || (t = {}),
|
|
|
|
|
t.color = Cesium.Property.getValueOrDefault(this._color, e, Cesium.Color.RED, t.color),
|
|
|
|
|
t
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
equals(e) {
|
|
|
|
|
return this === e || e instanceof i && Cesium.Property.equals(this._color, e._color)
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
class r {
|
|
|
|
|
constructor() { }
|
2024-02-28 10:44:18 +08:00
|
|
|
|
static tileXYToQuadKey(e, t, i) {
|
|
|
|
|
for (var r = "", n = i; n >= 0; --n) {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
var s = 1 << n
|
|
|
|
|
, a = 0;
|
|
|
|
|
0 != (e & s) && (a |= 1),
|
|
|
|
|
0 != (t & s) && (a |= 2),
|
|
|
|
|
r += a
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
return "0" === r[0] && (r = r.substr(1)),
|
|
|
|
|
r
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
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
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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 {
|
2024-02-28 10:44:18 +08:00
|
|
|
|
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: {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
q: function (e, t, i, n) {
|
|
|
|
|
return r.tileXYToQuadKey(t, i, n)
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
minimumLevel: 3,
|
|
|
|
|
maximumLevel: 19
|
|
|
|
|
});
|
|
|
|
|
static gaode_mapResources = new Cesium.UrlTemplateImageryProvider({
|
|
|
|
|
url: "https://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}",
|
|
|
|
|
minimumLevel: 3,
|
|
|
|
|
maximumLevel: 18
|
|
|
|
|
});
|
2024-03-01 12:03:28 +08:00
|
|
|
|
constructor(e, t, i, r) {
|
|
|
|
|
if (this.icy = {
|
|
|
|
|
viewer: void 0,
|
|
|
|
|
name: t
|
|
|
|
|
},
|
|
|
|
|
1 == i) {
|
2024-02-28 10:44:18 +08:00
|
|
|
|
let t = new Cesium.UrlTemplateImageryProvider({
|
2024-03-01 12:03:28 +08:00
|
|
|
|
url: r,
|
2024-02-28 10:44:18 +08:00
|
|
|
|
fileExtension: "png",
|
|
|
|
|
minimumLevel: 0,
|
|
|
|
|
maximumLevel: 19,
|
|
|
|
|
tilingScheme: new Cesium.WebMercatorTilingScheme
|
|
|
|
|
});
|
|
|
|
|
this.init(e, t, 50)
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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)
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
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,
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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)
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
fPSShow(e) {
|
|
|
|
|
this.icy.viewer.scene.debugShowFramesPerSecond = e
|
|
|
|
|
}
|
|
|
|
|
destroy() {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
this.icy.iewer.destroy(),
|
|
|
|
|
this.icy = void 0
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
initMaterial() {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
}))
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
class m {
|
2024-02-28 10:44:18 +08:00
|
|
|
|
constructor(e) {
|
|
|
|
|
this.icy = e
|
2024-03-01 12:03:28 +08:00
|
|
|
|
if (Cesium.FeatureDetection.supportsImageRenderingPixelated()) {//判断是否支持图像渲染像素化处理
|
|
|
|
|
this.icy.viewer.resolutionScale = window.devicePixelRatio;
|
|
|
|
|
}
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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("相机飞行请传入经纬高")
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
teleporting(e) {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
if (6 != e.length)
|
|
|
|
|
throw "相机跳转参数错误,请检查传入参数";
|
2024-02-28 10:44:18 +08:00
|
|
|
|
icy.viewer.camera.setView({
|
2024-03-01 12:03:28 +08:00
|
|
|
|
destination: {
|
|
|
|
|
x: e[0],
|
|
|
|
|
y: e[1],
|
|
|
|
|
z: e[2]
|
|
|
|
|
},
|
|
|
|
|
orientation: {
|
|
|
|
|
heading: e[3],
|
|
|
|
|
pitch: e[4],
|
|
|
|
|
roll: e[5]
|
|
|
|
|
}
|
2024-02-28 10:44:18 +08:00
|
|
|
|
})
|
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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"
|
|
|
|
|
});
|
2024-02-28 10:44:18 +08:00
|
|
|
|
this.flyTo({
|
|
|
|
|
maxHeight: 20,
|
|
|
|
|
time: r,
|
|
|
|
|
position: [a.geometry.coordinates[0], a.geometry.coordinates[1], t[2]],
|
|
|
|
|
angle: e
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
getgGsture() {
|
|
|
|
|
console.log("当前相机姿态输出");
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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]
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
changeView(e) {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
let cameraHeight = 1200;
|
|
|
|
|
if (e == "2D") {
|
|
|
|
|
let point = this.getCenterPoint(this.icy.viewer);
|
|
|
|
|
// let cameraHeight = Math.round(this.icy.viewer.camera.positionCartographic.height);
|
2024-02-28 10:44:18 +08:00
|
|
|
|
this.icy.viewer.scene.camera.flyTo({
|
2024-03-01 12:03:28 +08:00
|
|
|
|
// 经度 纬度 高度
|
|
|
|
|
destination: Cesium.Cartesian3.fromDegrees(point[0], point[1], cameraHeight),
|
|
|
|
|
// 朝向 仰角 倾斜
|
2024-02-28 10:44:18 +08:00
|
|
|
|
orientation: {
|
|
|
|
|
heading: this.icy.viewer.scene.camera.heading,
|
2024-03-01 12:03:28 +08:00
|
|
|
|
pitch: Cesium.Math.toRadians(-90), // Cesium.Math.toRadians(-35.0),
|
|
|
|
|
//this.icy.viewer.scene.camera.roll
|
2024-02-28 10:44:18 +08:00
|
|
|
|
roll: 0
|
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
})
|
|
|
|
|
//禁用放大缩小
|
|
|
|
|
// 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;
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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];
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
class d {
|
2024-02-28 10:44:18 +08:00
|
|
|
|
constructor(e, t, i = 0) {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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 = []
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
show(e) {
|
|
|
|
|
this.tileset.show = e
|
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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);
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
}
|
2024-02-26 08:47:12 +08:00
|
|
|
|
|
2024-03-01 12:03:28 +08:00
|
|
|
|
getOriginCoordinateSystemPoint(point, inverseTransform) {
|
|
|
|
|
const cartesian = Cesium.Cartesian3.fromDegrees(point[0], point[1]);
|
|
|
|
|
return Cesium.Matrix4.multiplyByPoint(inverseTransform, cartesian, new Cesium.Cartesian3());
|
|
|
|
|
}
|
2024-02-28 10:44:18 +08:00
|
|
|
|
setHeight(e = 0) {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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);
|
2024-02-28 10:44:18 +08:00
|
|
|
|
this.tileset.modelMatrix = Cesium.Matrix4.fromTranslation(s)
|
|
|
|
|
}
|
|
|
|
|
look() {
|
|
|
|
|
this.icy.viewer.zoomTo(this.tileset)
|
|
|
|
|
}
|
|
|
|
|
destroy() {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
this.tileset.destroy(),
|
|
|
|
|
this.tileset = void 0
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
class p {
|
2024-02-28 10:44:18 +08:00
|
|
|
|
constructor(e) {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
this.icy = e,
|
|
|
|
|
this.billboard = void 0
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
2024-02-28 10:44:18 +08:00
|
|
|
|
mouseMOVE(e) {
|
|
|
|
|
new Cesium.ScreenSpaceEventHandler(this.icy.viewer.scene.canvas).setInputAction((t => {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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)
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
2024-02-28 10:44:18 +08:00
|
|
|
|
mouseLeft(e) {
|
|
|
|
|
new Cesium.ScreenSpaceEventHandler(this.icy.viewer.scene.canvas).setInputAction((t => {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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 = {
|
2024-02-28 10:44:18 +08:00
|
|
|
|
longitude: Number(s.toFixed(8)),
|
|
|
|
|
latitude: Number(a.toFixed(8)),
|
|
|
|
|
altitude: Number(o.toFixed(5))
|
|
|
|
|
};
|
2024-03-01 12:03:28 +08:00
|
|
|
|
// 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)
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
mouseLeftDouble(e) {
|
|
|
|
|
new Cesium.ScreenSpaceEventHandler(this.icy.viewer.scene.canvas).setInputAction((t => {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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)
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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,
|
|
|
|
|
{
|
2024-02-28 10:44:18 +08:00
|
|
|
|
In: function (t) {
|
|
|
|
|
return Math.pow(t, e)
|
2024-03-01 12:03:28 +08:00
|
|
|
|
},
|
|
|
|
|
Out: function (t) {
|
2024-02-28 10:44:18 +08:00
|
|
|
|
return 1 - Math.pow(1 - t, e)
|
2024-03-01 12:03:28 +08:00
|
|
|
|
},
|
|
|
|
|
InOut: function (t) {
|
2024-02-28 10:44:18 +08:00
|
|
|
|
return t < .5 ? Math.pow(2 * t, e) / 2 : (1 - Math.pow(2 - 2 * t, e)) / 2 + .5
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
}
|
|
|
|
|
}), _ = "undefined" == typeof self && "undefined" != typeof process && process.hrtime ? function () {
|
2024-02-28 10:44:18 +08:00
|
|
|
|
var e = process.hrtime();
|
|
|
|
|
return 1e3 * e[0] + e[1] / 1e6
|
2024-03-01 12:03:28 +08:00
|
|
|
|
}
|
|
|
|
|
: "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 () {
|
2024-02-28 10:44:18 +08:00
|
|
|
|
return (new Date).getTime()
|
2024-03-01 12:03:28 +08:00
|
|
|
|
}
|
|
|
|
|
, f = function () {
|
|
|
|
|
function e() {
|
|
|
|
|
this._tweens = {},
|
|
|
|
|
this._tweensAddedDuringUpdate = {}
|
|
|
|
|
}
|
|
|
|
|
return e.prototype.getAll = function () {
|
|
|
|
|
var e = this;
|
|
|
|
|
return Object.keys(this._tweens).map((function (t) {
|
2024-02-28 10:44:18 +08:00
|
|
|
|
return e._tweens[t]
|
2024-03-01 12:03:28 +08:00
|
|
|
|
}
|
|
|
|
|
))
|
|
|
|
|
}
|
|
|
|
|
,
|
|
|
|
|
e.prototype.removeAll = function () {
|
2024-02-28 10:44:18 +08:00
|
|
|
|
this._tweens = {}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
}
|
|
|
|
|
,
|
|
|
|
|
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);
|
2024-02-28 10:44:18 +08:00
|
|
|
|
var i = Object.keys(this._tweens);
|
2024-03-01 12:03:28 +08:00
|
|
|
|
if (0 === i.length)
|
|
|
|
|
return !1;
|
2024-02-28 10:44:18 +08:00
|
|
|
|
for (; i.length > 0;) {
|
|
|
|
|
this._tweensAddedDuringUpdate = {};
|
|
|
|
|
for (var r = 0; r < i.length; r++) {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
var n = this._tweens[i[r]]
|
|
|
|
|
, s = !t;
|
2024-02-28 10:44:18 +08:00
|
|
|
|
n && !1 === n.update(e, s) && !t && delete this._tweens[i[r]]
|
|
|
|
|
}
|
|
|
|
|
i = Object.keys(this._tweensAddedDuringUpdate)
|
|
|
|
|
}
|
|
|
|
|
return !0
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
,
|
|
|
|
|
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
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
}
|
|
|
|
|
}, 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 () {
|
2024-02-28 10:44:18 +08:00
|
|
|
|
return this._isPlaying
|
2024-03-01 12:03:28 +08:00
|
|
|
|
}
|
|
|
|
|
,
|
|
|
|
|
e.prototype.isPaused = function () {
|
2024-02-28 10:44:18 +08:00
|
|
|
|
return this._isPaused
|
2024-03-01 12:03:28 +08:00
|
|
|
|
}
|
|
|
|
|
,
|
|
|
|
|
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) {
|
2024-02-28 10:44:18 +08:00
|
|
|
|
return this.start(e, !0)
|
2024-03-01 12:03:28 +08:00
|
|
|
|
}
|
|
|
|
|
,
|
|
|
|
|
e.prototype._setupProperties = function (e, t, i, r, n) {
|
2024-02-28 10:44:18 +08:00
|
|
|
|
for (var s in i) {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
var a = e[s]
|
|
|
|
|
, o = Array.isArray(a)
|
|
|
|
|
, l = o ? "array" : typeof a
|
|
|
|
|
, h = !o && Array.isArray(i[s]);
|
2024-02-28 10:44:18 +08:00
|
|
|
|
if ("undefined" !== l && "function" !== l) {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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))
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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)
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
}
|
|
|
|
|
,
|
|
|
|
|
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();
|
2024-02-28 10:44:18 +08:00
|
|
|
|
return this
|
2024-03-01 12:03:28 +08:00
|
|
|
|
}
|
|
|
|
|
,
|
|
|
|
|
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;
|
2024-02-28 10:44:18 +08:00
|
|
|
|
var i, r, n = this._startTime + this._duration;
|
|
|
|
|
if (!this._goToEnd && !this._isPlaying) {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
if (e > n)
|
|
|
|
|
return !1;
|
2024-02-28 10:44:18 +08:00
|
|
|
|
t && this.start(e, !0)
|
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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;
|
2024-02-28 10:44:18 +08:00
|
|
|
|
var s = this._easingFunction(r);
|
2024-03-01 12:03:28 +08:00
|
|
|
|
if (this._updateProperties(this._object, this._valuesStart, this._valuesEnd, s),
|
|
|
|
|
this._onUpdateCallback && this._onUpdateCallback(this._object, r),
|
|
|
|
|
1 === r) {
|
2024-02-28 10:44:18 +08:00
|
|
|
|
if (this._repeat > 0) {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
this._onCompleteCallback && this._onCompleteCallback(this._object);
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
return !0
|
2024-03-01 12:03:28 +08:00
|
|
|
|
}
|
|
|
|
|
,
|
|
|
|
|
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) {
|
2024-02-28 10:44:18 +08:00
|
|
|
|
return "string" != typeof t ? t : "+" === t.charAt(0) || "-" === t.charAt(0) ? e + parseFloat(t) : parseFloat(t)
|
2024-03-01 12:03:28 +08:00
|
|
|
|
}
|
|
|
|
|
,
|
|
|
|
|
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,
|
2024-02-28 10:44:18 +08:00
|
|
|
|
VERSION: "19.0.0",
|
2024-03-01 12:03:28 +08:00
|
|
|
|
getAll: x,
|
|
|
|
|
removeAll: P,
|
|
|
|
|
add: b,
|
|
|
|
|
remove: E,
|
|
|
|
|
update: R
|
2024-02-28 10:44:18 +08:00
|
|
|
|
};
|
2024-03-01 12:03:28 +08:00
|
|
|
|
class D {
|
|
|
|
|
static FileUrl = "../public/models/glb/";
|
2024-02-28 10:44:18 +08:00
|
|
|
|
static nameShow(e, t) {
|
|
|
|
|
e.map((e => {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
e.show(t)
|
|
|
|
|
}
|
|
|
|
|
))
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
2024-02-28 10:44:18 +08:00
|
|
|
|
static {
|
|
|
|
|
function e() {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
I.update(), requestAnimationFrame(e)
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
e()
|
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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);
|
2024-02-28 10:44:18 +08:00
|
|
|
|
this.entity = t ? e.viewer.entities.add({
|
|
|
|
|
id: s,
|
|
|
|
|
name: a,
|
2024-03-01 12:03:28 +08:00
|
|
|
|
position: u,
|
2024-02-28 10:44:18 +08:00
|
|
|
|
orientation: C,
|
2024-03-01 12:03:28 +08:00
|
|
|
|
model: {
|
|
|
|
|
uri: t,
|
|
|
|
|
scale: o,
|
|
|
|
|
color: new Cesium.Color(1, 1, 1, 1)
|
|
|
|
|
},
|
2024-02-28 10:44:18 +08:00
|
|
|
|
runAnimations: !1,
|
|
|
|
|
incrementallyLoadTextures: !1,
|
|
|
|
|
colorBlendMode: Cesium.ColorBlendMode.MIX,
|
|
|
|
|
colorBlendAmount: .1,
|
2024-03-01 12:03:28 +08:00
|
|
|
|
_icy: {
|
|
|
|
|
lon: r,
|
|
|
|
|
lat: n,
|
|
|
|
|
height: i
|
|
|
|
|
}
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}) : e.viewer.entities.add({
|
|
|
|
|
id: s,
|
|
|
|
|
name: a,
|
2024-03-01 12:03:28 +08:00
|
|
|
|
position: u,
|
2024-02-28 10:44:18 +08:00
|
|
|
|
orientation: C,
|
2024-03-01 12:03:28 +08:00
|
|
|
|
model: h,
|
2024-02-28 10:44:18 +08:00
|
|
|
|
runAnimations: !1,
|
|
|
|
|
incrementallyLoadTextures: !1,
|
|
|
|
|
colorBlendMode: Cesium.ColorBlendMode.MIX,
|
|
|
|
|
colorBlendAmount: .1,
|
2024-03-01 12:03:28 +08:00
|
|
|
|
_icy: {
|
|
|
|
|
lon: r,
|
|
|
|
|
lat: n,
|
|
|
|
|
height: i
|
|
|
|
|
}
|
2024-02-28 10:44:18 +08:00
|
|
|
|
})
|
2024-03-01 12:03:28 +08:00
|
|
|
|
this.entity.peoName = k
|
|
|
|
|
this.entity.floor = f
|
|
|
|
|
this.entity.isCar = q
|
2024-02-26 08:47:12 +08:00
|
|
|
|
|
2024-03-01 12:03:28 +08:00
|
|
|
|
}
|
2024-02-28 10:44:18 +08:00
|
|
|
|
show(e) {
|
|
|
|
|
this.entity.show = e
|
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
updateAngle(e) {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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);
|
2024-02-28 10:44:18 +08:00
|
|
|
|
this.entity.orientation = a
|
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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()
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
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() {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
this.icy.viewer.entities.remove(this.entity),
|
|
|
|
|
this.entity = void 0
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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);
|
2024-02-28 10:44:18 +08:00
|
|
|
|
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
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
2024-02-28 10:44:18 +08:00
|
|
|
|
getState() {
|
|
|
|
|
let e = this.entity.modelMatrix;
|
|
|
|
|
const t = Cesium.Matrix4.getTranslation(e, new Cesium.Cartesian3);
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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;
|
2024-02-28 10:44:18 +08:00
|
|
|
|
let a = e;
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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);
|
2024-02-28 10:44:18 +08:00
|
|
|
|
return {
|
|
|
|
|
lng: n,
|
|
|
|
|
lat: r,
|
|
|
|
|
alt: s,
|
2024-03-01 12:03:28 +08:00
|
|
|
|
angle: [Cesium.Math.toDegrees(c.heading), Cesium.Math.toDegrees(c.pitch), Cesium.Math.toDegrees(c.roll)]
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
getPosition() {
|
|
|
|
|
return this.entity.modelMatrix
|
|
|
|
|
}
|
|
|
|
|
destroy() {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
this.icy.viewer.entities.remove(this.entity),
|
|
|
|
|
this.entity = void 0
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
class A {
|
2024-02-28 10:44:18 +08:00
|
|
|
|
constructor(e) {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
this.name = e,
|
|
|
|
|
this.children = []
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
add(e) {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
if (!e.entity)
|
|
|
|
|
throw "请传入模型";
|
2024-02-28 10:44:18 +08:00
|
|
|
|
this.children.push(e)
|
|
|
|
|
}
|
|
|
|
|
show(e) {
|
|
|
|
|
this.children.forEach((t => {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
t.show(e)
|
|
|
|
|
}
|
|
|
|
|
))
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
move() {
|
|
|
|
|
this.children.map((e => {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
e.entity.position._value.x -= 1
|
|
|
|
|
}
|
|
|
|
|
))
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
destroy(e) {
|
|
|
|
|
this.children.forEach((t => {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
e.viewer.entities.remove(t.entity)
|
|
|
|
|
}
|
|
|
|
|
))
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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
|
|
|
|
|
})
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
destroy() { }
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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)]
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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]
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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
|
|
|
|
|
}
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
, 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
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
}
|
|
|
|
|
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),
|
2024-02-28 10:44:18 +08:00
|
|
|
|
e._handler.setInputAction((function (i) {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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)
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
;
|
|
|
|
|
class U {
|
2024-02-28 10:44:18 +08:00
|
|
|
|
constructor(e) {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
this.icy = e,
|
|
|
|
|
this.fenceList = [],
|
|
|
|
|
this.currentFence = [],
|
|
|
|
|
this.currentEntity = [],
|
|
|
|
|
this.currentState = !1,
|
|
|
|
|
this.currentPolyline,
|
|
|
|
|
this.currentPolygon
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
start() {
|
|
|
|
|
this.currentState = !0;
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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";
|
2024-02-28 10:44:18 +08:00
|
|
|
|
let i = document.createElement("button");
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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函数";
|
2024-02-28 10:44:18 +08:00
|
|
|
|
let r;
|
2024-03-01 12:03:28 +08:00
|
|
|
|
if (this.currentFence.push([e, t, i]),
|
|
|
|
|
r = this.addPoint(e, t, i, z),
|
|
|
|
|
this.currentFence.length > 1) {
|
2024-02-28 10:44:18 +08:00
|
|
|
|
let e = Cesium.Cartesian3.fromDegreesArrayHeights(this.currentFence.flat());
|
|
|
|
|
this.currentPolyline ? this.currentPolyline.polyline.positions = e : this.currentPolyline = this.icy.viewer.entities.add({
|
2024-03-01 12:03:28 +08:00
|
|
|
|
name: '电子围栏',
|
2024-02-28 10:44:18 +08:00
|
|
|
|
polyline: {
|
|
|
|
|
positions: e,
|
|
|
|
|
width: 5,
|
2024-03-01 12:03:28 +08:00
|
|
|
|
height: 3,
|
|
|
|
|
maximumHeights: 10,
|
|
|
|
|
minimumHeights: 0,
|
2024-02-28 10:44:18 +08:00
|
|
|
|
material: new Cesium.Color.fromCssColorString("#00fffb"),
|
2024-03-01 12:03:28 +08:00
|
|
|
|
// clampToGround: !0
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
if (this.currentFence.length > 2) {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
let het = z
|
2024-02-28 10:44:18 +08:00
|
|
|
|
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,
|
2024-03-01 12:04:59 +08:00
|
|
|
|
// material: Cesium.Color.RED,
|
2024-02-28 10:44:18 +08:00
|
|
|
|
material: new Cesium.Color.fromCssColorString("red").withAlpha(.5),
|
2024-03-01 12:03:28 +08:00
|
|
|
|
extrudedHeight: het,
|
|
|
|
|
height: Number(het + 0.1),
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
this.currentEntity.push(r)
|
|
|
|
|
}
|
|
|
|
|
back() {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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()
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
stop() {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
this.currentState ? (this.currentState = !1,
|
|
|
|
|
0 != this.currentFence.length && this.fenceList.push(this.currentFence),
|
|
|
|
|
this.currentFence = []) : console.error("状态已经是停止状态")
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
2024-02-28 10:44:18 +08:00
|
|
|
|
finish() {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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)
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
addPoint(e, t, i, z) {
|
2024-02-28 10:44:18 +08:00
|
|
|
|
let r;
|
|
|
|
|
return r = this.icy.viewer.entities.add({
|
|
|
|
|
position: Cesium.Cartesian3.fromDegrees(e, t, i),
|
|
|
|
|
point: {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
pixelSize: 8,
|
|
|
|
|
extrudedHeight: z,
|
2024-02-28 10:44:18 +08:00
|
|
|
|
color: Cesium.Color.YELLOW,
|
|
|
|
|
disableDepthTestDistance: Number.POSITIVE_INFINITY
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
}),
|
|
|
|
|
r
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
2024-02-28 10:44:18 +08:00
|
|
|
|
update_Polygon() {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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())
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
update_Polyline() {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
if (this.currentEntity.length < 2)
|
|
|
|
|
this.icy.viewer.entities.remove(this.currentPolyline),
|
|
|
|
|
this.currentPolyline = void 0;
|
|
|
|
|
else {
|
2024-02-28 10:44:18 +08:00
|
|
|
|
let e = this.currentFence.flat();
|
|
|
|
|
this.currentPolyline.polyline.positions = Cesium.Cartesian3.fromDegreesArrayHeights(e)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
clear() {
|
|
|
|
|
try {
|
|
|
|
|
this.finish()
|
2024-03-01 12:03:28 +08:00
|
|
|
|
} catch (e) { }
|
2024-02-28 10:44:18 +08:00
|
|
|
|
this.fenceList.map((e => {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
this.icy.viewer.entities.remove(e)
|
|
|
|
|
}
|
|
|
|
|
)),
|
|
|
|
|
this.fenceList = []
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
showDataSource(e, t, i) {
|
|
|
|
|
if (!i) {
|
|
|
|
|
i = 'red'
|
|
|
|
|
}
|
2024-02-28 10:44:18 +08:00
|
|
|
|
let r = e.flat();
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
})
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
show(e) {
|
|
|
|
|
this.qiang.show = e
|
|
|
|
|
}
|
|
|
|
|
destroy() {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
this.icy.viewer.entities.remove(this.qiang),
|
|
|
|
|
this.qiang = void 0
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
2024-02-28 10:44:18 +08:00
|
|
|
|
sout() {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
console.log("本次您绘制的区域经纬度为"),
|
|
|
|
|
console.log(JSON.stringify(this.currentFence))
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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,
|
|
|
|
|
|
|
|
|
|
// })
|
|
|
|
|
}
|
|
|
|
|
})
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
setCurrentIndex(e) {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
// 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');
|
2024-02-28 10:44:18 +08:00
|
|
|
|
this.entity.polyline.positions = new Cesium.CallbackProperty((() => Cesium.Cartesian3.fromDegreesArrayHeights(t.flat())), !1)
|
|
|
|
|
}
|
|
|
|
|
show(e) {
|
|
|
|
|
this.entity.show = e
|
|
|
|
|
}
|
|
|
|
|
destroy() {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
this.icy.viewer.entities.remove(this.entity),
|
|
|
|
|
this.entity = void 0
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
// 动态线材质
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
|
|
|
|
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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)
|
|
|
|
|
});
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
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
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
})
|
|
|
|
|
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
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
show(e) {
|
|
|
|
|
this.entity.show = e
|
2024-03-01 12:03:28 +08:00
|
|
|
|
this.label.show = e
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
destroy() {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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,
|
2024-03-01 12:04:59 +08:00
|
|
|
|
// disableDepthTestDistance: 10000.0,
|
2024-03-01 12:03:28 +08:00
|
|
|
|
outline: true,//设置指定box是否有轮廓的Property 默认false
|
|
|
|
|
outlineColor: Cesium.Color.fromCssColorString('#ffffff'), //设置轮廓线
|
|
|
|
|
}
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
show(e) {
|
|
|
|
|
this.entity.show = e
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
destroy() {
|
|
|
|
|
this.icy.viewer.entities.remove(this.entity),
|
|
|
|
|
this.entity = void 0
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
}
|
|
|
|
|
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,
|
2024-03-01 12:04:59 +08:00
|
|
|
|
// disableDepthTestDistance: 500000,//最高层级显示
|
2024-03-01 12:03:28 +08:00
|
|
|
|
scale: 1
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
this.animate()
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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)
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
show(e) {
|
|
|
|
|
this.entity.show = e
|
|
|
|
|
this.entity1.show = e
|
|
|
|
|
if (e) {
|
|
|
|
|
this.animate()
|
|
|
|
|
} else {
|
|
|
|
|
clearInterval(this.timer)
|
|
|
|
|
}
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
destroy() {
|
|
|
|
|
clearInterval(this.timer)
|
|
|
|
|
this.icy.viewer.entities.remove(this.entity),
|
|
|
|
|
this.entity = void 0
|
2024-02-26 08:47:12 +08:00
|
|
|
|
|
2024-03-01 12:03:28 +08:00
|
|
|
|
this.icy.viewer.entities.remove(this.entity1),
|
|
|
|
|
this.entity1 = void 0
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
class H {
|
2024-02-28 10:44:18 +08:00
|
|
|
|
static {
|
|
|
|
|
function e() {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
I.update(), requestAnimationFrame(e)
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
e()
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
2024-02-28 10:44:18 +08:00
|
|
|
|
constructor(e) {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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,
|
2024-02-26 08:47:12 +08:00
|
|
|
|
|
2024-03-01 12:03:28 +08:00
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
// 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,
|
2024-02-28 10:44:18 +08:00
|
|
|
|
position: Cesium.Cartesian3.fromDegrees(t, i, r),
|
|
|
|
|
billboard: {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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),//缩放倍数
|
2024-02-28 10:44:18 +08:00
|
|
|
|
horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
|
|
|
|
|
verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
|
2024-03-01 12:03:28 +08:00
|
|
|
|
disableDepthTestDistance: 500000,//最高层级显示
|
2024-02-28 10:44:18 +08:00
|
|
|
|
scale: 1
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
uopdateImg(e, type, floor) {
|
2024-02-28 10:44:18 +08:00
|
|
|
|
let t = new Image;
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
move(e, t, i) {
|
|
|
|
|
this.entity.position = Cesium.Cartesian3.fromDegrees(e, t, i)
|
2024-03-01 12:03:28 +08:00
|
|
|
|
this.entity1.position = Cesium.Cartesian3.fromDegrees(e, t, i)
|
|
|
|
|
this.entity2.position = Cesium.Cartesian3.fromDegrees(e, t, i)
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
animationMove(e, t, i, r) {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
// if (this.entity2.show1) {
|
|
|
|
|
// this.entity2.show = e
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
showAlarm(e) {
|
|
|
|
|
this.entity1.show = e
|
|
|
|
|
this.entity1.show1 = e
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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),
|
2024-02-26 08:47:12 +08:00
|
|
|
|
|
2024-03-01 12:03:28 +08:00
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 先画线后画点,防止线压盖点
|
|
|
|
|
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)
|
|
|
|
|
}
|
2024-02-28 10:44:18 +08:00
|
|
|
|
show(e) {
|
|
|
|
|
this.entity.show = e
|
2024-03-01 12:03:28 +08:00
|
|
|
|
this.entity1.show = e
|
|
|
|
|
this.entity2.show = e
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
|
|
|
|
animate() {
|
|
|
|
|
this.entity.billboard.scale > 1.2 ? this.entity.billboard.scale = 1 : this.entity.billboard.scale += .002
|
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-02-26 08:47:12 +08:00
|
|
|
|
|
2024-03-01 12:03:28 +08:00
|
|
|
|
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
|
|
|
|
|
}
|
2024-02-28 10:44:18 +08:00
|
|
|
|
destroy() {
|
2024-03-01 12:03:28 +08:00
|
|
|
|
this.icy.viewer.entities.remove(this.entity),
|
|
|
|
|
this.entity = void 0
|
2024-02-28 10:44:18 +08:00
|
|
|
|
}
|
2024-02-26 08:47:12 +08:00
|
|
|
|
}
|
2024-03-01 12:03:28 +08:00
|
|
|
|
Cesium.Ion.defaultAccessToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIzNzFlNTg1MC0wOTA0LTQzYzYtOTBjZi05MjIzZjU2NTkzZGQiLCJpZCI6MTE4ODE3LCJpYXQiOjE2NzE1MDY2NjF9.yGR3CbS6VQp2s6Y9NHWOIKq8qKL0sWLZZBZ9eP02Ags",
|
|
|
|
|
CustomCesium = t
|
|
|
|
|
}
|
|
|
|
|
)();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-02-26 08:47:12 +08:00
|
|
|
|
|