This commit is contained in:
zh
2025-07-09 17:44:11 +08:00
25 changed files with 2289 additions and 81 deletions

View File

@ -1,7 +1,7 @@
import { attributeElm, labelStyleElm1, labelStyleElm2 } from '../../Element/elm_html'
function html(that) {
return `
return `
<span class="custom-divider"></span>
<div class="div-item">
<div class="row" style="align-items: flex-start;">
@ -97,6 +97,27 @@ function html(that) {
<div class="col">
</div>
</div>
<div class="row" id="dashTextureDom">
<div class="col">
<span class="label">动画顺向</span>
<input class="btn-switch" type="checkbox" @model="rotate">
</div>
<div class="col">
<span class="label">动画时长</span>
<div class="input-number input-number-unit-1" style="width: 80px;">
<input class="input" type="number" title="" min="0" max="999999" step="0.1" @model="speed">
<span class="unit">s</span>
<span class="arrow"></span>
</div>
</div>
<div class="col" >
<span class="label lineSpace">间距</span>
<div class="input-number input-number-unit-1 lineSpace" style="width: 80px;">
<input class="input" type="number" title="" min="0" max="4.5" step="0.1" @model="space">
<span class="arrow"></span>
</div>
</div>
</div>
<div class="row">
<div class="col">
<span class="label">线段缓冲</span>

View File

@ -22,7 +22,7 @@ class eventBinding {
let isEvent = false
let removeName = []
if (!elements[i] || !elements[i].attributes) {
continue
continue
}
for (let m of elements[i].attributes) {
switch (m.name) {
@ -38,13 +38,15 @@ class eventBinding {
if (e.target.type == 'number') {
if (e.data != '.' && (e.data != '-' || e.target.value)) {
value = Number(value)
if((e.target.max) && value>Number(e.target.max)) {
if ((e.target.max) && value > Number(e.target.max)) {
value = Number(e.target.max)
e.target.value = value
}
if((e.target.min) && value<Number(e.target.min)) {
if ((e.target.min) && value < Number(e.target.min)) {
value = Number(e.target.min)
e.target.value = value
}
if((e.target.dataset.min) && value<Number(e.target.dataset.min)) {
if ((e.target.dataset.min) && value < Number(e.target.dataset.min)) {
value = Number(e.target.dataset.min)
}
that[m.value] = value
@ -54,14 +56,14 @@ class eventBinding {
that[m.value] = value
}
})
if(elements[i].nodeName=='IMG') {
if (elements[i].nodeName == 'IMG') {
elements[i].src = that[m.value]
}
else {
elements[i].value = that[m.value]
}
}
if(this.element[m.value]) {
if (this.element[m.value]) {
this.element[m.value].push(elements[i])
}
else {
@ -84,7 +86,7 @@ class eventBinding {
isEvent = true
Event.push((e) => {
let value = e.target.value
if(e.target.type == 'number' && value!='') {
if (e.target.type == 'number' && value != '') {
value = Number(value)
e.target.value = value
}
@ -97,7 +99,7 @@ class eventBinding {
}
// elements[i].attributes[m] = undefined
}
for(let n=0;n<removeName.length;n++) {
for (let n = 0; n < removeName.length; n++) {
elements[i].attributes.removeNamedItem(removeName[n])
}
@ -117,4 +119,4 @@ class eventBinding {
}
const EventBinding = new eventBinding();
export default EventBinding;
export default EventBinding;

View File

@ -13,7 +13,6 @@ import MouseTip from '../../../MouseTip'
import Controller from '../../../Controller/index'
import { syncData } from '../../../Global/MultiViewportMode'
import { legp } from '../../Element/datalist'
import { getFontList, getFontFamilyName } from '../../Element/fontSelect'
import { setSplitDirection, syncSplitData, setActiveId } from '../../../Global/SplitScreen'
import { setActiveViewer, closeRotateAround, closeViewFollow } from '../../../Global/global'
@ -58,6 +57,10 @@ class PolylineObject extends Base {
this.options['nose-to-tail'] = options['nose-to-tail'] || false
this.options.smooth = options.smooth || false
this.options.extend = options.extend || false
this.options.rotate = options.rotate || true
this.options.space = options.space || 0.1
this.options.speed = options.speed || 1
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['extend-width'] =
@ -78,7 +81,6 @@ class PolylineObject extends Base {
options.label.fontSize || options.label.fontSize === 0
? options.label.fontSize
: 20,
fontFamily: options.label.fontFamily ? options.label.fontFamily : 0,
color: options.label.color || '#ffffff',
lineWidth:
options.label.lineWidth || options.label.lineWidth === 0
@ -146,7 +148,7 @@ class PolylineObject extends Base {
}
set color(v) {
this.options.color = v || '#ff0000'
this.entity.polyline.material = this.getMaterial(this.options.color, this.options.type)
this.entity.polyline.material = this.getMaterial(this.options.color, this.options.type, this.entity, this.options)
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
@ -168,6 +170,48 @@ class PolylineObject extends Base {
}
}
get speed() {
return this.options.speed
}
set speed(v) {
this.options.speed = v
this.entity.polyline.material = this.getMaterial(this.options.color, this.options.type, this.entity, this.options)
}
get dashSize() {
return this.options.dashSize
}
set dashSize(v) {
this.options.dashSize = v
this.entity.polyline.material = this.getMaterial(this.options.color, this.options.type, this.entity, this.options)
}
get rotate() {
return this.options.rotate
}
set rotate(v) {
this.options.rotate = v
PolylineObject.closeNodeEdit(this)
this._elms.rotate &&
this._elms.rotate.forEach(item => {
item.checked = v
})
this.options.rotate = v
this.entity.polyline.material = this.getMaterial(this.options.color, this.options.type, this.entity, this.options)
}
get space() {
return this.options.space
}
set space(v) {
this.options.space = v
this.entity.polyline.material = this.getMaterial(this.options.color, this.options.type, this.entity, this.options)
}
get length() {
return this.options.length
}
@ -275,6 +319,56 @@ class PolylineObject extends Base {
name: '泛光',
value: '泛光',
key: 2
},
{
name: '尾迹光线',
value: '尾迹光线',
key: 3
},
{
name: '多尾迹光线',
value: '多尾迹光线',
key: 4
},
{
name: '流动虚线1',
value: '流动虚线1',
key: 5
},
{
name: '流动虚线2',
value: '流动虚线2',
key: 6
},
{
name: '流动箭头1',
value: '流动箭头1',
key: 7
},
{
name: '流动箭头2',
value: '流动箭头2',
key: 8
},
{
name: '流动箭头3',
value: '流动箭头3',
key: 9
},
{
name: '流动箭头4',
value: '流动箭头4',
key: 10
},
{
name: '流动箭头5',
value: '流动箭头5',
key: 11
},
{
name: '流动箭头6',
value: '流动箭头6',
key: 12
}
]
this.options.type = Number(v)
@ -283,6 +377,18 @@ class PolylineObject extends Base {
this._elms.lineType &&
this._elms.lineType.forEach(item => {
item.value = lineTypeData[i].value
if (2 < item.value && item.value < 13) {//贴图参数
document.getElementById('dashTextureDom').style.display = 'flex'
} else {
document.getElementById('dashTextureDom').style.display = 'none'
}
if (2 < item.value && item.value < 5) {//尾迹参数
document.getElementsByClassName('lineSpace')[0].style.display = 'none'
document.getElementsByClassName('lineSpace')[1].style.display = 'none'
} else {
document.getElementsByClassName('lineSpace')[0].style.display = 'flex'
document.getElementsByClassName('lineSpace')[1].style.display = 'flex'
}
})
break
}
@ -291,7 +397,9 @@ class PolylineObject extends Base {
this.entity.polyline &&
(this.entity.polyline.material = this.getMaterial(
this.options.color,
this.options.type
this.options.type,
this.entity,
this.options
))
}
get noseToTail() {
@ -445,6 +553,7 @@ class PolylineObject extends Base {
set extendWidth(v) {
this.options['extend-width'] = v
this.heightMode = this.heightMode
this._elms.extendWidth &&
this._elms.extendWidth.forEach(item => {
item.value = v
@ -507,21 +616,6 @@ class PolylineObject extends Base {
})
}
get labelFontFamily() {
return this.options.label.fontFamily
}
set labelFontFamily(v) {
this.options.label.fontFamily = v || 0
this.label && (this.label.fontFamily = this.options.label.fontFamily)
let name = getFontFamilyName(this.labelFontFamily) || ''
this._elms.labelFontFamily &&
this._elms.labelFontFamily.forEach(item => {
item.value = name
})
}
get labelColor() {
return this.options.label.color
}
@ -1141,7 +1235,6 @@ class PolylineObject extends Base {
],
text: that.options.name,
fontSize: that.options.label.fontSize,
fontFamily: that.options.label.fontFamily,
color: that.options.label.color,
pixelOffset: that.options.label.pixelOffset,
backgroundColor: that.options.label.backgroundColor,
@ -1170,7 +1263,7 @@ class PolylineObject extends Base {
positions: Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray),
width: that.options.width,
clampToGround: ground,
material: that.getMaterial(that.options.color, that.options.type),
material: that.getMaterial(that.options.color, that.options.type, that.entity, that.options),
zIndex: that.sdk._entityZIndex
}
})
@ -1508,6 +1601,56 @@ class PolylineObject extends Base {
name: '泛光',
value: '泛光',
key: 2
},
{
name: '尾迹光线',
value: '尾迹光线',
key: 3
},
{
name: '多尾迹光线',
value: '多尾迹光线',
key: 4
},
{
name: '流动虚线1',
value: '流动虚线1',
key: 5
},
{
name: '流动虚线2',
value: '流动虚线2',
key: 6
},
{
name: '流动箭头1',
value: '流动箭头1',
key: 7
},
{
name: '流动箭头2',
value: '流动箭头2',
key: 8
},
{
name: '流动箭头3',
value: '流动箭头3',
key: 9
},
{
name: '流动箭头4',
value: '流动箭头4',
key: 10
},
{
name: '流动箭头5',
value: '流动箭头5',
key: 11
},
{
name: '流动箭头6',
value: '流动箭头6',
key: 12
}
]
let lineTypeDataLegpObject = legp(
@ -1533,6 +1676,20 @@ class PolylineObject extends Base {
for (let i = 0; i < lineTypeData.length; i++) {
if (lineTypeData[i].value === lineTypeDataLegpElm.value) {
this.lineType = lineTypeData[i].key
//控制参数显隐
if (2 < this.lineType && this.lineType < 13) {//贴图参数
document.getElementById('dashTextureDom').style.display = 'flex'
} else {
document.getElementById('dashTextureDom').style.display = 'none'
}
if (2 < this.lineType && this.lineType < 5) {//尾迹参数
document.getElementsByClassName('lineSpace')[0].style.display = 'none'
document.getElementsByClassName('lineSpace')[1].style.display = 'none'
} else {
document.getElementsByClassName('lineSpace')[0].style.display = 'flex'
document.getElementsByClassName('lineSpace')[1].style.display = 'flex'
}
break
}
}
@ -1760,37 +1917,6 @@ class PolylineObject extends Base {
this._elms.altInput.push(altInput)
tBodyElm.appendChild(tr)
}
let fontData = getFontList()
let fontObject = legp(
this._DialogObject._element.content.getElementsByClassName(
'font-select-box'
)[0],
'.font-select'
)
if (fontObject) {
fontObject.legp_search(fontData)
let fontDataLegpElm = this._DialogObject._element.content
.getElementsByClassName('font-select')[0]
.getElementsByTagName('input')[0]
fontDataLegpElm.value = fontData[this.labelFontFamily].value
for (let i = 0; i < fontData.length; i++) {
if (fontData[i].value == fontDataLegpElm.value) {
fontObject.legp_searchActive(fontData[i].value)
break
}
}
fontDataLegpElm.addEventListener('input', () => {
for (let i = 0; i < fontData.length; i++) {
if (fontData[i].value === fontDataLegpElm.value) {
this.labelFontFamily = fontData[i].key
break
}
}
})
this._elms.labelFontFamily = [fontDataLegpElm]
}
}, 0)
} else {
if (this._DialogObject && this._DialogObject.close) {
@ -1972,10 +2098,6 @@ class PolylineObject extends Base {
this.labelShow = this.originalOptions.label.show
this.labelColor = this.originalOptions.label.color
this.labelFontSize = this.originalOptions.label.fontSize
this.labelFontFamily = this.originalOptions.label.fontFamily
this.labelScaleByDistance = this.originalOptions.label.scaleByDistance
this.labelNear = this.originalOptions.label.near
this.labelFar = this.originalOptions.label.far
this.labelLineWidth = this.originalOptions.label.lineWidth
this.labelPixelOffset = this.originalOptions.label.pixelOffset
this.labelLineColor = this.originalOptions.label.lineColor
@ -1987,6 +2109,10 @@ class PolylineObject extends Base {
this.attributeVr = this.options.attribute.vr.content
this.attributeCamera = this.options.attribute.camera.content
this.attributeGoods = this.options.attribute.goods.content
this.rotate = this.originalOptions.rotate
this.speed = this.originalOptions.speed
this.dashSize = this.originalOptions.dashSize
this.space = this.originalOptions.space
this.cameraSelect && this.cameraSelect()
this.goodsSelect && this.goodsSelect()
@ -2039,7 +2165,7 @@ class PolylineObject extends Base {
.value
) {
this.options.attribute.link.content.push({
name: '链接',
name: '链接' + (this.options.attribute.link.content.length + 1),
url: this._DialogObject._element.content.getElementsByClassName(
'link_add'
)[0].value
@ -2057,7 +2183,7 @@ class PolylineObject extends Base {
// input.addEventListener('change', (event) => {
// if (input.value) {
// this.options.attribute.link.content.push({
// name: '链接',
// name: '链接' + (this.options.attribute.link.content.length + 1),
// url: input.value
// })
// this.attributeLink = this.options.attribute.link.content
@ -2067,7 +2193,7 @@ class PolylineObject extends Base {
}
addAttributeLink(link) {
this.options.attribute.link.content.push({
name: '链接',
name: '链接' + (this.options.attribute.link.content.length + 1),
url: link
})
this.attributeLink = this.options.attribute.link.content
@ -2080,7 +2206,7 @@ class PolylineObject extends Base {
)[0].value
) {
this.options.attribute.vr.content.push({
name: '全景图' ,
name: '全景图' + (this.options.attribute.vr.content.length + 1),
url: this._DialogObject._element.content.getElementsByClassName(
'vr_add'
)[0].value
@ -2096,7 +2222,7 @@ class PolylineObject extends Base {
addAttributeRr(vr) {
this.options.attribute.vr.content.push({
name: '全景图' ,
name: '全景图' + (this.options.attribute.vr.content.length + 1),
url: vr
})
this.attributeVr = this.options.attribute.vr.content