This commit is contained in:
zh
2025-09-05 18:42:50 +08:00
parent 29629b9d43
commit ae48dbd700
14 changed files with 1753 additions and 4875 deletions

View File

@ -127,9 +127,9 @@ class Tools {
var alt = cartographic.height < 0 ? 0 : cartographic.height
// var alt = cartographic.height
return {
lng: lng,
lat: lat,
alt: alt,
lng: Number(lng.toFixed(8)),
lat: Number(lat.toFixed(8)),
alt: Number(alt.toFixed(2)),
}
}
@ -141,13 +141,14 @@ class Tools {
* @param [fractionDigits=2] 保留小数点位数
* @param [ground=true] 是否贴地
* */
async computeDistance(positions = [], fractionDigits = 2, type = '空间长度') {
async computeDistance(positions = [], fractionDigits = 2, type = 0) {
if (positions.length < 2) {
return 0
} else {
let length = 0
switch (type) {
case '空间长度':
case '0':
case 0:
for (let i = 0; i < positions.length - 1; i++) {
const position1 = Cesium.Cartesian3.fromDegrees(positions[i].lng, positions[i].lat, positions[i].alt);
const position2 = Cesium.Cartesian3.fromDegrees(positions[i + 1].lng, positions[i + 1].lat, positions[i + 1].alt);
@ -155,7 +156,8 @@ class Tools {
length = length + distance
}
break
case '投影长度':
case '1':
case 1:
for (let i = 0; i < positions.length - 1; i++) {
const position1 = Cesium.Cartesian3.fromDegrees(positions[i].lng, positions[i].lat, 0);
const position2 = Cesium.Cartesian3.fromDegrees(positions[i + 1].lng, positions[i + 1].lat, 0);
@ -163,7 +165,8 @@ class Tools {
length = length + distance
}
break
case '地表长度':
case '2':
case 2:
let meters
let lineString2 = []
positions.forEach((item) => {
@ -1243,14 +1246,28 @@ class Tools {
* */
deepCopyObj(obj) {
let newobj = null;
//判断是否需要继续进行递归
if (typeof (obj) == 'object' && obj !== null) {
newobj = obj instanceof Array ? [] : {}; //进行下一层递归克隆
// 处理数组 - 使用原生Array构造函数创建新数组
if (Array.isArray(obj)) {
newobj = [];
// 只拷贝数组元素,不拷贝可能存在的扩展方法
for (let i = 0; i < obj.length; i++) {
newobj[i] = this.deepCopyObj(obj[i]);
}
return newobj;
}
// 处理对象
else if (obj && typeof obj === 'object') {
newobj = {};
for (let i in obj) {
if (i != 'earth' && i != 'Dialog')
newobj[i] = this.deepCopyObj(obj[i])
} //如果不是对象直接赋值
} else newobj = obj;
// 排除指定属性和方法属性
if (i !== 'earth' && i !== 'Dialog' && typeof obj[i] !== 'function') {
newobj[i] = this.deepCopyObj(obj[i]);
}
}
return newobj;
}
else newobj = obj;
return newobj;
}