This commit is contained in:
zh
2025-12-05 18:19:35 +08:00
parent 09553840c8
commit b770c5fc7b
11 changed files with 103 additions and 41 deletions

View File

@ -76,6 +76,15 @@ function accordingToCameraHeight() {
} }
function startDraw(sdk, showData) { function startDraw(sdk, showData) {
if(!sdk || !sdk.viewer) {
return
}
if (showData) {
let terrainAvailability = sdk.viewer.terrainProvider.availability;
if (!terrainAvailability) {
return '未加载地形数据!'
}
}
show = showData show = showData
Object.keys(paramData).forEach(item => { Object.keys(paramData).forEach(item => {

View File

@ -1434,9 +1434,12 @@ class MapPrint {
document.body.appendChild(downloadElement); document.body.appendChild(downloadElement);
downloadElement.click(); downloadElement.click();
document.body.removeChild(downloadElement); document.body.removeChild(downloadElement);
setTimeout(() => {
exporting = false;
exportBtn.innerHTML = '打印';
}, 100);
}, 'image/png', 0.95); }, 'image/png', 0.95);
exporting = false;
exportBtn.innerHTML = '打印';
// canvas2.toBlob(function (blob) { // canvas2.toBlob(function (blob) {
// let imgBlobData = URL.createObjectURL(blob); // let imgBlobData = URL.createObjectURL(blob);
// let downloadElement = document.createElement('a'); // let downloadElement = document.createElement('a');

View File

@ -434,7 +434,7 @@ function syncImageryLayerMoved(layer, newindxe, oldindex) {
sdk2D.viewer.imageryLayers.lowerToBottom(layer2d) sdk2D.viewer.imageryLayers.lowerToBottom(layer2d)
} }
// 移到最高层 // 移到最高层
else if (newindxe === sdk3D.viewer.imageryLayers._layers.length - 1) { else if (newindxe >= sdk3D.viewer.imageryLayers._layers.length - 1) {
sdk2D.viewer.imageryLayers.raiseToTop(layer2d) sdk2D.viewer.imageryLayers.raiseToTop(layer2d)
} }
else { else {

View File

@ -1067,7 +1067,7 @@ function syncImageryLayerMoved(layer, newindxe, oldindex) {
sdkD.viewer.imageryLayers.lowerToBottom(layerD) sdkD.viewer.imageryLayers.lowerToBottom(layerD)
} }
// 移到最高层 // 移到最高层
else if (newindxe === sdkD.viewer.imageryLayers._layers.length - 1) { else if (newindxe >= sdkD.viewer.imageryLayers._layers.length - 1) {
sdkD.viewer.imageryLayers.raiseToTop(layerD) sdkD.viewer.imageryLayers.raiseToTop(layerD)
} }
else { else {

View File

@ -16,17 +16,13 @@ class Layer extends BaseLayer {
super(sdk, options) super(sdk, options)
this.object = {} this.object = {}
this.options.host = this.options.host || getHost() this.options.host = this.options.host || getHost()
this.on() this.loadLayer(this.options)
} }
get type() { get type() {
return "layer" return "layer"
} }
on() {
return this.loadLayer(this.options)
}
async loadLayer(data) { async loadLayer(data) {
this.object = { ...data } this.object = { ...data }
let url = "" let url = ""

View File

@ -482,6 +482,9 @@ class CurvelineObject extends Base {
return this.options.heightMode ? this.options.heightMode : 0 return this.options.heightMode ? this.options.heightMode : 0
} }
set heightMode(v) { set heightMode(v) {
if (!this._isNodeEdit) {
this._lastHeightMode = null
}
this.positionEditing = false this.positionEditing = false
this.options.heightMode = (v || v == 0) ? v : 2 this.options.heightMode = (v || v == 0) ? v : 2
let heightModeName = '' let heightModeName = ''
@ -556,7 +559,7 @@ class CurvelineObject extends Base {
alt: fromDegreesArray[2] alt: fromDegreesArray[2]
} }
} }
}, 0); }, 50);
} }
get extend() { get extend() {
@ -2051,7 +2054,11 @@ class CurvelineObject extends Base {
} }
let positions = JSON.parse(JSON.stringify(positionsArray)) let positions = JSON.parse(JSON.stringify(positionsArray))
let ground let ground
switch (this.heightMode) { let heightMode = this.heightMode
if (this._isNodeEdit) {
heightMode = 0
}
switch (heightMode) {
case 0: case 0:
case '0': case '0':
ground = false ground = false
@ -2592,13 +2599,19 @@ class CurvelineObject extends Base {
// } // }
nodeEdit(cd) { nodeEdit(cd) {
if(this._isNodeEdit) {
return
}
this.closeNodeEdit()
let lastHeightMode = this.heightMode let lastHeightMode = this.heightMode
this._isNodeEdit = true
this.positionEditing = false this.positionEditing = false
this.heightMode = 0 this.heightMode = 0
if (YJ.Measure.GetMeasureStatus()) { if (YJ.Measure.GetMeasureStatus()) {
} else { } else {
this.closeNodeEdit() if (!this._lastHeightMode && this._lastHeightMode != 0) {
this._lastHeightMode = lastHeightMode this._lastHeightMode = lastHeightMode
}
YJ.Measure.SetMeasureStatus(true) YJ.Measure.SetMeasureStatus(true)
this.tip = new MouseTip('请选择一个顶点,右键取消', this.sdk) this.tip = new MouseTip('请选择一个顶点,右键取消', this.sdk)
this.event = new MouseEvent(this.sdk) this.event = new MouseEvent(this.sdk)
@ -2679,7 +2692,7 @@ class CurvelineObject extends Base {
this.entity.polyline.positions = new Cesium.CallbackProperty( () => { this.entity.polyline.positions = new Cesium.CallbackProperty( () => {
let fromDegreesArray = this.renewPositions(this.options.positions) let fromDegreesArray = this.renewPositions(this.options.positions)
this._nodeEditCallback(this.options.positions, this.lengthByMeter) this._nodeEditCallback && this._nodeEditCallback(this.options.positions, this.lengthByMeter)
return Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray) return Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray)
}, false) }, false)
@ -2702,10 +2715,12 @@ class CurvelineObject extends Base {
}) })
this.nodePoints.push(entity) this.nodePoints.push(entity)
} }
this._isNodeEdit = true
} }
} }
closeNodeEdit() { closeNodeEdit() {
this._isNodeEdit = false
let _lastHeightMode = this._lastHeightMode let _lastHeightMode = this._lastHeightMode
this._lastHeightMode = null this._lastHeightMode = null
if(_lastHeightMode && _lastHeightMode !== 0 && _lastHeightMode !== '0') { if(_lastHeightMode && _lastHeightMode !== 0 && _lastHeightMode !== '0') {
@ -2936,7 +2951,11 @@ class CurvelineObject extends Base {
) )
this.renewPolygon(fromDegreesArray) this.renewPolygon(fromDegreesArray)
switch (this.heightMode) { let heightMode = this.heightMode
if (this._isNodeEdit) {
heightMode = 0
}
switch (heightMode) {
case 0: case 0:
case '0': case '0':
case 1: case 1:

View File

@ -1240,7 +1240,7 @@ class GroundSvg extends Base {
* 拖动 * 拖动
* @param {boolean} status=false 状态 * @param {boolean} status=false 状态
*/ */
drag(status, cd) { drag(status, dragCallback, endCallback) {
if (!this._loaded || !this.sdk || !this.sdk.viewer) { if (!this._loaded || !this.sdk || !this.sdk.viewer) {
return return
} }
@ -1322,7 +1322,7 @@ class GroundSvg extends Base {
bearingH = (((turf.rhumbBearing(pointC, turf.point(controlPoints[2])) + 360) - this.angle) % 360) bearingH = (((turf.rhumbBearing(pointC, turf.point(controlPoints[2])) + 360) - this.angle) % 360)
angleW = bearing2 - bearingW angleW = bearing2 - bearingW
angleH = bearing2 - bearingH angleH = bearing2 - bearingH
if ((angleW > -360 && angleW < -90) || (angleW < 360 && angleW > 90)) { if ((angleW > -270 && angleW < -90) || (angleW < 270 && angleW > 90)) {
angleW = angleW + 180 angleW = angleW + 180
flag = true flag = true
} }
@ -1370,8 +1370,7 @@ class GroundSvg extends Base {
case 'svg-control-points_8': case 'svg-control-points_8':
bearingH = (((turf.rhumbBearing(pointC, turf.point(controlPoints[2])) + 360) - this.angle) % 360) bearingH = (((turf.rhumbBearing(pointC, turf.point(controlPoints[2])) + 360) - this.angle) % 360)
angleH = bearing2 - bearingH angleH = bearing2 - bearingH
if ((angleH > -270 && angleH < -90) || (angleH < 270 && angleH > 90)) {
if ((angleH > -360 && angleH < -90) || (angleH < 360 && angleH > 90)) {
angleH = angleH + 180 angleH = angleH + 180
this.pointEntityCollection.values[2].point.color = Cesium.Color.fromCssColorString('#00ff0a') this.pointEntityCollection.values[2].point.color = Cesium.Color.fromCssColorString('#00ff0a')
this.pointEntityCollection.values[8].point.color = Cesium.Color.fromCssColorString('#ff0000') this.pointEntityCollection.values[8].point.color = Cesium.Color.fromCssColorString('#ff0000')
@ -1534,7 +1533,7 @@ class GroundSvg extends Base {
} }
this.scale = { ...scale } this.scale = { ...scale }
dragCallback && dragCallback(this.options)
} }
else { else {
let pickedObjectArray = this.sdk.viewer.scene.drillPick(movement.endPosition); let pickedObjectArray = this.sdk.viewer.scene.drillPick(movement.endPosition);
@ -1601,7 +1600,7 @@ class GroundSvg extends Base {
this.ScreenSpaceEventHandler.setInputAction((movement) => { this.ScreenSpaceEventHandler.setInputAction((movement) => {
this.drag(false) this.drag(false)
// if (!this._DialogObject) { // if (!this._DialogObject) {
cd && cd(this.options) endCallback && endCallback(this.options)
syncData(this.sdk, this.options.id) syncData(this.sdk, this.options.id)
syncSplitData(this.sdk, this.options.id) syncSplitData(this.sdk, this.options.id)
// } // }

View File

@ -178,8 +178,10 @@ class LabelObject extends Base {
lng: v[0], lng: v[0],
lat: v[1] lat: v[1]
}, objectsToExclude).then(height => { }, objectsToExclude).then(height => {
v[2] = height if(this.ground) {
this.options.position = [...v] v[2] = height
this.options.position = [...v]
}
}) })
// let point1 = Cesium.Cartesian3.fromDegrees(this.options.position[0], this.options.position[1], 0); // let point1 = Cesium.Cartesian3.fromDegrees(this.options.position[0], this.options.position[1], 0);
// let point2 = Cesium.Cartesian3.fromDegrees(this.options.position[0], this.options.position[1], 10000000); // let point2 = Cesium.Cartesian3.fromDegrees(this.options.position[0], this.options.position[1], 10000000);
@ -275,7 +277,9 @@ class LabelObject extends Base {
lng: this.options.position[0], lng: this.options.position[0],
lat: this.options.position[1] lat: this.options.position[1]
}, objectsToExclude).then(height => { }, objectsToExclude).then(height => {
this.options.position[2] = height if(this.ground) {
this.options.position[2] = height
}
}) })
} }

View File

@ -514,6 +514,9 @@ class PolylineObject extends Base {
return this.options.heightMode ? this.options.heightMode : 0 return this.options.heightMode ? this.options.heightMode : 0
} }
set heightMode(v) { set heightMode(v) {
if (!this._isNodeEdit) {
this._lastHeightMode = null
}
this.positionEditing = false this.positionEditing = false
this.options.heightMode = (v || v == 0) ? v : 2 this.options.heightMode = (v || v == 0) ? v : 2
let heightModeName = '' let heightModeName = ''
@ -548,6 +551,7 @@ class PolylineObject extends Base {
} }
setTimeout(() => { setTimeout(() => {
if (ground) { if (ground) {
this.label.ground = ground this.label.ground = ground
@ -570,7 +574,7 @@ class PolylineObject extends Base {
alt: fromDegreesArray[2] alt: fromDegreesArray[2]
} }
} }
}, 0); }, 50);
} }
get extend() { get extend() {
@ -2077,7 +2081,11 @@ class PolylineObject extends Base {
} }
let positions = JSON.parse(JSON.stringify(positionsArray)) let positions = JSON.parse(JSON.stringify(positionsArray))
let ground let ground
switch (this.heightMode) { let heightMode = this.heightMode
if (this._isNodeEdit) {
heightMode = 0
}
switch (heightMode) {
case 0: case 0:
case '0': case '0':
ground = false ground = false
@ -2587,15 +2595,21 @@ class PolylineObject extends Base {
// } // }
nodeEdit(cb) { nodeEdit(cb) {
if(this._isNodeEdit) {
return
}
this.closeNodeEdit()
let lastHeightMode = this.heightMode let lastHeightMode = this.heightMode
this._isNodeEdit = true
this.positionEditing = false this.positionEditing = false
this.noseToTail = false this.noseToTail = false
// this.smooth = false // this.smooth = false
this.heightMode = 0 this.heightMode = 0
if (YJ.Measure.GetMeasureStatus()) { if (YJ.Measure.GetMeasureStatus()) {
} else { } else {
this.closeNodeEdit() if (!this._lastHeightMode && this._lastHeightMode != 0) {
this._lastHeightMode = lastHeightMode this._lastHeightMode = lastHeightMode
}
YJ.Measure.SetMeasureStatus(true) YJ.Measure.SetMeasureStatus(true)
this._nodeEditCallback = cb this._nodeEditCallback = cb
this.tip = new MouseTip('请选择一个顶点,右键取消', this.sdk) this.tip = new MouseTip('请选择一个顶点,右键取消', this.sdk)
@ -2676,7 +2690,7 @@ class PolylineObject extends Base {
this.entity.polyline.positions = new Cesium.CallbackProperty(() => { this.entity.polyline.positions = new Cesium.CallbackProperty(() => {
let fromDegreesArray = this.renewPositions(this.options.positions) let fromDegreesArray = this.renewPositions(this.options.positions)
this._nodeEditCallback(this.options.positions, this.lengthByMeter) this._nodeEditCallback && this._nodeEditCallback(this.options.positions, this.lengthByMeter)
return Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray) return Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray)
}, false) }, false)
@ -2699,10 +2713,12 @@ class PolylineObject extends Base {
}) })
this.nodePoints.push(entity) this.nodePoints.push(entity)
} }
this._isNodeEdit = true
} }
} }
closeNodeEdit() { closeNodeEdit() {
this._isNodeEdit = false
let _lastHeightMode = this._lastHeightMode let _lastHeightMode = this._lastHeightMode
this._lastHeightMode = null this._lastHeightMode = null
if (_lastHeightMode && _lastHeightMode !== 0 && _lastHeightMode !== '0') { if (_lastHeightMode && _lastHeightMode !== 0 && _lastHeightMode !== '0') {
@ -2925,7 +2941,11 @@ class PolylineObject extends Base {
) )
this.renewPolygon(fromDegreesArray) this.renewPolygon(fromDegreesArray)
switch (this.heightMode) { let heightMode = this.heightMode
if (this._isNodeEdit) {
heightMode = 0
}
switch (heightMode) {
case 0: case 0:
case '0': case '0':
case 1: case 1:

View File

@ -45,11 +45,11 @@ class Vector extends Base {
this.options.headTables = options.headTables || [] this.options.headTables = options.headTables || []
this.options.name = options.name || '未命名对象' this.options.name = options.name || '未命名对象'
if (!this.options.path.endsWith('.kml')) { // if (!this.options.path.endsWith('.kml')) {
; (this.options.color = options.color || 'rgba(0,255,184,0.5)'), // ; (this.options.color = options.color || 'rgba(0,255,184,0.5)'),
(this.options.opacity = // (this.options.opacity =
options.opacity || options.opacity === 0 ? options.opacity : 1) // options.opacity || options.opacity === 0 ? options.opacity : 1)
} // }
this.options.show = this.options.show =
options.show || options.show === false ? options.show : true options.show || options.show === false ? options.show : true
@ -620,16 +620,26 @@ class Vector extends Base {
} }
}) })
if (!that.options.field) { if (!that.options.field) {
const properties = ['id', 'Id', 'ID', 'name', 'Name', 'NAME', 'address', 'Address', 'ADDRESS', 'text', 'Text', 'TEXT', 'label', 'Label', 'LABEL']; const properties = ['name', 'Name', 'NAME'];
const field = properties.find(prop => that.geojson.features[0].properties[prop] !== undefined); const field = properties.find(prop => that.geojson.features[0].properties[prop] !== undefined);
if (field) { if (field) {
that.options.field = field; that.options.field = field;
} }
else { else {
for (let key in that.geojson.features[0].properties) { const isChinese = (str) => /[\u4e00-\u9fa5]/.test(str);
that.options.field = key; const sortedKeys = Object.keys(that.geojson.features[0].properties || {}).sort((a, b) => {
break; const aIsCN = isChinese(a);
} const bIsCN = isChinese(b);
if (!aIsCN && bIsCN) return -1;
if (aIsCN && !bIsCN) return 1;
// 非中文:纯字母序(不区分大小写);中文:拼音序
return aIsCN
? a.localeCompare(b, 'zh-CN')
: a.toUpperCase().localeCompare(b.toUpperCase());
});
that.options.field = sortedKeys[0]
} }
} }
// for (let i = 0; i < that.#textEntity.length; i++) { // for (let i = 0; i < that.#textEntity.length; i++) {

View File

@ -55,6 +55,7 @@
.cesium-viewer-cesiumWidgetContainer { .cesium-viewer-cesiumWidgetContainer {
position: relative; position: relative;
overflow: hidden;
} }
.cesium-viewer-cesiumWidgetContainer .cesium-widget:nth-of-type(1) { .cesium-viewer-cesiumWidgetContainer .cesium-widget:nth-of-type(1) {
@ -1502,7 +1503,8 @@
display: flex; display: flex;
padding-left: 0; padding-left: 0;
position: relative; position: relative;
left: 80px; left: 50% !important;
transform: translateX(-50%);
} }
.YJ-custom-base-dialog>.content .pagination .pageTips { .YJ-custom-base-dialog>.content .pagination .pageTips {