+
diff --git a/src/Obj/Base/PolylineObject/index.js b/src/Obj/Base/PolylineObject/index.js
index 63ec0b3..fbc6d8c 100644
--- a/src/Obj/Base/PolylineObject/index.js
+++ b/src/Obj/Base/PolylineObject/index.js
@@ -63,6 +63,7 @@ class PolylineObject extends Base {
this.options.dashSize = options.dashSize || 0.03
this.options['length-unit'] = options['length-unit'] || '米'
this.options['fit-length-unit'] = options['fit-length-unit'] || '米'
+ this.options['words-name'] = options['words-name'] || '空间长度'
this.options['extend-width'] =
options['extend-width'] || options['extend-width'] === 0
? options['extend-width']
@@ -120,6 +121,7 @@ class PolylineObject extends Base {
this.options.attributeType = options.attributeType || 'richText'
this.operate = {}
this.nodePoints = []
+ this.unitNum = 0
this.Dialog = _Dialog
if (!this.options.positions || this.options.positions.length < 2) {
this._error = '线段最少需要两个坐标!'
@@ -218,6 +220,8 @@ class PolylineObject extends Base {
set length(v) {
this.options.length = v
+ //判断数值是否大于1000m
+
this._elms.length &&
this._elms.length.forEach(item => {
item.value = v
@@ -240,21 +244,49 @@ class PolylineObject extends Base {
return this.options['length-unit']
}
set lengthUnit(v) {
+ this.unitNum++
this.options['length-unit'] = v
this._elms.lengthUnit &&
this._elms.lengthUnit.forEach(item => {
item.value = v
})
+ if (this.options.lengthByMeter) {
+ if (this.unitNum > 2) {
+ switch (v) {
+ case '米':
+ this.length = this.noseToTail ? this.options.fitLengthByMeter : this.options.lengthByMeter
+ break
+ case '千米':
+ this.length = this.noseToTail ? (this.options.fitLengthByMeter / 1000).toFixed(5) : (this.options.lengthByMeter / 1000).toFixed(5)
+ break
+ default:
+ this.length = this.noseToTail ? this.options.fitLengthByMeter : this.options.lengthByMeter
+ }
+ } else {
+ let length = this.noseToTail ? this.options.fitLengthByMeter : this.options.lengthByMeter
+ this.lengthUnit = length > 1000 || length == 1000 ? '千米' : '米'
+ }
+ }
+ }
+ get wordsName() {
+ return this.options['words-name']
+ }
+ set wordsName(v) {
+ this.options['words-name'] = v
+ this._elms.wordsName &&
+ this._elms.wordsName.forEach(item => {
+ item.value = v
+ })
if (this.options.lengthByMeter) {
switch (v) {
- case '米':
- this.length = this.options.lengthByMeter
+ case '空间长度':
break
- case '千米':
- this.length = (this.options.lengthByMeter / 1000).toFixed(5)
+ case '投影长度':
+ break
+ case '地表长度':
break
default:
- this.length = this.options.lengthByMeter
+ break
}
}
}
@@ -306,69 +338,82 @@ class PolylineObject extends Base {
set lineType(v) {
let lineTypeData = [
{
- name: '实线',
+ name: '
实线',
value: '实线',
- key: 0
+ key: 0,
+ icon: 'line'
},
{
- name: '虚线',
+ name: '
虚线',
value: '虚线',
- key: 1
+ key: 1,
+ icon: 'dash-line'
},
{
- name: '泛光',
+ name: '
泛光',
value: '泛光',
- key: 2
+ key: 2,
+ icon: 'light-line'
},
{
- name: '尾迹光线',
+ name: '
尾迹光线',
value: '尾迹光线',
- key: 3
+ key: 3,
+ icon: 'tail-line'
},
{
- name: '多尾迹光线',
+ name: '
多尾迹光线',
value: '多尾迹光线',
- key: 4
+ key: 4,
+ icon: 'mult-tail-line'
},
{
- name: '流动虚线1',
+ name: '
流动虚线1',
value: '流动虚线1',
- key: 5
+ key: 5,
+ icon: 'flow-dash-line1'
},
{
- name: '流动虚线2',
+ name: '
流动虚线2',
value: '流动虚线2',
- key: 6
+ key: 6,
+ icon: 'flow-dash-line2'
},
{
- name: '流动箭头1',
+ name: '
流动箭头1',
value: '流动箭头1',
- key: 7
+ key: 7,
+ icon: 'pic-line1'
},
{
- name: '流动箭头2',
+ name: '
流动箭头2',
value: '流动箭头2',
- key: 8
+ key: 8,
+ icon: 'pic-line2'
},
{
- name: '流动箭头3',
+ name: '
流动箭头3',
value: '流动箭头3',
- key: 9
+ key: 9,
+ icon: 'pic-line3'
},
{
- name: '流动箭头4',
+ name: '
流动箭头4',
value: '流动箭头4',
- key: 10
+ key: 10,
+ icon: 'pic-line4'
},
{
- name: '流动箭头5',
+ name: '
流动箭头5',
value: '流动箭头5',
- key: 11
+ key: 11,
+ icon: 'pic-line5'
},
{
- name: '流动箭头6',
+ name: '
流动箭头6',
value: '流动箭头6',
- key: 12
+ key: 12,
+ icon: 'pic-line6'
}
]
this.options.type = Number(v)
@@ -420,6 +465,20 @@ class PolylineObject extends Base {
)
this.renewPolygon(fromDegreesArray)
}
+ if (v) {
+ if (this.options.fitLengthByMeter > 1000 || this.options.fitLengthByMeter == 1000) {
+ document.getElementsByClassName('input-select-unit')[1].querySelectorAll('dd')[1].click()
+ } else {
+ document.getElementsByClassName('input-select-unit')[1].querySelectorAll('dd')[0].click()
+ }
+
+ } else {
+ if (this.options.lengthByMeter > 1000 || this.options.lengthByMeter == 1000) {
+ document.getElementsByClassName('input-select-unit')[1].querySelectorAll('dd')[1].click()
+ } else {
+ document.getElementsByClassName('input-select-unit')[1].querySelectorAll('dd')[0].click()
+ }
+ }
}
get smooth() {
@@ -1504,6 +1563,50 @@ class PolylineObject extends Base {
})
}
+ let nameData = [
+ {
+ name: '空间长度',
+ value: '空间长度'
+ },
+ {
+ name: '投影长度',
+ value: '投影长度'
+ },
+ {
+ name: '地表长度',
+ value: '地表长度'
+ }
+ ]
+
+ let nameDataLegpObject = legp(
+ this._DialogObject._element.content.getElementsByClassName(
+ 'input-select-unit-box'
+ )[0],
+ '.input-select-unit'
+ )
+ if (nameDataLegpObject) {
+ nameDataLegpObject.legp_search(nameData)
+ let nameDataLegpElm = this._DialogObject._element.content
+ .getElementsByClassName('input-select-unit')[0]
+ .getElementsByTagName('input')[0]
+ this._elms.wordsName = [nameDataLegpElm]
+ nameDataLegpElm.value = this.options['words-name']
+ for (let i = 0; i < nameData.length; i++) {
+ if (nameData[i].value === nameDataLegpElm.value) {
+ nameDataLegpObject.legp_searchActive(nameData[i].value)
+ break
+ }
+ }
+ nameDataLegpElm.addEventListener('input', () => {
+ for (let i = 0; i < nameData.length; i++) {
+ if (nameData[i].value === nameDataLegpElm.value) {
+ this.wordsName = nameData[i].value
+ break
+ }
+ }
+ })
+ }
+
// 原始长度单位
let unitData = [
{
@@ -1520,12 +1623,13 @@ class PolylineObject extends Base {
this._DialogObject._element.content.getElementsByClassName(
'input-select-unit-box'
)[0],
- '.input-select-unit'
+ '.input-select-unit',
+ 1
)
if (unitDataLegpObject) {
unitDataLegpObject.legp_search(unitData)
let unitDataLegpElm = this._DialogObject._element.content
- .getElementsByClassName('input-select-unit')[0]
+ .getElementsByClassName('input-select-unit')[1]
.getElementsByTagName('input')[0]
this._elms.lengthUnit = [unitDataLegpElm]
unitDataLegpElm.value = this.options['length-unit']
@@ -1544,113 +1648,128 @@ class PolylineObject extends Base {
}
})
}
+ //
+
// 拟合长度单位
- let fitUnitData = [
- {
- name: '米',
- value: '米'
- },
- {
- name: '千米',
- value: '千米'
- }
- ]
+ // let fitUnitData = [
+ // {
+ // name: '米',
+ // value: '米'
+ // },
+ // {
+ // name: '千米',
+ // value: '千米'
+ // }
+ // ]
- let fitUnitDataLegpObject = legp(
- this._DialogObject._element.content.getElementsByClassName(
- 'input-select-fit-unit-box'
- )[0],
- '.input-select-fit-unit'
- )
- if (fitUnitDataLegpObject) {
- fitUnitDataLegpObject.legp_search(fitUnitData)
- let fitUnitDataLegpElm = this._DialogObject._element.content
- .getElementsByClassName('input-select-fit-unit')[0]
- .getElementsByTagName('input')[0]
- this._elms.fitLengthUnit = [fitUnitDataLegpElm]
- fitUnitDataLegpElm.value = this.options['fit-length-unit']
- for (let i = 0; i < fitUnitData.length; i++) {
- if (fitUnitData[i].value === fitUnitDataLegpElm.value) {
- fitUnitDataLegpObject.legp_searchActive(fitUnitData[i].value)
- break
- }
- }
- fitUnitDataLegpElm.addEventListener('input', () => {
- for (let i = 0; i < fitUnitData.length; i++) {
- if (fitUnitData[i].value === fitUnitDataLegpElm.value) {
- this.fitLengthUnit = fitUnitData[i].value
- break
- }
- }
- })
- }
+ // let fitUnitDataLegpObject = legp(
+ // this._DialogObject._element.content.getElementsByClassName(
+ // 'input-select-fit-unit-box'
+ // )[0],
+ // '.input-select-fit-unit'
+ // )
+ // if (fitUnitDataLegpObject) {
+ // fitUnitDataLegpObject.legp_search(fitUnitData)
+ // let fitUnitDataLegpElm = this._DialogObject._element.content
+ // .getElementsByClassName('input-select-fit-unit')[0]
+ // .getElementsByTagName('input')[0]
+ // this._elms.fitLengthUnit = [fitUnitDataLegpElm]
+ // fitUnitDataLegpElm.value = this.options['fit-length-unit']
+ // for (let i = 0; i < fitUnitData.length; i++) {
+ // if (fitUnitData[i].value === fitUnitDataLegpElm.value) {
+ // fitUnitDataLegpObject.legp_searchActive(fitUnitData[i].value)
+ // break
+ // }
+ // }
+ // fitUnitDataLegpElm.addEventListener('input', () => {
+ // for (let i = 0; i < fitUnitData.length; i++) {
+ // if (fitUnitData[i].value === fitUnitDataLegpElm.value) {
+ // this.fitLengthUnit = fitUnitData[i].value
+ // break
+ // }
+ // }
+ // })
+ // }
let lineTypeData = [
{
- name: '实线',
+ name: '
实线',
value: '实线',
- key: 0
+ key: 0,
+ icon: 'line'
},
{
- name: '虚线',
+ name: '
虚线',
value: '虚线',
- key: 1
+ key: 1,
+ icon: 'dash-line'
},
{
- name: '泛光',
+ name: '
泛光',
value: '泛光',
- key: 2
+ key: 2,
+ icon: 'light-line'
},
{
- name: '尾迹光线',
+ name: '
尾迹光线',
value: '尾迹光线',
- key: 3
+ key: 3,
+ icon: 'tail-line'
},
{
- name: '多尾迹光线',
+ name: '
多尾迹光线',
value: '多尾迹光线',
- key: 4
+ key: 4,
+ icon: 'mult-tail-line'
},
{
- name: '流动虚线1',
+ name: '
流动虚线1',
value: '流动虚线1',
- key: 5
+ key: 5,
+ icon: 'flow-dash-line1'
},
{
- name: '流动虚线2',
+ name: '
流动虚线2',
value: '流动虚线2',
- key: 6
+ key: 6,
+ icon: 'flow-dash-line2'
},
{
- name: '流动箭头1',
+ name: '
流动箭头1',
value: '流动箭头1',
- key: 7
+ key: 7,
+ icon: 'pic-line1'
},
{
- name: '流动箭头2',
+ name: '
流动箭头2',
value: '流动箭头2',
- key: 8
+ key: 8,
+ icon: 'pic-line2'
},
{
- name: '流动箭头3',
+ name: '
流动箭头3',
value: '流动箭头3',
- key: 9
+ key: 9,
+ icon: 'pic-line3'
},
{
- name: '流动箭头4',
+ name: '
流动箭头4',
value: '流动箭头4',
- key: 10
+ key: 10,
+ icon: 'pic-line4'
},
{
- name: '流动箭头5',
+ name: '
流动箭头5',
value: '流动箭头5',
- key: 11
+ key: 11,
+ icon: 'pic-line5'
},
{
- name: '流动箭头6',
+ name: '
流动箭头6',
value: '流动箭头6',
- key: 12
+ key: 12,
+ icon: 'pic-line6'
}
]
let lineTypeDataLegpObject = legp(
@@ -1661,6 +1780,11 @@ class PolylineObject extends Base {
)
if (lineTypeDataLegpObject) {
lineTypeDataLegpObject.legp_search(lineTypeData)
+
+ let iActiveElm2 = document.createElement('i')
+ iActiveElm2.className = 'icon icon-active'
+ this._DialogObject._element.content.getElementsByClassName('input-select-line-type')[0].getElementsByClassName('cy_datalist')[0].appendChild(iActiveElm2)
+
let lineTypeDataLegpElm = this._DialogObject._element.content
.getElementsByClassName('input-select-line-type')[0]
.getElementsByTagName('input')[0]
@@ -1669,6 +1793,7 @@ class PolylineObject extends Base {
if (lineTypeData[i].key === this.options.type) {
lineTypeDataLegpObject.legp_searchActive(lineTypeData[i].value)
lineTypeDataLegpElm.value = lineTypeData[i].value
+ iActiveElm2.className = `icon icon-active ${lineTypeData[i].icon}`
break
}
}
@@ -1676,6 +1801,7 @@ class PolylineObject extends Base {
for (let i = 0; i < lineTypeData.length; i++) {
if (lineTypeData[i].value === lineTypeDataLegpElm.value) {
this.lineType = lineTypeData[i].key
+ iActiveElm2.className = `icon icon-active ${lineTypeData[i].icon}`
//控制参数显隐
if (2 < this.lineType && this.lineType < 13) {//贴图参数
@@ -1696,6 +1822,11 @@ class PolylineObject extends Base {
})
}
+
+
+
+
+
let heightBoxElm = this._DialogObject._element.content.getElementsByClassName('height-box')[0]
let heightElm = heightBoxElm.getElementsByClassName('height')[0]
let heightConfirmElm = this._DialogObject._element.content.getElementsByClassName('height-confirm')[0]
diff --git a/src/Obj/Element/datalist.js b/src/Obj/Element/datalist.js
index e1d9974..9125ca6 100644
--- a/src/Obj/Element/datalist.js
+++ b/src/Obj/Element/datalist.js
@@ -1,14 +1,14 @@
-var legp = function (parentElement, ele) {
+var legp = function (parentElement, ele, index = 0) {
let targetValue = null
return ({
that: Array.prototype.slice.call(parentElement.querySelectorAll(ele), 0),
stopPropagation: function (e) {
e = e || window.event;
- if (e.stopPropagation) { //W3C阻止冒泡方法
+ if (e.stopPropagation) { //W3C阻止冒泡方法
e.stopPropagation();
}
else {
- e.cancelBubble = true; //IE阻止冒泡方法
+ e.cancelBubble = true; //IE阻止冒泡方法
}
},
hide: function () {
@@ -16,10 +16,14 @@ var legp = function (parentElement, ele) {
item.style.cssText += "display:none;";
});
},
- show: function () {
- legp(parentElement, ele).that.forEach(function (item) {
- item.style.cssText += "display:block;";
- });
+ show: function (num) {
+ if (num !== undefined) {
+ legp(parentElement, ele).that[num].style.cssText += "display:block;";
+ } else {
+ legp(parentElement, ele).that.forEach(function (item) {
+ item.style.cssText += "display:block;";
+ });
+ }
},
legp_searchList: function (name) {
let arr = [];
@@ -28,19 +32,20 @@ var legp = function (parentElement, ele) {
});
return arr;
},
- legp_search: function (tagData, search=false) {
- var domId = legp(parentElement, ele).that[0];
+ legp_search: function (tagData, search = false) {
+ // var domId = legp(parentElement, ele).that[0];
+ var domId = legp(parentElement, ele).that[index];
if (!domId) {
return
}
- var html = `
`;
+ var html = `
`;
domId.innerHTML = html;
// domId.appendChild(dom);
//获取当前广告
function myClick() {
legp(parentElement, ".cy_datalist dl dd").that.forEach(function (item) {
item.onclick = function (e) {
- if(!this || !this.attributes) {
+ if (!this || !this.attributes) {
return
}
let value = this.attributes.value.value;
@@ -68,39 +73,42 @@ var legp = function (parentElement, ele) {
}
//筛选
- legp(parentElement, ".cy_datalist input").that[0].oninput = function () {
+ legp(parentElement, ".cy_datalist input").that[index].oninput = function (e) {
var val = this.value; //获取input值
-
- // legp(parentElement, ".cy_datalist dl").hide();
+ legp(parentElement, ".cy_datalist dl").hide();
if (tagData.length > 0) {
legp(parentElement, ".cy_datalist dl").show();
var sear_1 = new RegExp(val);
var judge_1 = false;
- legp(parentElement, ".cy_datalist dl").that[0].innerHTML = "";
+ legp(parentElement, ".cy_datalist dl").that[index].innerHTML = "";
tagData.forEach(function (item) {
if (sear_1.test(item.name)) {
judge_1 = true;
- legp(parentElement, ".cy_datalist dl").that[0].innerHTML += "
" + item.name + "";
+ legp(parentElement, ".cy_datalist dl").that[index].innerHTML += "
" + item.name + "";
}
});
if (!judge_1) {
- legp(parentElement, ".cy_datalist dl").that[0].innerHTML = "
\u6682\u65E0\u6570\u636E";
+ legp(parentElement, ".cy_datalist dl").that[index].innerHTML = "
\u6682\u65E0\u6570\u636E";
}
myClick();
}
};
//显示没被选择的
- legp(parentElement, ".cy_datalist input").that[0].onclick = function (e) {
- if(legp(parentElement, ".cy_datalist dl").that[0].style.display === 'none') {
+ legp(parentElement, ".cy_datalist input").that[index].onclick = function (e) {
+
+ legp(parentElement, ".cy_datalist dl").hide();
+ let num = e.srcElement.classList[1] * 1
+ num = num || 0
+ if (legp(parentElement, ".cy_datalist dl").that[num].style.display === 'none') {
if (tagData.length == 0) {
this.innerHTML = "暂无数据";
}
else {
- legp(parentElement, ".cy_datalist dl").show();
+ legp(parentElement, ".cy_datalist dl").show(num);
}
- legp(parentElement, ".cy_datalist dl").that[0].innerHTML = "";
+ legp(parentElement, ".cy_datalist dl").that[num].innerHTML = "";
tagData.forEach(function (item) {
- legp(parentElement, ".cy_datalist dl").that[0].innerHTML += "
" + item.name + "";
+ legp(parentElement, ".cy_datalist dl").that[num].innerHTML += "
" + item.name + "";
});
myClick();
}
diff --git a/static/custom/css/index.css b/static/custom/css/index.css
index 0933ac5..35938bb 100644
--- a/static/custom/css/index.css
+++ b/static/custom/css/index.css
@@ -1515,6 +1515,7 @@
display: flex;
align-items: center;
height: 32px;
+ line-height: 32px;
}
.YJ-custom-base-dialog>.content .cy_datalist dl dd:hover {
@@ -2649,7 +2650,116 @@
max-height: 185px;
}
+.YJ-custom-base-dialog.polyline>.content>div .input-select-unit-box textarea {
+ border-radius: unset!important;
+}
+.YJ-custom-base-dialog.polyline>.content>div .input-select-unit .datalist {
+ background-color:rgba(var(--color-sdk-base-rgb), 0.1)!important;
+ border-radius: 4px 0px 0px 4px !important;
+}
+.YJ-custom-base-dialog.polyline>.content>div .input-select-unit:nth-of-type(1) .datalist {
+ background-color:rgba(var(--color-sdk-base-rgb), 0.1)!important;
+ border-radius: 4px 0px, 0px, 4px!important;
+}
+.YJ-custom-base-dialog.polyline>.content>div .input-select-unit:nth-of-type(2) .datalist {
+ background-color:rgba(var(--color-sdk-base-rgb), 0.1)!important;
+ border-radius: 0px 4px 4px 0px!important;
+}
+
+.YJ-custom-base-dialog.polyline>.content>div .input-select-unit:nth-of-type(1) input {
+ border: 1px solid rgba(var(--color-sdk-base-rgb), 0.5)!important;
+}
+.YJ-custom-base-dialog.polyline>.content>div .input-select-unit:nth-of-type(2) input {
+ border: 1px solid rgba(var(--color-sdk-base-rgb), 0.5)!important;
+}
+
+.YJ-custom-base-dialog.polyline>.content input.input-text{
+ background-color: rgba(0, 0, 0, 0.5)!important;
+ border-radius: unset!important;
+ border-top: 1px solid rgba(var(--color-sdk-base-rgb), 0.5)!important;
+ border-bottom: 1px solid rgba(var(--color-sdk-base-rgb), 0.5) !important;
+}
+
+.YJ-custom-base-dialog.polyline>.content>div .input-select-line-type-box .cy_datalist input {
+ padding-left: 35px;
+}
+
+.YJ-custom-base-dialog.polyline>.content>div .input-select-line-type-box .icon-active {
+ position: absolute;
+ top: 11px;
+ left: 10px;
+ -webkit-pointer-events: none;
+ -moz-pointer-events: none;
+ -ms-pointer-events: none;
+ -o-pointer-events: none;
+ pointer-events: none;
+}
+
+.YJ-custom-base-dialog.polyline>.content>div .input-select-line-type-box .cy_datalist i.icon {
+ display: inline-block;
+ width: 22px;
+ height: 10px;
+ margin-right: 5px;
+}
+.YJ-custom-base-dialog.polyline>.content>div .input-select-line-type-box .cy_datalist i.line {
+ border: 1px solid rgba(255, 255, 255, 1);
+ height: 0px;
+ margin-top: 4px;
+}
+.YJ-custom-base-dialog.polyline>.content>div .input-select-line-type-box .cy_datalist i.dash-line {
+ border: 1px dashed rgba(255, 255, 255, 1);
+ height: 0px;
+ margin-top: 4px;
+}
+.YJ-custom-base-dialog.polyline>.content>div .input-select-line-type-box .cy_datalist i.light-line {
+ border: 1px solid rgba(255, 255, 255, 1);
+ height: 0px;
+ margin-top: 4px;
+ box-shadow: 0 0 3px #fff
+}
+.YJ-custom-base-dialog.polyline>.content>div .input-select-line-type-box .cy_datalist i.tail-line {
+ background: url(../../img/arrow/tail.png) 100% 100% no-repeat;
+ background-size: 100% 100%;
+}
+.YJ-custom-base-dialog.polyline>.content>div .input-select-line-type-box .cy_datalist i.mult-tail-line {
+ background: url(../../img/arrow/tail.png) 100% 100% no-repeat;
+ background-size: 100% 100%;
+}
+.YJ-custom-base-dialog.polyline>.content>div .input-select-line-type-box .cy_datalist i.flow-dash-line1 {
+ border: 1px dashed rgba(255, 255, 255, 1);
+ height: 0px;
+ margin-top: 4px;
+}
+.YJ-custom-base-dialog.polyline>.content>div .input-select-line-type-box .cy_datalist i.flow-dash-line2 {
+ border: 1px dashed rgba(255, 255, 255, 1);
+ height: 0px;
+ margin-top: 4px;
+}
+.YJ-custom-base-dialog.polyline>.content>div .input-select-line-type-box .cy_datalist i.pic-line1 {
+ background: url(../../img/arrow/1.png) 100% 100% no-repeat;
+ background-size: 100% 100%;
+}
+.YJ-custom-base-dialog.polyline>.content>div .input-select-line-type-box .cy_datalist i.pic-line2 {
+ background: url(../../img/arrow/2.png) 100% 100% no-repeat;
+ background-size: 100% 100%;
+}
+.YJ-custom-base-dialog.polyline>.content>div .input-select-line-type-box .cy_datalist i.pic-line3 {
+ background: url(../../img/arrow/3.png) 100% 100% no-repeat;
+ background-size: 100% 100%;
+}
+.YJ-custom-base-dialog.polyline>.content>div .input-select-line-type-box .cy_datalist i.pic-line4 {
+ background: url(../../img/arrow/4.png) 100% 100% no-repeat;
+ background-size: 100% 100%;
+}
+.YJ-custom-base-dialog.polyline>.content>div .input-select-line-type-box .cy_datalist i.pic-line5 {
+ background: url(../../img/arrow/5.png) 100% 100% no-repeat;
+ background-size: 100% 100%;
+}
+.YJ-custom-base-dialog.polyline>.content>div .input-select-line-type-box .cy_datalist i.pic-line6 {
+ background: url(../../img/arrow/6.png) 100% 100% no-repeat;
+ background-size: 100% 100%;
+}
/* 贴地图片 */
.YJ-custom-base-dialog.ground-image>.content {
diff --git a/static/img/arrow/tail.png b/static/img/arrow/tail.png
new file mode 100644
index 0000000000000000000000000000000000000000..9b971991081876fbfd9f47c7541f162b56e278ca
GIT binary patch
literal 511
zcmeAS@N?(olHy`uVBq!ia0vp^_kmcOgAGXj_!X-Rq!^2X+?^QKos)S9
Ryl
zX8-%`=Gwmo+NsknE&5+q{%=eEmzz3Ix7{~c|1wfBb@p?==N9(U$0{q_l;s`lo+*4Kagr{2@6wq{9O{P9^=_CNj{`R-ir
w)(#z}1jm{N&X0_0N7!cw$R{`r5a*=+4+X2#bZ7ZRz({29boFyt=akR{0Oly@!vFvP
literal 0
HcmV?d00001
From b0ae9c7042ca6de017090d365bd19829d6105cf5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=A4=8F=E5=A4=A7=E8=83=86?= <1101282782@qq.com>
Date: Thu, 10 Jul 2025 16:55:46 +0800
Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BA=BF=E7=A9=BA?=
=?UTF-8?q?=E9=97=B4=E9=95=BF=E5=BA=A6=E9=80=89=E6=8B=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/Obj/Base/PolylineObject/index.js | 95 +++++++++++++++--------
src/Tools/index.js | 110 ++++++++++++++++++++++-----
2 files changed, 158 insertions(+), 47 deletions(-)
diff --git a/src/Obj/Base/PolylineObject/index.js b/src/Obj/Base/PolylineObject/index.js
index fbc6d8c..c3c21d3 100644
--- a/src/Obj/Base/PolylineObject/index.js
+++ b/src/Obj/Base/PolylineObject/index.js
@@ -277,18 +277,29 @@ class PolylineObject extends Base {
this._elms.wordsName.forEach(item => {
item.value = v
})
- if (this.options.lengthByMeter) {
- switch (v) {
- case '空间长度':
- break
- case '投影长度':
- break
- case '地表长度':
- break
- default:
- break
- }
+
+ let _this = this
+
+ if (!this.noseToTail) {
+ this.computeDistance(
+ this.options.positions,
+ 2,
+ v
+ ).then(res => {
+ _this.options.lengthByMeter = res
+ if (res > 1000 || res == 1000) {
+ _this.length = (res / 1000).toFixed(5)
+ _this.lengthUnit = '千米'
+ } else {
+ _this.length = res
+ _this.lengthUnit = '米'
+ }
+
+ })
+ } else {
+
}
+
}
get fitLengthUnit() {
@@ -538,11 +549,11 @@ class PolylineObject extends Base {
break
}
- this.options.lengthByMeter = this.computeDistance(
- this.options.positions,
- 2,
- ground
- )
+ // this.options.lengthByMeter = this.computeDistance(
+ // this.options.positions,
+ // 2,
+ // ground
+ // )
this.lengthUnit = this.lengthUnit
this._elms.heightMode && (this._elms.heightMode.value = heightModeName)
this._elms.heightModeObject && (this._elms.heightModeObject.legp_searchActive(
@@ -1330,12 +1341,18 @@ class PolylineObject extends Base {
PolylineObject.createLabel(that)
// that.entity.polyline.positionsLngLat = positions
that.renewPolygon(fromDegreesArray)
- that.options.lengthByMeter = that.computeDistance(positions, 2, ground)
- that.lengthUnit = that.options['length-unit']
- syncData(that.sdk, that.options.id)
- if (that.options.show) {
- setSplitDirection(0, that.options.id)
- }
+ that.computeDistance(
+ positions,
+ 2
+ ).then(res => {
+ that.options.lengthByMeter = res
+ that.lengthUnit = that.options['length-unit']
+ syncData(that.sdk, that.options.id)
+ if (that.options.show) {
+ setSplitDirection(0, that.options.id)
+ }
+ })
+
// if (this.options['nose-to-tail']) {
// let array = []
@@ -2150,21 +2167,39 @@ class PolylineObject extends Base {
alt: fromDegreesArray[i + 2]
})
}
- this.options.fitLengthByMeter = this.computeDistance(
+ // this.options.fitLengthByMeter = this.computeDistance(
+ // array,
+ // 2,
+ // ground
+ // )
+ let _this = this
+ this.computeDistance(
array,
2,
- ground
- )
+ this.options['words-name']
+ ).then(res => {
+ _this.options.fitLengthByMeter
+ })
} else {
- this.options.fitLengthByMeter = this.computeDistance(
+ let _this = this
+ this.computeDistance(
positions,
2,
- ground
- )
+ this.options['words-name']
+ ).then(res => {
+ _this.options.fitLengthByMeter
+ })
}
this.fitLengthUnit = this.options['fit-length-unit']
- this.options.lengthByMeter = this.computeDistance(positions, 2, ground)
- this.lengthUnit = this.options['length-unit']
+ let _this = this
+ this.computeDistance(
+ positions,
+ 2,
+ this.options['words-name']
+ ).then(res => {
+ _this.options.lengthByMeter
+ _this.lengthUnit = this.options['length-unit']
+ })
return fromDegreesArray
}
diff --git a/src/Tools/index.js b/src/Tools/index.js
index 3cf0284..9fd7df2 100644
--- a/src/Tools/index.js
+++ b/src/Tools/index.js
@@ -139,30 +139,107 @@ class Tools {
* @param [fractionDigits=2] 保留小数点位数
* @param [ground=true] 是否贴地
* */
- computeDistance(positions = [], fractionDigits = 2, ground = true) {
+ // computeDistance(positions = [], fractionDigits = 2, ground = true) {
+ // if (positions.length < 2) {
+ // return 0
+ // } else {
+ // let length = 0
+ // if (ground) {
+ // let lineString = []
+ // positions.forEach((item) => {
+ // lineString.push([item.lng, item.lat, item.alt])
+ // })
+ // let line = turf.lineString(lineString)
+ // length = turf.length(line) * 1000
+ // }
+ // else {
+ // 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);
+ // const distance = Cesium.Cartesian3.distance(position1, position2);
+ // length = length + distance
+ // }
+ // }
+ // return length.toFixed(fractionDigits)
+ // }
+ // }
+ async computeDistance(positions = [], fractionDigits = 2, type = '空间长度') {
if (positions.length < 2) {
return 0
} else {
let length = 0
- if (ground) {
- let lineString = []
- positions.forEach((item) => {
- lineString.push([item.lng, item.lat, item.alt])
- })
- let line = turf.lineString(lineString)
- length = turf.length(line) * 1000
- }
- else {
- 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);
- const distance = Cesium.Cartesian3.distance(position1, position2);
- length = length + distance
- }
+ switch (type) {
+ case '空间长度':
+ 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);
+ const distance = Cesium.Cartesian3.distance(position1, position2);
+ length = length + distance
+ }
+ break
+ case '投影长度':
+ 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);
+ const distance = Cesium.Cartesian3.distance(position1, position2);
+ length = length + distance
+ }
+ break
+ case '地表长度':
+ let meters
+ let lineString2 = []
+ positions.forEach((item) => {
+ lineString2.push([item.lng, item.lat, item.alt])
+ })
+ let line2 = turf.lineString(lineString2)
+ let d = turf.length(line2) * 1000
+ meters = d > 20 ? d / 20 : d
+
+ let res = this.chunkLine(positions, meters)
+ let coordinates = []
+ res.forEach((Feature, index) => {
+ if (index === 0) {
+ coordinates = [...Feature.geometry.coordinates]
+ } else {
+ coordinates.push(Feature.geometry.coordinates[1])
+ }
+ })
+ let arr = []
+ for (const item of coordinates) {
+ const index = coordinates.indexOf(item);
+ let r = await this.sampleHeight({ lng: item[0], lat: item[1], alt: 0 }, index)
+ r.position.alt = r.position.alt < 0 ? 0 : r.position.alt
+ arr.push(r)
+ }
+ let l = arr.length - 1
+ arr.forEach((item, index) => {
+ if (index !== l) {
+ let posi = [item.position, arr[index + 1].position]
+ let d1 = 0
+ for (let i = 0; i < posi.length - 1; i++) {
+ const position1 = Cesium.Cartesian3.fromDegrees(posi[i].lng, posi[i].lat, posi[i].alt);
+ const position2 = Cesium.Cartesian3.fromDegrees(posi[i + 1].lng, posi[i + 1].lat, posi[i + 1].alt);
+ const distance = Cesium.Cartesian3.distance(position1, position2);
+ d1 = d1 + distance
+ }
+
+ let d2 = Math.abs(item.position.alt - arr[index + 1].position.alt)
+ let d3 = Math.sqrt(d1 * d1 + d2 * d2)
+ length += d3
+ }
+ })
+ break
+ default:
+ break;
}
return length.toFixed(fractionDigits)
}
}
+ async sampleHeight(p1, index) {
+ let p2 = await this.sampleHeightMostDetailed([p1])
+ p1.alt = p2[0].height
+ return { position: p1, index }
+ }
/**@description 计算多边形面积
* @method computeArea
@@ -555,7 +632,6 @@ class Tools {
// dashSize: newParam.dashSize,
space: newParam.space
})
- console.log(newParam.space)
break
case 6: //流动虚线2
material = new Cesium.FlowDashedLineFlowMaterialProperty({
From ff60cc4f65d70531e5d418ff2a7ab100e1b0f08e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=A4=8F=E5=A4=A7=E8=83=86?= <1101282782@qq.com>
Date: Fri, 11 Jul 2025 15:46:29 +0800
Subject: [PATCH 3/3] =?UTF-8?q?=E7=BA=BF=20=E7=A9=BA=E9=97=B4=E9=95=BF?=
=?UTF-8?q?=E5=BA=A6=E3=80=81=E6=8A=95=E5=BD=B1=E9=95=BF=E5=BA=A6=E3=80=81?=
=?UTF-8?q?=E5=9C=B0=E8=A1=A8=E9=95=BF=E5=BA=A6bug=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/Obj/Base/PolylineObject/index.js | 55 +++++++++------------------
src/Tools/index.js | 24 ++++--------
static/img/arrow/1.png | Bin 17773 -> 5586 bytes
static/img/arrow/2.png | Bin 3317 -> 1297 bytes
static/img/arrow/3.png | Bin 10202 -> 3384 bytes
static/img/arrow/4.png | Bin 20367 -> 5316 bytes
static/img/arrow/5.png | Bin 56821 -> 7086 bytes
static/img/arrow/6.png | Bin 10767 -> 18089 bytes
8 files changed, 25 insertions(+), 54 deletions(-)
diff --git a/src/Obj/Base/PolylineObject/index.js b/src/Obj/Base/PolylineObject/index.js
index 86b5b87..bf652c8 100644
--- a/src/Obj/Base/PolylineObject/index.js
+++ b/src/Obj/Base/PolylineObject/index.js
@@ -23,7 +23,7 @@ class PolylineObject extends Base {
* @description 折线
* @param options {object} 线属性
* @param options.name{string} 名称
- * @param options.width=3{number} 线宽
+ * @param options.width * @param options.width=3{number} 线宽
* @param options.color=#ff0000 {string} 颜色
* @param options.type=0 {number} 材质类型 0-实线 1-虚线 2-泛光
* @param options.heightMode=2{number} 高度模式(0:海拔高度;1:相对高度;2:依附模式)
@@ -261,6 +261,7 @@ class PolylineObject extends Base {
break
default:
this.length = this.noseToTail ? this.options.fitLengthByMeter : this.options.lengthByMeter
+ break
}
} else {
let length = this.noseToTail ? this.options.fitLengthByMeter : this.options.lengthByMeter
@@ -279,7 +280,6 @@ class PolylineObject extends Base {
})
let _this = this
-
if (!this.noseToTail) {
this.computeDistance(
this.options.positions,
@@ -294,12 +294,10 @@ class PolylineObject extends Base {
_this.length = res
_this.lengthUnit = '米'
}
-
})
} else {
-
+ let fromDegreesArray = this.renewPositions(this.options.positions)
}
-
}
get fitLengthUnit() {
@@ -478,16 +476,20 @@ class PolylineObject extends Base {
}
if (v) {
if (this.options.fitLengthByMeter > 1000 || this.options.fitLengthByMeter == 1000) {
- document.getElementsByClassName('input-select-unit')[1].querySelectorAll('dd')[1].click()
+ let dom = document.getElementsByClassName('input-select-unit')[1]
+ dom && dom.querySelectorAll('dd')[1] && dom.querySelectorAll('dd')[1].click()
} else {
- document.getElementsByClassName('input-select-unit')[1].querySelectorAll('dd')[0].click()
+ let dom = document.getElementsByClassName('input-select-unit')[1]
+ dom && dom.querySelectorAll('dd')[0] && dom.querySelectorAll('dd')[0].click()
}
} else {
if (this.options.lengthByMeter > 1000 || this.options.lengthByMeter == 1000) {
- document.getElementsByClassName('input-select-unit')[1].querySelectorAll('dd')[1].click()
+ let dom = document.getElementsByClassName('input-select-unit')[1]
+ dom && dom.querySelectorAll('dd')[1] && dom.querySelectorAll('dd')[1].click()
} else {
- document.getElementsByClassName('input-select-unit')[1].querySelectorAll('dd')[0].click()
+ let dom = document.getElementsByClassName('input-select-unit')[1]
+ dom && dom.querySelectorAll('dd')[0] && dom.querySelectorAll('dd')[0].click()
}
}
}
@@ -554,7 +556,7 @@ class PolylineObject extends Base {
// 2,
// ground
// )
- this.lengthUnit = this.lengthUnit
+ // this.lengthUnit = this.lengthUnit
this._elms.heightMode && (this._elms.heightMode.value = heightModeName)
this._elms.heightModeObject && (this._elms.heightModeObject.legp_searchActive(
heightModeName
@@ -810,29 +812,6 @@ class PolylineObject extends Base {
}, //点击确认按钮事件回调
clear: () => {
this.labelLineColor = 'rgba(0,255,255,0.5)'
- } //点击清空按钮事件回调
- })
- this._elms.labelLineColor[i] = lineColorPicker
- })
- }
- }
-
- get labelBackgroundColorStart() {
- return this.options.label.backgroundColor[0]
- }
- set labelBackgroundColorStart(v) {
- this.options.label.backgroundColor[0] = v
- this.label.backgroundColor = [v, this.label.backgroundColor[1]]
- if (this._elms.labelBackgroundColorStart) {
- this._elms.labelBackgroundColorStart.forEach((item, i) => {
- let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
- el: item.el,
- size: 'mini', //颜色box类型
- alpha: true, //是否开启透明度
- defaultColor: this.labelBackgroundColorStart,
- disabled: false, //是否禁止打开颜色选择器
- openPickerAni: 'opacity', //打开颜色选择器动画
- sure: color => {
this.labelBackgroundColorStart = color
}, //点击确认按钮事件回调
clear: () => {
@@ -2178,7 +2157,8 @@ class PolylineObject extends Base {
2,
this.options['words-name']
).then(res => {
- _this.options.fitLengthByMeter
+ _this.options.fitLengthByMeter = res
+ _this.lengthUnit = _this.options['length-unit']
})
} else {
let _this = this
@@ -2187,17 +2167,18 @@ class PolylineObject extends Base {
2,
this.options['words-name']
).then(res => {
- _this.options.fitLengthByMeter
+ _this.options.fitLengthByMeter = res
+ _this.lengthUnit = _this.options['length-unit']
})
}
- this.fitLengthUnit = this.options['fit-length-unit']
+
let _this = this
this.computeDistance(
positions,
2,
this.options['words-name']
).then(res => {
- _this.options.lengthByMeter
+ _this.options.lengthByMeter = res
_this.lengthUnit = this.options['length-unit']
})
return fromDegreesArray
diff --git a/src/Tools/index.js b/src/Tools/index.js
index 95fad91..8d3ba38 100644
--- a/src/Tools/index.js
+++ b/src/Tools/index.js
@@ -212,22 +212,12 @@ class Tools {
arr.push(r)
}
let l = arr.length - 1
- arr.forEach((item, index) => {
- if (index !== l) {
- let posi = [item.position, arr[index + 1].position]
- let d1 = 0
- for (let i = 0; i < posi.length - 1; i++) {
- const position1 = Cesium.Cartesian3.fromDegrees(posi[i].lng, posi[i].lat, posi[i].alt);
- const position2 = Cesium.Cartesian3.fromDegrees(posi[i + 1].lng, posi[i + 1].lat, posi[i + 1].alt);
- const distance = Cesium.Cartesian3.distance(position1, position2);
- d1 = d1 + distance
- }
-
- let d2 = Math.abs(item.position.alt - arr[index + 1].position.alt)
- let d3 = Math.sqrt(d1 * d1 + d2 * d2)
- length += d3
- }
- })
+ for (let i = 0; i < arr.length - 1; i++) {
+ const position1 = Cesium.Cartesian3.fromDegrees(arr[i].position.lng, arr[i].position.lat, 0);
+ const position2 = Cesium.Cartesian3.fromDegrees(arr[i + 1].position.lng, arr[i + 1].position.lat, 0);
+ const distance = Cesium.Cartesian3.distance(position1, position2);
+ length = length + distance
+ }
break
default:
break;
@@ -1273,7 +1263,7 @@ class Tools {
replaceHost(url, host) {
let newUrl = url
- if(!url || !host) {
+ if (!url || !host) {
return url
}
try {
diff --git a/static/img/arrow/1.png b/static/img/arrow/1.png
index a959a24f69097db19494de6bc1214f70ee666563..650bc1fb4ea3ef331d5c5cac1da393697168a21d 100644
GIT binary patch
literal 5586
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