军标库 模型库

This commit is contained in:
2025-09-24 16:43:40 +08:00
parent 16a04a9a90
commit d20e10644f
2 changed files with 72 additions and 59 deletions

View File

@ -15,7 +15,6 @@ import { setSplitDirection, syncSplitData, setActiveId, getSdk } from '../../../
import { setActiveViewer, closeRotateAround, closeViewFollow } from '../../../../../Global/global'
class Model extends BaseModel {
#timeoutEventObject = null
/**
* @constructor
* @description 加载模型
@ -88,7 +87,8 @@ class Model extends BaseModel {
console.warn("lat is required!")
return
}
if(this.options.earth) {
this._timeoutEventObject = null
if (this.options.earth) {
delete this.options.earth
}
this.picking = true
@ -266,8 +266,8 @@ class Model extends BaseModel {
}, this.entity)
}
this.entity.isMove = true
clearTimeout(this.#timeoutEventObject)
this.#timeoutEventObject = setTimeout(() => {
clearTimeout(this._timeoutEventObject)
this._timeoutEventObject = setTimeout(() => {
this.entity && (this.entity.isMove = false)
}, 500);
})
@ -304,8 +304,8 @@ class Model extends BaseModel {
}, this.entity)
}
this.entity.isMove = true
clearTimeout(this.#timeoutEventObject)
this.#timeoutEventObject = setTimeout(() => {
clearTimeout(this._timeoutEventObject)
this._timeoutEventObject = setTimeout(() => {
this.entity && (this.entity.isMove = false)
}, 500);
@ -321,7 +321,7 @@ class Model extends BaseModel {
this.modelAnimations = this.entity.loader.components.animations
})
}
syncSplitData(this.sdk, this.options.id)
}
@ -462,6 +462,16 @@ class Model extends BaseModel {
this.options.url = this.options.url || ""
}
get name() {
return this.options.name
}
set name(v) {
console.log(v, 'vvvvvvvvv')
this.options.name = v
this.options.label.text = v
this.label && (this.label.text = v)
}
get color() {
return this.options.color
}
@ -1659,8 +1669,8 @@ class Model extends BaseModel {
this.entity.minimumPixelSize = this.scaleByDistance ? undefined : this.options.minimumPixelSize
this.editObj && this.editObj.update()
this.entity.isMove = true
clearTimeout(this.#timeoutEventObject)
this.#timeoutEventObject = setTimeout(() => {
clearTimeout(this._timeoutEventObject)
this._timeoutEventObject = setTimeout(() => {
this.entity && (this.entity.isMove = false)
}, 500);
}

View File

@ -16,7 +16,7 @@ import { setSplitDirection, syncSplitData, setActiveId } from '../../../Global/S
class GroundSvg extends Base {
/**
* @constructor
* @param sdk
* @param sdk
* @description 贴地svg
* @param options {object} 属性
* @param options.id {string} 唯一标识
@ -60,8 +60,8 @@ class GroundSvg extends Base {
* @param options.customView.relativePosition.lat {number} 纬度
* @param options.customView.relativePosition.alt {number} 高度
* */
#loadEvent = void 0
#loaded = false
// #loadEvent = void 0
// #loaded = false
constructor(sdk, options = {}, _Dialog = {}) {
super(sdk, options);
let jsCode = `
@ -79,6 +79,9 @@ class GroundSvg extends Base {
this.loaded = false;
this.ismove = false;
this._loadEvent = void 0
this._loaded = false
if (this.options.position.lat > 83.5) {
this.options.position.lat = 83.5
}
@ -132,23 +135,23 @@ class GroundSvg extends Base {
this._isdrag = false
this._EventBinding = new EventBinding()
if(this.sdk.entityMap.get(this.options.id)) {
if (this.sdk.entityMap.get(this.options.id)) {
return
}
this.sdk.addIncetance(this.options.id, this)
this.picking = true
if (this.options.show) {
setSplitDirection(0, this.options.id)
}
this._entityArray = []
this.init()
}
get type () {
get type() {
return 'GroundSvg'
}
@ -184,15 +187,15 @@ class GroundSvg extends Base {
set show(v) {
if (typeof v === "boolean") {
if (this.options.text && this.options.text.show) {
if(this.text) {
if((!this.showView || this.showView == 3)) {
if (this.text) {
if ((!this.showView || this.showView == 3)) {
this.text.show = v
}
else {
this.text.show = false
}
}
}
super.show = v
} else {
@ -323,7 +326,7 @@ class GroundSvg extends Base {
}
set textValue(v) {
this.options.text.value = v
if(this.text) {
if (this.text) {
this.text.text = v
}
else {
@ -340,7 +343,7 @@ class GroundSvg extends Base {
set textShow(v) {
this.options.text.show = v
if (this.show) {
if((!this.showView || this.showView == 3)) {
if ((!this.showView || this.showView == 3)) {
this.text && (this.text.show = v)
}
else {
@ -399,7 +402,7 @@ class GroundSvg extends Base {
}
set textFontSize(v) {
this.options.text.fontSize = v
if(this.text) {
if (this.text) {
this.text.fontSize = v
this.text.pixelOffset = v
}
@ -729,7 +732,7 @@ class GroundSvg extends Base {
let position = []
let geometry = geometryArray[key].geometry;
let array = geometry.attributes.position.array
for (let i = 0; i < array.length; i += 3) {
let x = array[i] - (max2 / 2)
let y = array[i + 1] + (max2 / 2)
@ -746,8 +749,8 @@ class GroundSvg extends Base {
positions.push([position[i], position[i + 1], position[i + 2]])
}
}
let polygons = []
// 组合多边形
for (let i = 0; i < positions.length; i++) {
@ -756,7 +759,7 @@ class GroundSvg extends Base {
positions[i][0]
]]);
polygons.push(polygon)
if (feature) {
feature = turf.union(feature, polygon);
}
@ -856,7 +859,7 @@ class GroundSvg extends Base {
this.hierarchys.push(array)
});
this.entity = new Cesium.EntityCollection()
syncSplitData(this.sdk, this.options.id)
let perPositionHeight = false
if (this.sdk.viewer._element.className === 'cesium-viewer 2d') {
@ -866,7 +869,7 @@ class GroundSvg extends Base {
for (let m = 0; m < this.hierarchys[i].length; m++) {
let id = this.options.id + `-${i}_${m}}`
let oldEntity = this.sdk.viewer.entities.getById(id)
if(oldEntity) {
if (oldEntity) {
this.sdk.viewer.entities.remove(oldEntity)
}
let entity = this.sdk.viewer.entities.add({
@ -908,9 +911,9 @@ class GroundSvg extends Base {
}
}
this.loaded = true
this.#loaded = true
if (this.#loadEvent) {
this.#loadEvent()
this._loaded = true
if (this._loadEvent) {
this._loadEvent()
}
this.scale = this.scale
GroundSvg.createText(this)
@ -954,7 +957,7 @@ class GroundSvg extends Base {
* @param {boolean} status=false 状态
*/
async edit(state) {
if (!this.#loaded) {
if (!this._loaded) {
return
}
this.originalOptions = this.deepCopyObj(this.options)
@ -1210,7 +1213,7 @@ class GroundSvg extends Base {
* 重置
*/
reset() {
if (!this.#loaded) {
if (!this._loaded) {
return
}
this.options = this.deepCopyObj(this.originalOptions)
@ -1238,7 +1241,7 @@ class GroundSvg extends Base {
* @param {boolean} status=false 状态
*/
drag(status, cd) {
if (!this.#loaded || !this.sdk || !this.sdk.viewer) {
if (!this._loaded || !this.sdk || !this.sdk.viewer) {
return
}
this.ismove = false
@ -1321,26 +1324,26 @@ class GroundSvg extends Base {
angleH = bearing2 - bearingH
if ((angleW > -360 && angleW < -90) || (angleW < 360 && angleW > 90)) {
angleW = angleW + 180
flag=true
flag = true
}
if ((angleH > -360 && angleH < -90) || (angleH < 360 && angleH > 90)) {
angleH = angleH + 180
flag2=true
flag2 = true
}
if(flag && flag2) {
if (flag && flag2) {
this.pointEntityCollection.values[1].point.color = Cesium.Color.fromCssColorString('#00ff0a')
this.pointEntityCollection.values[3].point.color = Cesium.Color.fromCssColorString('#00ff0a')
this.pointEntityCollection.values[7].point.color = Cesium.Color.fromCssColorString('#00ff0a')
this.pointEntityCollection.values[9].point.color = Cesium.Color.fromCssColorString('#ff0000')
}
else {
if(flag) {
if (flag) {
this.pointEntityCollection.values[1].point.color = Cesium.Color.fromCssColorString('#00ff0a')
this.pointEntityCollection.values[3].point.color = Cesium.Color.fromCssColorString('#ff0000')
this.pointEntityCollection.values[7].point.color = Cesium.Color.fromCssColorString('#00ff0a')
this.pointEntityCollection.values[9].point.color = Cesium.Color.fromCssColorString('#00ff0a')
}
else if(flag2) {
else if (flag2) {
this.pointEntityCollection.values[1].point.color = Cesium.Color.fromCssColorString('#00ff0a')
this.pointEntityCollection.values[3].point.color = Cesium.Color.fromCssColorString('#00ff0a')
this.pointEntityCollection.values[7].point.color = Cesium.Color.fromCssColorString('#ff0000')
@ -1393,26 +1396,26 @@ class GroundSvg extends Base {
if ((angleW > -360 && angleW < -90) || (angleW < 360 && angleW > 90)) {
angleW = angleW + 180
flag=true
flag = true
}
if ((angleH > -360 && angleH < -90) || (angleH < 360 && angleH > 90)) {
angleH = angleH + 180
flag2=true
flag2 = true
}
if(flag && flag2) {
if (flag && flag2) {
this.pointEntityCollection.values[1].point.color = Cesium.Color.fromCssColorString('#00ff0a')
this.pointEntityCollection.values[3].point.color = Cesium.Color.fromCssColorString('#00ff0a')
this.pointEntityCollection.values[7].point.color = Cesium.Color.fromCssColorString('#ff0000')
this.pointEntityCollection.values[9].point.color = Cesium.Color.fromCssColorString('#00ff0a')
}
else {
if(flag) {
if (flag) {
this.pointEntityCollection.values[1].point.color = Cesium.Color.fromCssColorString('#ff0000')
this.pointEntityCollection.values[3].point.color = Cesium.Color.fromCssColorString('#00ff0a')
this.pointEntityCollection.values[7].point.color = Cesium.Color.fromCssColorString('#00ff0a')
this.pointEntityCollection.values[9].point.color = Cesium.Color.fromCssColorString('#00ff0a')
}
else if(flag2) {
else if (flag2) {
this.pointEntityCollection.values[1].point.color = Cesium.Color.fromCssColorString('#00ff0a')
this.pointEntityCollection.values[3].point.color = Cesium.Color.fromCssColorString('#00ff0a')
this.pointEntityCollection.values[7].point.color = Cesium.Color.fromCssColorString('#00ff0a')
@ -1597,11 +1600,11 @@ class GroundSvg extends Base {
this.ScreenSpaceEventHandler.setInputAction((movement) => {
this.drag(false)
if (!this._DialogObject) {
cd && cd(this.options)
syncData(this.sdk, this.options.id)
syncSplitData(this.sdk, this.options.id)
}
// if (!this._DialogObject) {
cd && cd(this.options)
syncData(this.sdk, this.options.id)
syncSplitData(this.sdk, this.options.id)
// }
}, Cesium.ScreenSpaceEventType.RIGHT_CLICK)
this.pointEntityCollection = new Cesium.EntityCollection()
@ -1628,7 +1631,7 @@ class GroundSvg extends Base {
controlPoints[9] = turf.destination(point, wh, 0 + angle, options).geometry.coordinates
this.controlPoints = controlPoints
if(!this.sdk || !this.sdk.viewer) {
if (!this.sdk || !this.sdk.viewer) {
return
}
for (let i = 0; i < this.controlPoints.length; i++) {
@ -1706,7 +1709,7 @@ class GroundSvg extends Base {
}
_updateGeojson(data, x, y) {
if (!this.#loaded) {
if (!this._loaded) {
return
}
let width = Math.abs(this.bbox[0] - this.bbox[2])
@ -1727,7 +1730,7 @@ class GroundSvg extends Base {
}
_update() {
if (!this.#loaded) {
if (!this._loaded) {
return
}
let point = turf.point([this.position.lng, this.position.lat]);
@ -2110,22 +2113,22 @@ class GroundSvg extends Base {
}
load(callback) {
if (this.#loaded) {
if (this._loaded) {
callback();
}
else {
this.#loadEvent = callback
this._loadEvent = callback
}
}
async remove() {
this._worker.onmessage = (event) => {}
this._worker.onmessage = (event) => { }
await this.sdk.removeIncetance(this.options.id)
if (!this.entity) {
return
}
this.drag(false)
if(!this.sdk || !this.sdk.viewer) {
if (!this.sdk || !this.sdk.viewer) {
return
}
this.sdk.viewer.entities.remove(this.entity)
@ -2137,7 +2140,7 @@ class GroundSvg extends Base {
this._DialogObject.close()
this._DialogObject = null
}
await syncData(this.sdk, this.options.id)
}
@ -2235,7 +2238,7 @@ class GroundSvg extends Base {
else {
let array = []
for (let i = 0; i < this.controlPoints.length; i++) {
let height = await this.getClampToHeight({lng: this.controlPoints[i][0], lat: this.controlPoints[i][1]})
let height = await this.getClampToHeight({ lng: this.controlPoints[i][0], lat: this.controlPoints[i][1] })
let cartesian = Cesium.Cartesian3.fromDegrees(this.controlPoints[i][0], this.controlPoints[i][1], height)
array.push(cartesian.x, cartesian.y, cartesian.z)
}
@ -2252,4 +2255,4 @@ class GroundSvg extends Base {
}
}
export default GroundSvg
export default GroundSvg