From d20db7c91b4d3534c8aa3a339a3dbd612bd2b496 Mon Sep 17 00:00:00 2001
From: zh <972939975@qq.com>
Date: Mon, 8 Sep 2025 17:27:42 +0800
Subject: [PATCH] =?UTF-8?q?=E5=90=88=E5=B9=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Base/BaseSource/BaseLayer/Layer/index.js | 32 +-
.../Base/BaseSource/BaseTileset/BIM/index.js | 1 +
.../BaseSource/BaseTileset/Tileset/index.js | 3 +-
src/Obj/Base/BaseSource/BaseTileset/index.js | 27 +-
src/Obj/Base/CircleObject/index.js | 593 +++---------------
src/Obj/Base/index.js | 9 +-
src/YJEarth/index.js | 37 ++
7 files changed, 154 insertions(+), 548 deletions(-)
diff --git a/src/Obj/Base/BaseSource/BaseLayer/Layer/index.js b/src/Obj/Base/BaseSource/BaseLayer/Layer/index.js
index 5e32de9..ab904f7 100644
--- a/src/Obj/Base/BaseSource/BaseLayer/Layer/index.js
+++ b/src/Obj/Base/BaseSource/BaseLayer/Layer/index.js
@@ -16,7 +16,7 @@ class Layer extends BaseLayer {
super(sdk, options)
this.object = {}
this.options.host = this.options.host || getHost()
-
+ this.on()
}
get type() {
@@ -24,21 +24,7 @@ class Layer extends BaseLayer {
}
on() {
- return this.add()
- }
-
-
- async add() {
- let res = await this.requestResource()
- let text = await res.text()
- text = JSON.parse(text)
- if ([0, 200].includes(text.code)) {
- return this.loadLayer(text.data)
- } else {
- return new Promise((res, reject) => {
- reject(text.msg || text.message)
- })
- }
+ return this.loadLayer(this.options)
}
async loadLayer(data) {
@@ -64,11 +50,11 @@ class Layer extends BaseLayer {
Cesium.Math.toRadians(this.object.north)
),
}
- // if (this.object.scheme_name === "GeographicTilingScheme") {
+ // if (this.object.schemaName === "GeographicTilingScheme") {
// console.log("添加GeographicTilingScheme")
// params.tilingScheme = new Cesium.GeographicTilingScheme()
// }
- // if (this.object.scheme_name === "amapMercatorTilingScheme") {
+ // if (this.object.schemaName === "amapMercatorTilingScheme") {
// console.log("添加amapMercatorTilingScheme")
// params.tilingScheme = this.amapMercatorTilingScheme()
// }
@@ -80,19 +66,19 @@ class Layer extends BaseLayer {
// } else {
// tms = new Cesium.UrlTemplateImageryProvider(params)
// }
- switch (this.object.scheme_name) {
+ switch (this.object.schemaName) {
case "amapMercatorTilingScheme":
params.tilingScheme = this.amapMercatorTilingScheme()
break;
case "":
break;
default:
- params.tilingScheme = new Cesium[this.object.scheme_name]()
+ params.tilingScheme = new Cesium[this.object.schemaName]()
break;
}
switch (this.object.load_method) {
case "tms":
- if(this.object.url.endsWith("tilemapresource.xml")){
+ if (this.object.url.endsWith("tilemapresource.xml")) {
let arr = this.object.url.split("/")
arr.pop()
let url = arr.join("/")
@@ -116,7 +102,7 @@ class Layer extends BaseLayer {
break;
}
- if(!this.sdk || !this.sdk.viewer) {
+ if (!this.sdk || !this.sdk.viewer) {
return
}
if (this.options.hasOwnProperty("layer_index")) {
@@ -137,7 +123,7 @@ class Layer extends BaseLayer {
this.alpha = this.options.alpha
this.brightness = this.options.brightness
- if(this.options.show) {
+ if (this.options.show) {
setSplitDirection(0, this.options.id)
}
}
diff --git a/src/Obj/Base/BaseSource/BaseTileset/BIM/index.js b/src/Obj/Base/BaseSource/BaseTileset/BIM/index.js
index 9284580..c65053a 100644
--- a/src/Obj/Base/BaseSource/BaseTileset/BIM/index.js
+++ b/src/Obj/Base/BaseSource/BaseTileset/BIM/index.js
@@ -46,6 +46,7 @@ class BIM extends BaseTileset {
this.exportProperty(this.exportStateArray)
}
this.features = new Map()
+ this.on()
}
get type() {
diff --git a/src/Obj/Base/BaseSource/BaseTileset/Tileset/index.js b/src/Obj/Base/BaseSource/BaseTileset/Tileset/index.js
index 6fa7d40..c98c9a3 100644
--- a/src/Obj/Base/BaseSource/BaseTileset/Tileset/index.js
+++ b/src/Obj/Base/BaseSource/BaseTileset/Tileset/index.js
@@ -32,6 +32,7 @@ class Tileset extends BaseTileset {
constructor(earth, options = {}, _Dialog = {}) {
super(earth, options)
this.picking = false
+ this.on()
this.Dialog = _Dialog
this._elms = {};
this._EventBinding = new EventBinding()
@@ -42,7 +43,7 @@ class Tileset extends BaseTileset {
}
on() {
- return this.add()
+ return this.loadTileset(this.options)
}
get name() {
diff --git a/src/Obj/Base/BaseSource/BaseTileset/index.js b/src/Obj/Base/BaseSource/BaseTileset/index.js
index 391ea28..07bf164 100644
--- a/src/Obj/Base/BaseSource/BaseTileset/index.js
+++ b/src/Obj/Base/BaseSource/BaseTileset/index.js
@@ -74,31 +74,6 @@ class BaseTileset extends BaseSource {
this.editObj.controllerCallBack = this.rotationEditingCallBack
}
- async add() {
- if (this.options.url) {
- return this.loadTileset({
- url: this.options.url
- })
- } else {
- let res = await this.requestResource()
- let text = await res.text()
- text = JSON.parse(text)
- if ([0, 200].includes(text.code)) {
- if (text.data.url.length)
- return this.loadTileset(text.data)
- else
- return new Promise((res, reject) => {
- reject('资源不存在')
- })
- } else {
- return new Promise((res, reject) => {
- reject(text.msg || text.message)
- })
- }
- }
-
- }
-
loadSceneTree() {
}
@@ -469,7 +444,7 @@ class BaseTileset extends BaseSource {
on() {
- return this.add()
+ return this.loadTileset(this.options)
}
setDefaultValue() {
diff --git a/src/Obj/Base/CircleObject/index.js b/src/Obj/Base/CircleObject/index.js
index a9a2bf9..4a2598c 100644
--- a/src/Obj/Base/CircleObject/index.js
+++ b/src/Obj/Base/CircleObject/index.js
@@ -33,7 +33,6 @@ class CircleObject extends Base {
* @param options.line.width=3 {number} 边框宽
* @param options.line.color="#ff000080" {string} 边框颜色
* @param options.heightMode=2{number} 高度模式(0:海拔高度;1:相对地表;2:依附模式)
- * @param options.areaUnit='平方米' {string} 面积单位
* @param options.customView {object} 默认视角
* @param options.customView.orientation {object} 默认视角方位
* @param options.customView.orientation.heading {number} 航向角
@@ -87,7 +86,6 @@ class CircleObject extends Base {
this.options.line = options.line || {}
this.options.line.width = ((this.options.line.width || this.options.line.width === 0) ? this.options.line.width : 3)
this.options.line.color = this.options.line.color || 'rgba(255, 0, 0, 1)'
- this.options['area-unit'] = options['area-unit'] || '平方米'
options.label = options.label || {}
this._elms = {};
this.options.label = {
@@ -108,13 +106,13 @@ class CircleObject extends Base {
this.options.attribute = options.attribute || {}
this.options.attribute.link = this.options.attribute.link || {}
this.options.attribute.link.content = this.options.attribute.link.content || []
- this.options.attribute.vr = this.options.attribute.vr || {}
- this.options.attribute.vr.content = this.options.attribute.vr.content || []
- this.options.attribute.camera = this.options.attribute.camera || {}
- this.options.attribute.camera.content = this.options.attribute.camera.content || []
- this.options.attribute.goods = this.options.attribute.goods || {}
- this.options.attribute.goods.content = this.options.attribute.goods.content || []
- this.options.attributeType = options.attributeType || 'richText'
+
+ delete this.options.attribute.camera
+ delete this.options.attribute.vr
+ delete this.options.attribute.goods
+
+
+
this.event = new MouseEvent(this.sdk)
this.nodePoints = []
this.operate = {}
@@ -140,7 +138,7 @@ class CircleObject extends Base {
return
}
let heightModeName = ''
- CircleObject.closeNodeEdit(this)
+ this.closeNodeEdit()
let ground = false
let disabled = false
this.renewPositions()
@@ -330,45 +328,6 @@ class CircleObject extends Base {
})
}
- get area() {
- return this.options.area
- }
-
- set area(v) {
- this.options.area = v
- this._elms.area && this._elms.area.forEach((item) => {
- item.value = v
- })
- }
-
- get areaUnit() {
- return this.options['area-unit']
- }
- set areaUnit(v) {
- this.options['area-unit'] = v
- this._elms.areaUnit && this._elms.areaUnit.forEach((item) => {
- item.value = v
- })
- if (this.options.areaByMeter) {
- switch (v) {
- case '平方米':
- this.area = this.options.areaByMeter
- break;
- case '平方千米':
- this.area = Number((this.options.areaByMeter / 1000000).toFixed(8))
- break;
- case '亩':
- this.area = Number((this.options.areaByMeter / 666.6666667).toFixed(4))
- break;
- case '公顷':
- this.area = Number((this.options.areaByMeter / 10000).toFixed(6))
- break;
- default:
- this.area = this.options.areaByMeter
- }
- }
- }
-
get labelShow() {
return this.options.label.show
}
@@ -580,320 +539,6 @@ class CircleObject extends Base {
}
}
- get attributeType() {
- return this.options.attributeType
- }
-
- set attributeType(v) {
- this.options.attributeType = v
- this._elms.attributeType && this._elms.attributeType.forEach((item) => {
- item.value = v
- })
- let attributeContent = this._DialogObject._element.content.getElementsByClassName('attribute-content')
- for (let i = 0; i < attributeContent.length; i++) {
- if (attributeContent[i].className.indexOf('attribute-content-' + v) > -1) {
- attributeContent[i].style.display = 'block';
- }
- else {
- attributeContent[i].style.display = 'none';
- }
- }
- }
-
- get attributeLink() {
- return this.options.attribute.link.content
- }
-
- set attributeLink(v) {
- this.options.attribute.link.content = v
- if (!this._DialogObject || !this._DialogObject._element || !this._DialogObject._element.content || this._DialogObject._element.content.getElementsByClassName('attribute-content-link').length == 0) {
- return
- }
- let table = this._DialogObject._element.content.getElementsByClassName('attribute-content-link')[1].getElementsByClassName('table')[0]
- let tableContent = table.getElementsByClassName('table-body')[0]
- tableContent.innerHTML = ''
- if (this.options.attribute.link.content.length > 0) {
- table.getElementsByClassName('table-empty')[0].style.display = 'none'
- }
- else {
- table.getElementsByClassName('table-empty')[0].style.display = 'flex'
- }
- for (let i = 0; i < this.options.attribute.link.content.length; i++) {
- let tr = `
-
-
` + this.options.attribute.link.content[i].name + `
-
` + this.options.attribute.link.content[i].url + `
-
-
-
-
-
`
- let trElm = document.createRange().createContextualFragment(tr)
- tableContent.appendChild(trElm)
- }
- let item = tableContent.getElementsByClassName('tr')
- let fun = {
- linkEdit: async (index) => {
- this.attributeLink = await this.options.attribute.link.content
- let table = this._DialogObject._element.content.getElementsByClassName('attribute-content-link')[1].getElementsByClassName('table')[0]
- let tableContent = table.getElementsByClassName('table-body')[0]
- let item = tableContent.getElementsByClassName('tr')
- for (let i = 0; i < item.length; i++) {
- if (index === i) {
- let height = item[i].offsetHeight
- let html = `
-
-
-
-
-
-
-
-
-
-
`
- item[i].innerHTML = html
- let textareaElm = item[i].getElementsByClassName('link-edit')[0]
- textareaElm.style.height = (height - 10) + 'px'
- let td = item[i].getElementsByClassName('td')
- td[0].getElementsByClassName('input')[0].value = this.options.attribute.link.content[index].name
- td[1].getElementsByClassName('input')[0].value = this.options.attribute.link.content[index].url
- let btn = item[i].getElementsByTagName('button')
- for (let n = 0; n < btn.length; n++) {
- if (!btn[n] || !btn[n].attributes) {
- continue
- }
- for (let m of btn[n].attributes) {
- if (m.name === '@click') {
- btn[n].addEventListener('click', (e) => {
- if (typeof (fun[m.value]) === 'function') {
- fun[m.value]({ name: td[0].getElementsByClassName('input')[0].value, url: td[1].getElementsByClassName('input')[0].value }, i)
- }
- });
- btn[n].attributes.removeNamedItem(m.name)
- break
- }
- }
- }
- break
- }
- }
- },
- linkDelete: (i) => {
- this.options.attribute.link.content.splice(i, 1)
- this.attributeLink = this.options.attribute.link.content
- },
-
- confirmEdit: (value, i) => {
- let name = value.name && value.name.replace(/\s/g, "")
- let url = value.url && value.url.replace(/\s/g, "")
- if (name && url) {
- this.options.attribute.link.content[i] = value
- }
- else {
- window.ELEMENT && window.ELEMENT.Message({
- message: '名称或链接不能为空!',
- type: 'warning',
- duration: 1500
- });
- }
- this.attributeLink = this.options.attribute.link.content
- },
- cancelEdit: () => {
- this.attributeLink = this.options.attribute.link.content
- },
- fileSelect: (value, i) => {
- let fileElm = item[i].getElementsByClassName('file-select')[0]
- fileElm.click()
- fileElm.removeEventListener('change', fileSelect)
- fileElm.addEventListener('change', fileSelect)
- }
- }
- let fileSelect = (event) => {
- if (event.target.value) {
- let td = item[event.target.getAttribute('index')].getElementsByClassName('td')
- td[1].getElementsByClassName('input')[0].value = event.target.value
- event.target.value = null
- }
- }
- for (let i = 0; i < item.length; i++) {
- let btn = item[i].getElementsByTagName('button')
- for (let n = 0; n < btn.length; n++) {
- if (!btn[n] || !btn[n].attributes) {
- continue
- }
- for (let m of btn[n].attributes) {
- if (m.name === '@click') {
- btn[n].addEventListener('click', (e) => {
- if (typeof (fun[m.value]) === 'function') {
- fun[m.value](i)
- }
- });
- btn[n].attributes.removeNamedItem(m.name)
- break
- }
- }
- }
- }
-
-
-
-
- }
-
- get attributeCamera() {
- return this.options.attribute.camera.content
- }
-
- set attributeCamera(v) {
- this.options.attribute.camera.content = v
- }
-
- get attributeVr() {
- return this.options.attribute.vr.content
- }
-
- set attributeVr(v) {
- this.options.attribute.vr.content = v
- if (!this._DialogObject || !this._DialogObject._element || !this._DialogObject._element.content || this._DialogObject._element.content.getElementsByClassName('attribute-content-vr').length == 0) {
- return
- }
- let table = this._DialogObject._element.content.getElementsByClassName('attribute-content-vr')[1].getElementsByClassName('table')[0]
- let tableContent = table.getElementsByClassName('table-body')[0]
- tableContent.innerHTML = ''
- if (this.options.attribute.vr.content.length > 0) {
- table.getElementsByClassName('table-empty')[0].style.display = 'none'
- }
- else {
- table.getElementsByClassName('table-empty')[0].style.display = 'flex'
- }
- for (let i = 0; i < this.options.attribute.vr.content.length; i++) {
- let tr = `
-
-
` + this.options.attribute.vr.content[i].name + `
-
` + this.options.attribute.vr.content[i].url + `
-
-
-
-
-
`
- let trElm = document.createRange().createContextualFragment(tr)
- tableContent.appendChild(trElm)
- }
- let item = tableContent.getElementsByClassName('tr')
- let fun = {
- vrEdit: async (index) => {
- this.attributeVr = await this.options.attribute.vr.content
- let table = this._DialogObject._element.content.getElementsByClassName('attribute-content-vr')[1].getElementsByClassName('table')[0]
- let tableContent = table.getElementsByClassName('table-body')[0]
- let item = tableContent.getElementsByClassName('tr')
- for (let i = 0; i < item.length; i++) {
- if (index === i) {
- let height = item[i].offsetHeight
- let html = `
-
-
-
-
-
-
-
-
-
-
`
- item[i].innerHTML = html
- let textareaElm = item[i].getElementsByClassName('link-edit')[0]
- textareaElm.style.height = (height - 10) + 'px'
- let td = item[i].getElementsByClassName('td')
- td[0].getElementsByClassName('input')[0].value = this.options.attribute.vr.content[index].name
- td[1].getElementsByClassName('input')[0].value = this.options.attribute.vr.content[index].url
- let btn = item[i].getElementsByTagName('button')
- for (let n = 0; n < btn.length; n++) {
- if (!btn[n] || !btn[n].attributes) {
- continue
- }
- for (let m of btn[n].attributes) {
- if (m.name === '@click') {
- btn[n].addEventListener('click', (e) => {
- if (typeof (fun[m.value]) === 'function') {
- fun[m.value]({ name: td[0].getElementsByClassName('input')[0].value, url: td[1].getElementsByClassName('input')[0].value }, i)
- }
- });
- btn[n].attributes.removeNamedItem(m.name)
- break
- }
- }
- }
- break
- }
- }
- },
- vrDelete: (i) => {
- this.options.attribute.vr.content.splice(i, 1)
- this.attributeVr = this.options.attribute.vr.content
- },
-
- confirmEdit: (value, i) => {
- let name = value.name && value.name.replace(/\s/g, "")
- let url = value.url && value.url.replace(/\s/g, "")
- if (name && url) {
- this.options.attribute.vr.content[i] = value
- }
- else {
- window.ELEMENT && window.ELEMENT.Message({
- message: '名称或链接不能为空!',
- type: 'warning',
- duration: 1500
- });
- }
- this.attributeVr = this.options.attribute.vr.content
- },
- cancelEdit: () => {
- this.attributeVr = this.options.attribute.vr.content
- },
- fileSelect: (value, i) => {
- let fileElm = item[i].getElementsByClassName('file-select')[0]
- fileElm.click()
- fileElm.removeEventListener('change', fileSelect)
- fileElm.addEventListener('change', fileSelect)
- }
- }
- let fileSelect = (event) => {
- if (event.target.value) {
- let td = item[event.target.getAttribute('index')].getElementsByClassName('td')
- td[1].getElementsByClassName('input')[0].value = event.target.value
- event.target.value = null
- }
- }
- for (let i = 0; i < item.length; i++) {
- let btn = item[i].getElementsByTagName('button')
- for (let n = 0; n < btn.length; n++) {
- if (!btn[n] || !btn[n].attributes) {
- continue
- }
- for (let m of btn[n].attributes) {
- if (m.name === '@click') {
- btn[n].addEventListener('click', (e) => {
- if (typeof (fun[m.value]) === 'function') {
- fun[m.value](i)
- }
- });
- btn[n].attributes.removeNamedItem(m.name)
- break
- }
- }
- }
- }
- }
-
- get attributeGoods() {
- return this.options.attribute.goods.content
- }
-
- set attributeGoods(v) {
- this.options.attribute.goods.content = v
- }
-
static create(that) {
let fromDegreesArray = that.createCircle(that.options.center, that.options.radius)
let ground
@@ -914,9 +559,10 @@ class CircleObject extends Base {
ground = true
break
}
- if (!that.options.label.position) {
- that.options.label.position = { lng: that.options.center.lng, lat: that.options.center.lat, alt: that.options.center.alt + height }
- }
+ // if (!that.options.label.position) {
+ // that.options.label.position = { lng: that.options.center.lng, lat: that.options.center.lat, alt: that.options.center.alt + height }
+ // }
+ that.options.label.position = { lng: that.options.center.lng, lat: that.options.center.lat, alt: that.options.center.alt + height }
let material = Cesium.Color.fromCssColorString(that.options.color)
if (that.sdk.viewer.scene.mode === 2) {
@@ -930,7 +576,7 @@ class CircleObject extends Base {
for (let i = 0; i < fromDegreesArray.length; i += 2) {
fromDegreesArray2.push(fromDegreesArray[i], fromDegreesArray[i + 1], that.options.center.alt + height)
}
- that.options.label.ground = ground
+ // that.options.label.ground = ground
that.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray2)
positionsA = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray)
that.entity = that.sdk.viewer.entities.add({
@@ -953,23 +599,8 @@ class CircleObject extends Base {
})
that.sdk._entityZIndex++
CircleObject.createLabel(that)
- that.options.areaByMeter = Number((Cesium.Math.PI * that.options.radius * that.options.radius).toFixed(2));
- switch (that.options['area-unit']) {
- case '平方米':
- that.options.area = that.options.areaByMeter
- break;
- case '平方千米':
- that.options.area = Number((that.options.areaByMeter / 1000000).toFixed(8))
- break;
- case '亩':
- that.options.area = Number((that.options.areaByMeter / 666.6666667).toFixed(4))
- break;
- case '公顷':
- that.options.area = Number((that.options.areaByMeter / 10000).toFixed(6))
- break;
- default:
- that.options.area = that.options.areaByMeter
- }
+ that.areaByMeter = Number((Cesium.Math.PI * that.options.radius * that.options.radius).toFixed(2));
+ that.areaChangeCallBack && that.areaChangeCallBack()
syncData(that.sdk, that.options.id)
if (that.options.show) {
@@ -995,12 +626,12 @@ class CircleObject extends Base {
scaleByDistance: that.options.label.scaleByDistance,
near: that.options.label.near,
far: that.options.label.far,
- ground: that.options.label.ground,
})
}
// 编辑框
async edit(state) {
+ return
let _this = this
this.originalOptions = this.deepCopyObj(this.options)
@@ -1492,8 +1123,6 @@ class CircleObject extends Base {
this.name = this.originalOptions.name
this.radius = this.originalOptions.radius
this.color = this.originalOptions.color
- this.area = this.originalOptions.area
- this.areaUnit = this.originalOptions['area-unit']
this.labelShow = this.originalOptions.label.show
this.labelFontSize = this.originalOptions.label.fontSize
this.labelFontFamily = this.originalOptions.label.fontFamily
@@ -1509,12 +1138,6 @@ class CircleObject extends Base {
this.lineColor = this.originalOptions.line.color
this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0]
this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1]
- this.attributeLink = this.options.attribute.link.content
- this.attributeVr = this.options.attribute.vr.content
- this.attributeCamera = this.options.attribute.camera.content
- this.attributeGoods = this.options.attribute.goods.content
- this.cameraSelect && this.cameraSelect()
- this.goodsSelect && this.goodsSelect()
this.heightMode = this.originalOptions.heightMode
@@ -1554,51 +1177,6 @@ class CircleObject extends Base {
await syncData(this.sdk, this.options.id)
}
- _addLink() {
- // document.getElementsByClassName
- if (this._DialogObject._element.content.getElementsByClassName('link_add')[0].value) {
- this.options.attribute.link.content.push({
- name: '链接',
- url: this._DialogObject._element.content.getElementsByClassName('link_add')[0].value
- })
- this._DialogObject._element.content.getElementsByClassName('link_add')[0].value = ''
- this.attributeLink = this.options.attribute.link.content
- }
- else {
- this.Dialog.clickAddLink && this.Dialog.clickAddLink()
- }
- }
-
- addAttributeLink(link) {
- this.options.attribute.link.content.push({
- name: '链接',
- url: link
- })
- this.attributeLink = this.options.attribute.link.content
- }
-
- _addRr() {
- if (this._DialogObject._element.content.getElementsByClassName('vr_add')[0].value) {
- this.options.attribute.vr.content.push({
- name: '全景图' ,
- url: this._DialogObject._element.content.getElementsByClassName('vr_add')[0].value
- })
- this._DialogObject._element.content.getElementsByClassName('vr_add')[0].value = ''
- this.attributeVr = this.options.attribute.vr.content
- }
- else {
- this.Dialog.clickAddVr && this.Dialog.clickAddVr()
- }
- }
-
- addAttributeRr(vr) {
- this.options.attribute.vr.content.push({
- name: '全景图' ,
- url: vr
- })
- this.attributeVr = this.options.attribute.vr.content
- }
-
/**
* 飞到
*/
@@ -1803,6 +1381,11 @@ class CircleObject extends Base {
positions: { ...this.options.center }
}
this.positionEditing = false
+
+ if(this._positionEditingCallback) {
+ this._positionEditingCallback()
+ this._positionEditingCallback = null
+ }
})
this.event.mouse_right((movement, cartesian) => {
this.positionEditing = false
@@ -1866,88 +1449,104 @@ class CircleObject extends Base {
return this.operate.positionEditing
}
- static nodeEdit(that, cb = () => { }) {
- that.positionEditing = false
+ openPositionEditing(cd) {
+ this.positionEditing = true
+ this._positionEditingCallback = cd
+ }
+
+ get areaChangeCallBack() {
+ return this._areaChangeCallBack
+ }
+
+ set areaChangeCallBack (cd) {
+ this._areaChangeCallBack = cd
+ }
+
+ nodeEdit(cb = () => { }) {
+ this.positionEditing = false
if (YJ.Measure.GetMeasureStatus()) {
} else {
- that.event && that.event.destroy()
- that.event = new MouseEvent(that.sdk)
+ let _this = this
+ this.event && this.event.destroy()
+ this.event = new MouseEvent(this.sdk)
YJ.Measure.SetMeasureStatus(true)
- that.tip = new MouseTip('左键确认,右键取消', that.sdk)
- that.event = new MouseEvent(that.sdk)
- that.nodePoints = []
+ this.tip = new MouseTip('左键确认,右键取消', this.sdk)
+ this.event = new MouseEvent(this.sdk)
+ this.nodePoints = []
let selectPoint
let originalPosition
let newpositions = []
let fromDegreesArray = []
- let endpoint = { ...that.options.center }
+ let endpoint = { ...this.options.center }
let moveRadius = null
let entity
- fromDegreesArray = that.createCircle(that.options.center, that.options.radius)
+ fromDegreesArray = this.createCircle(this.options.center, this.options.radius)
- that.entity.polyline.clampToGround = true
- that.entity.polyline.arcType = Cesium.ArcType.GEODESIC
- that.entity.polygon.perPositionHeight = false
- that.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {
+ this.entity.polyline.clampToGround = true
+ this.entity.polyline.arcType = Cesium.ArcType.GEODESIC
+ this.entity.polygon.perPositionHeight = false
+ this.entity.polygon.hierarchy = new Cesium.CallbackProperty(function () {
return new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArray(fromDegreesArray))
}, false)
- that.entity.polyline.positions = new Cesium.CallbackProperty(function () {
+ this.entity.polyline.positions = new Cesium.CallbackProperty(function () {
return Cesium.Cartesian3.fromDegreesArray(fromDegreesArray)
}, false)
setTimeout(() => {
- let objectsToExclude = [...that.sdk.viewer.entities.values]
- that
+ let objectsToExclude = [...this.sdk.viewer.entities.values]
+ this
.getClampToHeight({
- lng: that.options.center.lng,
- lat: that.options.center.lat
+ lng: this.options.center.lng,
+ lat: this.options.center.lat
}, objectsToExclude)
.then(height => {
- that.label.position = [
- that.options.center.lng,
- that.options.center.lat,
+ this.label.position = [
+ this.options.center.lng,
+ this.options.center.lat,
height
]
})
}, 50);
setTimeout(() => {
- that.event.mouse_left((movement, cartesian) => {
+ this.event.mouse_left((movement, cartesian) => {
if (entity) {
- that.sdk.viewer.entities.remove(entity)
+ this.sdk.viewer.entities.remove(entity)
entity = null
}
- endpoint = that.cartesian3Towgs84(cartesian, that.viewer)
- let radius = that.computeDistance2([that.options.center, endpoint])
- that.radius = radius
+ endpoint = this.cartesian3Towgs84(cartesian, this.viewer)
+ let radius = this.computeDistance2([this.options.center, endpoint])
+ this.radius = radius
YJ.Measure.SetMeasureStatus(false)
- that.event.destroy()
- that.tip.destroy()
+ this.event.destroy()
+ this.tip.destroy()
- that.heightMode = that.heightMode
+ this.heightMode = this.heightMode
+
+ cb('', {...this.options.center})
})
- that.event.mouse_right((movement, cartesian) => {
+ this.event.mouse_right((movement, cartesian) => {
if (entity) {
- that.sdk.viewer.entities.remove(entity)
+ this.sdk.viewer.entities.remove(entity)
entity = null
}
YJ.Measure.SetMeasureStatus(false)
- that.event.destroy()
- that.tip.destroy()
+ this.event.destroy()
+ this.tip.destroy()
- that.heightMode = that.heightMode
+ this.heightMode = this.heightMode
})
- that.event.mouse_move((movement, cartesian) => {
+ this.event.mouse_move((movement, cartesian) => {
entity && (entity.show = true)
- endpoint = that.cartesian3Towgs84(cartesian, that.viewer)
- moveRadius = that.computeDistance2([that.options.center, endpoint])
- fromDegreesArray = that.createCircle(that.options.center, moveRadius)
- that.tip.setPosition(
+ endpoint = this.cartesian3Towgs84(cartesian, this.viewer)
+ moveRadius = this.computeDistance2([this.options.center, endpoint])
+ fromDegreesArray = this.createCircle(this.options.center, moveRadius)
+ this.tip.setPosition(
cartesian,
movement.endPosition.x,
movement.endPosition.y
@@ -1956,28 +1555,28 @@ class CircleObject extends Base {
createNodePoints()
}, 200);
async function createNodePoints() {
- let objectsToExclude = [...that.sdk.viewer.entities.values]
- let height = await that.getClampToHeight(that.options.center, objectsToExclude)
- let entity = that.sdk.viewer.entities.add({
+ let objectsToExclude = [..._this.sdk.viewer.entities.values]
+ let height = await _this.getClampToHeight(_this.options.center, objectsToExclude)
+ let entity = _this.sdk.viewer.entities.add({
name: 'node-secondary-edit-point',
- position: Cesium.Cartesian3.fromDegrees(that.options.center.lng, that.options.center.lat, height),
+ position: Cesium.Cartesian3.fromDegrees(_this.options.center.lng, _this.options.center.lat, height),
billboard: {
- image: that.getSourceRootPath() + '/img/point.png',
+ image: _this.getSourceRootPath() + '/img/point.png',
width: 15,
height: 15,
disableDepthTestDistance: Number.POSITIVE_INFINITY,
color: Cesium.Color.WHITE.withAlpha(0.99)
},
})
- that.nodePoints.push(entity)
+ _this.nodePoints.push(entity)
}
- entity = that.sdk.viewer.entities.add(
+ entity = this.sdk.viewer.entities.add(
new Cesium.Entity({
show: false,
position: new Cesium.CallbackProperty((e) => {
if (endpoint) {
- let c = that.computeMidpoint(that.options.center, endpoint)
+ let c = this.computeMidpoint(this.options.center, endpoint)
return Cesium.Cartesian3.fromDegrees(c.lng, c.lat, endpoint.alt)
} else {
return Cesium.Cartesian3()
@@ -2000,7 +1599,7 @@ class CircleObject extends Base {
},
polyline: {
positions: new Cesium.CallbackProperty((e) => {
- return Cesium.Cartesian3.fromDegreesArray([that.options.center.lng, that.options.center.lat, endpoint.lng, endpoint.lat])
+ return Cesium.Cartesian3.fromDegreesArray([this.options.center.lng, this.options.center.lat, endpoint.lng, endpoint.lat])
}, false),
width: 2,
material:
@@ -2010,22 +1609,22 @@ class CircleObject extends Base {
}
})
)
- that.nodePoints.push(entity)
+ this.nodePoints.push(entity)
}
}
- static closeNodeEdit(that) {
+ closeNodeEdit() {
YJ.Measure.SetMeasureStatus(false)
- that.event && that.event.destroy()
- that.tip && that.tip.destroy()
- that.tip = null
+ this.event && this.event.destroy()
+ this.tip && this.tip.destroy()
+ this.tip = null
- for (let i = 0; i < that.nodePoints.length; i++) {
- that.sdk.viewer.entities.remove(that.nodePoints[i])
+ for (let i = 0; i < this.nodePoints.length; i++) {
+ this.sdk.viewer.entities.remove(this.nodePoints[i])
}
- that.nodePoints = []
- that.picking = true
+ this.nodePoints = []
+ this.picking = true
}
@@ -2205,8 +1804,8 @@ class CircleObject extends Base {
}
// 计算投影面积
- this.options.areaByMeter = Number((Cesium.Math.PI * this.options.radius * this.options.radius).toFixed(2))
- this.areaUnit = this.areaUnit
+ this.areaByMeter = Number((Cesium.Math.PI * this.options.radius * this.options.radius).toFixed(2))
+ this.areaChangeCallBack && this.areaChangeCallBack()
return fromDegreesArray
}
}
diff --git a/src/Obj/Base/index.js b/src/Obj/Base/index.js
index bbbb76e..e612483 100644
--- a/src/Obj/Base/index.js
+++ b/src/Obj/Base/index.js
@@ -30,6 +30,10 @@ class Base extends Tools {
this.rightClickCallBack = null
this.picking = true
this.options.host = this.options.host || getHost()
+ this.options.customView = options.customView ||{
+ relativePosition: undefined,
+ orientation: undefined
+ }
// this._showView = this.options.showView || 0
this.setDefaultValue()
this._showView
@@ -501,7 +505,10 @@ class Base extends Tools {
// 重置视角
resetCustomView() {
- this.options.customView = undefined
+ this.options.customView = {
+ relativePosition: undefined,
+ orientation: undefined
+ }
}
diff --git a/src/YJEarth/index.js b/src/YJEarth/index.js
index 648ca00..8c8d8a5 100644
--- a/src/YJEarth/index.js
+++ b/src/YJEarth/index.js
@@ -31,6 +31,8 @@ import YJColorPicker from "../Obj/Element/yj-color-picker";
class YJEarth {
#_requestAnimationFrameEventId = undefined
+ #_BillboardCollection
+ #_LabelCollection
/**
* @constructor
* @param div_id {string} 地球所在的dom id
@@ -272,6 +274,34 @@ class YJEarth {
this.viewer.scene.fxaa = true
this.viewer.scene.postProcessStages.fxaa.enabled = true
this.viewer.scene.screenSpaceCameraController.enableCollisionDetection = true //true 禁止 false 允许
+
+
+
+
+
+
+
+
+ const BillboardCollection = this.viewer.scene.primitives.add(new Cesium.BillboardCollection({
+ scene: this.viewer.scene,
+ }));
+ const labelCollection = this.viewer.scene.primitives.add(new Cesium.LabelCollection({
+ scene: this.viewer.scene,
+ }));
+
+ this.#_BillboardCollection = BillboardCollection
+ this.#_LabelCollection = labelCollection
+
+
+
+
+
+
+
+
+
+
+
createCluster(this.viewer)
keyboardMapRoamingInit(this.viewer)
let a = Cesium.viewerCesiumNavigationMixin(this.viewer, {
@@ -522,6 +552,13 @@ class YJEarth {
}
+ get collection() {
+ return {
+ billboard: this.#_BillboardCollection,
+ label: this.#_LabelCollection
+ }
+ }
+
destroy() {
cancelAnimationFrame(this.#_requestAnimationFrameEventId)
for (let [id, obj] of this.entityMap) {