Compare commits

...

34 Commits

Author SHA1 Message Date
zh
3eadec9b11 Merge branch 'develop' of http://xny.yj-3d.com:3000/zh/sdk4.0 2025-07-16 15:02:56 +08:00
zh
ea7feea226 修改自定义颜色插件 2025-07-16 15:02:18 +08:00
05c69c034e 修改缩略图 2025-07-16 10:26:14 +08:00
a82a8abf65 线贴图 速度bug修改 2025-07-15 18:23:31 +08:00
2fd421e637 Merge branch 'develop' of http://xny.yj-3d.com:3000/zh/sdk4.0 into develop 2025-07-15 10:42:08 +08:00
6e2efbe544 线贴图速度优化 2025-07-15 10:41:58 +08:00
zh
a43c71d94e Merge branch 'develop' of http://xny.yj-3d.com:3000/zh/sdk4.0 into develop 2025-07-15 10:38:05 +08:00
zh
12fcb9fed7 距离计算 2025-07-15 10:37:23 +08:00
f24a95ab32 线贴图 速度相同 切换有问题 2025-07-14 18:05:19 +08:00
c03cd63532 Merge branch 'develop' of http://xny.yj-3d.com:3000/zh/sdk4.0 into develop 2025-07-14 11:32:29 +08:00
1b712424d8 图片 2025-07-14 11:32:25 +08:00
51f7ef9864 修改飞线和光照bug 2025-07-14 11:31:10 +08:00
zh
040049236d 全球等高线 2025-07-14 10:11:48 +08:00
zh
2db5eafabf 全球等高线忽略小于0的高度 2025-07-14 09:27:46 +08:00
zh
c843b025fc 等高线控制 2025-07-11 17:50:52 +08:00
zh
53b4eb03e5 Merge branch 'develop' of http://xny.yj-3d.com:3000/zh/sdk4.0 2025-07-11 15:59:51 +08:00
zh
e242427228 将url中localhost端口改为当前host端口 2025-07-11 15:59:38 +08:00
ff60cc4f65 线 空间长度、投影长度、地表长度bug修改 2025-07-11 15:46:29 +08:00
zh
e45b67298a Merge branch 'develop' of http://xny.yj-3d.com:3000/zh/sdk4.0 into develop 2025-07-11 09:21:38 +08:00
zh
579b76dc0e 将url中localhost端口改为当前host端口 2025-07-11 09:19:20 +08:00
b0ae9c7042 修改线空间长度选择 2025-07-10 16:55:46 +08:00
11812253e6 线样式修改 2025-07-10 15:14:01 +08:00
zh
399725ed06 Merge branch 'develop' of http://xny.yj-3d.com:3000/zh/sdk4.0 2025-07-09 17:44:11 +08:00
zh
574538e7bb 默认墙材质 2025-07-09 17:40:13 +08:00
45f2d6f4eb 修改间距大值 缓冲区bug 2025-07-09 11:26:33 +08:00
zh
ff4f823a27 修改点线面默认样式 2025-07-09 11:15:53 +08:00
zh
c6aa99792f 广告牌高程计算忽略三维扫描 2025-07-08 17:50:23 +08:00
zh
16942a2e63 卷帘对比下图层层级修改同步 2025-07-08 16:48:22 +08:00
dd003aa00d 贴图反向bug修改 2025-07-07 17:17:40 +08:00
ea94efb65f Merge branch 'develop' of http://xny.yj-3d.com:3000/zh/sdk4.0 into develop 2025-07-07 16:21:07 +08:00
fa3325580c 线样式(无同步间距调节) 2025-07-07 16:21:01 +08:00
zh
0cf59afffd Merge branch 'master' of http://xny.yj-3d.com:3000/zh/sdk4.0 into develop 2025-07-04 13:58:04 +08:00
zh
2b6edf70b9 Merge branch 'master' of http://xny.yj-3d.com:3000/zh/sdk4.0 into develop 2025-07-03 18:18:43 +08:00
484fe70e16 飞线,光照 2025-07-03 16:28:48 +08:00
103 changed files with 6259 additions and 2405 deletions

View File

@ -49,7 +49,7 @@ export default class DrawCircle extends Draw {
if (clickNum === 2) {
radius_points = cache_points.concat(cartesian)
endpoint = this.cartesian3Towgs84(cartesian, this.viewer)
radius = this.computeDistance([center, endpoint])
radius = this.computeDistance2([center, endpoint])
positions = this.createCircle(center, radius)
this.end()
cb(null, { center, radius: Number(radius) })
@ -74,7 +74,7 @@ export default class DrawCircle extends Draw {
if (clickNum) {
radius_points = cache_points.concat(cartesian)
endpoint = this.cartesian3Towgs84(cartesian, this.viewer)
radius = this.computeDistance([center, endpoint])
radius = this.computeDistance2([center, endpoint])
positions = this.createCircle(center, radius)
}
@ -108,7 +108,7 @@ export default class DrawCircle extends Draw {
if (clickNum === 2) {
radius_points = cache_points.concat(cartesian)
endpoint = this.cartesian3Towgs84(cartesian, this.viewer)
radius = this.computeDistance([center, endpoint])
radius = this.computeDistance2([center, endpoint])
positions = this.createCircle(center, radius)
this.end()
cb(null, { center, radius: Number(radius) })
@ -136,7 +136,7 @@ export default class DrawCircle extends Draw {
if (clickNum === 2) {
radius_points = cache_points.concat(cartesian)
endpoint = this.cartesian3Towgs84(cartesian, this.viewer)
radius = this.computeDistance([center, endpoint])
radius = this.computeDistance2([center, endpoint])
positions = this.createCircle(center, radius)
this.end()
cb(null, { center, radius: Number(radius) })
@ -161,7 +161,7 @@ export default class DrawCircle extends Draw {
if (clickNum) {
radius_points = cache_points.concat(cartesian)
endpoint = this.cartesian3Towgs84(cartesian, this.viewer)
radius = this.computeDistance([center, endpoint])
radius = this.computeDistance2([center, endpoint])
positions = this.createCircle(center, radius)
}
@ -195,7 +195,7 @@ export default class DrawCircle extends Draw {
if (clickNum === 2) {
radius_points = cache_points.concat(cartesian)
endpoint = this.cartesian3Towgs84(cartesian, this.viewer)
radius = this.computeDistance([center, endpoint])
radius = this.computeDistance2([center, endpoint])
positions = this.createCircle(center, radius)
this.end()
cb(null, { center, radius: Number(radius) })

View File

@ -0,0 +1,109 @@
function html() {
return `
<span class="custom-divider"></span>
<div class="div-item">
<div class="row" style="align-items: flex-start;">
<div class="col" style="flex: 0 0 120px;">
<span class="label">等高线</span>
<input class="btn-switch show" type="checkbox">
</div>
</div>
</div>
<span class="custom-divider"></span>
<div class="div-item">
<div class="row">
<div class="col input-select-unit-box">
<span class="label">等高距</span>
<div class="input-number input-number-unit-1">
<input class="input equal-height-distance" type="number" title="" min="1" max="1000">
<span class="unit">m</span>
<span class="arrow"></span>
</div>
</div>
<div class="col input-select-unit-box" style="flex: 0 0 60px;">
</div>
<div class="col input-select-unit-box" style="flex: 0 0 157px;">
<span class="label">选中线颜色</span>
<div class="active-color"></div>
</div>
</div>
</div>
<span class="custom-divider"></span>
<div class="div-item">
<div class="row" style="align-items: flex-start;">
<div class="col" style="flex: 0 0 120px;">
<span class="label">计曲线</span>
<input class="btn-switch index-contour-switch" type="checkbox">
</div>
<div class="col input-select-unit-box" style="flex: 0 0 120px;">
<span class="label">计曲线颜色</span>
<div class="index-contour-color"></div>
</div>
<div class="col input-select-unit-box">
<span class="label">计曲线宽度</span>
<div class="input-number input-number-unit-1">
<input class="input index-contour-width" type="number" title="" step="0.1" min="1" max="10">
<span class="unit">px</span>
<span class="arrow"></span>
</div>
</div>
</div>
<div class="row" style="align-items: flex-start;">
<div class="col" style="flex: 0 0 120px;">
<span class="label">首曲线</span>
<input class="btn-switch intermediate-contour-switch" type="checkbox">
</div>
<div class="col input-select-unit-box" style="flex: 0 0 120px;">
<span class="label">首曲线颜色</span>
<div class="intermediate-contour-color"></div>
</div>
<div class="col input-select-unit-box">
<span class="label">首曲线宽度</span>
<div class="input-number input-number-unit-1">
<input class="input intermediate-contour-width" type="number" step="0.1" title="" min="1" max="10">
<span class="unit">px</span>
<span class="arrow"></span>
</div>
</div>
</div>
<div class="row" style="align-items: flex-start;">
<div class="col" style="flex: 0 0 120px;">
<span class="label">间曲线</span>
<input class="btn-switch halfInterval-contour-switch" type="checkbox">
</div>
<div class="col input-select-unit-box" style="flex: 0 0 120px;">
<span class="label">间曲线颜色</span>
<div class="halfInterval-contour-color"></div>
</div>
<div class="col input-select-unit-box">
<span class="label">间曲线宽度</span>
<div class="input-number input-number-unit-1">
<input class="input halfInterval-contour-width" type="number" title="" min="1" max="10">
<span class="unit">px</span>
<span class="arrow"></span>
</div>
</div>
</div>
<div class="row" style="align-items: flex-start;">
<div class="col" style="flex: 0 0 120px;">
<span class="label">助曲线</span>
<input class="btn-switch supplementary-contour-switch" type="checkbox">
</div>
<div class="col input-select-unit-box" style="flex: 0 0 120px;">
<span class="label">助曲线颜色</span>
<div class="supplementary-contour-color"></div>
</div>
<div class="col input-select-unit-box">
<span class="label">助曲线宽度</span>
<div class="input-number input-number-unit-1">
<input class="input supplementary-contour-width" type="number" title="" min="1" max="10">
<span class="unit">px</span>
<span class="arrow"></span>
</div>
</div>
</div>
</div>
`
}
export { html }

View File

@ -3,12 +3,35 @@
*/
import Dialog from "../../Obj/Element/Dialog";
import Tools from "../../Tools";
import { flyTo } from '../global'
import YJColorPicker from "../../Obj/Element/yj-color-picker";
import { html } from "./_element";
let _DialogObject = null;
let material = null;
let handler = null;
let activeHeightElm = null;
let tools
let _sdk
let secondaryLinesCount = 19
let show = false
let equalHeightDistance = 10
let activeColor = '#ffd000'
let indexContourShow = true
let indexContourWidth = 2.5
let indexContourColor = '#43cf7c'
let intermediateContourShow = true
let intermediateContourWidth = 1.8
let intermediateContourColor = '#ff0000'
let halfIntervalContourShow = false
let halfIntervalContourWidth = 1.0
let halfIntervalContourColor = '#64b6d9'
let supplementaryContourShow = false
let supplementaryContourWidth = 1.0
let supplementaryContourColor = '#d084d1'
activeHeightElm = document.createElement('div')
activeHeightElm.className = 'YJ-customize-active-height-elm'
activeHeightElm.style.position = 'absolute'
@ -20,7 +43,39 @@ activeHeightElm.style.textAlign = 'center'
activeHeightElm.style.pointerEvents = 'none'
activeHeightElm.style.color = '#ff0000'
activeHeightElm.style.display = 'none'
function accordingToCameraHeight() {
if (_sdk) {
const camera = _sdk.viewer.camera;
const position = camera.positionCartographic;
// 计算相机高度(相对于椭球面)
let cameraHeight = Cesium.Math.toDegrees(position.height);
if (cameraHeight < 1000000) {
if (!_sdk.viewer.scene.globe.material && show === true) {
showContour(_sdk)
}
// if (material) {
// if (cameraHeight > 450000) {
// material.uniforms.supplementaryContourShow = false
// }
// else if (supplementaryContourShow) {
// material.uniforms.supplementaryContourShow = true
// }
// }
}
else {
hideContour(_sdk)
}
// console.log(cameraHeight)
}
}
async function dialog(sdk) {
_sdk = sdk
if (!sdk || _DialogObject) {
return
}
@ -28,13 +83,12 @@ async function dialog(sdk) {
createMaterial()
}
if (!tools) {
tools = new Tools()
tools = new Tools(sdk)
}
_DialogObject = await new Dialog(sdk, {}, {
title: "等高线", left: '180px',
title: "全局等高线", left: '180px',
top: '100px',
confirmCallBack: options => { },
closeCallBack: () => {
_DialogObject = null
}
@ -43,125 +97,374 @@ async function dialog(sdk) {
_DialogObject._element.body.className =
_DialogObject._element.body.className + ' contour'
let contentElm = document.createElement('div')
contentElm.innerHTML = `
<span class="custom-divider"></span>
<div class="div-item">
<div class="row">
<div class="col input-select-unit-box">
<span class="label">高差</span>
<div class="input-number input-number-unit-1">
<input class="input gap" type="number" title="" min="0" max="1000">
<span class="unit">m</span>
<span class="arrow"></span>
</div>
</div>
<div class="col input-select-unit-box" style="flex: 0 0 120px;">
<span class="label">主线颜色</span>
<div class="primary-lice-color"></div>
</div>
</div>
<div class="row">
<div class="col input-select-unit-box">
<span class="label">次线条数</span>
<div class="input-number input-number-unit-1">
<input class="input gap2" type="number" title="" min="0" max="10">
<span class="unit"></span>
<span class="arrow"></span>
</div>
</div>
<div class="col input-select-unit-box" style="flex: 0 0 120px;">
<span class="label">次线颜色</span>
<div class="secondary-lice-color"></div>
</div>
</div>
<div class="row" style="align-items: flex-start;">
<div class="col">
</div>
<div class="col" style="flex: 0 0 120px;">
<span class="label">开关</span>
<input class="btn-switch" type="checkbox">
</div>
</div>
</div>
<span class="custom-divider"></span>
`
contentElm.innerHTML = `
<span class="custom-divider"></span>
<div class="div-item">
<div class="row" style="align-items: flex-start;">
<div class="col" style="flex: 0 0 120px;">
<span class="label">开关</span>
<input class="btn-switch" type="checkbox">
</div>
</div>
</div>
`
contentElm.innerHTML = html(this)
_DialogObject.contentAppChild(contentElm)
contentElm.getElementsByClassName('btn-switch')[0].addEventListener('change', (e) => {
if (e.target.checked) {
if (handler) {
handler.destroy()
}
if (!sdk.viewer.container.getElementsByClassName('YJ-customize-active-height-elm')[0]) {
sdk.viewer.container.appendChild(activeHeightElm)
}
sdk.viewer.scene.postRender.removeEventListener(accordingToCameraHeight)
sdk.viewer.scene.postRender.addEventListener(accordingToCameraHeight)
handler = new Cesium.ScreenSpaceEventHandler(
sdk.viewer.canvas
)
handler.setInputAction((movement) => {
let cartesian = sdk.viewer.scene.pickPosition(movement.endPosition)
if (cartesian) {
let top = 0
let left = 0
if (sdk.viewer && sdk.viewer._element) {
let element = sdk.viewer._element.getElementsByClassName('cesium-widget')[0].getElementsByTagName('canvas')[0]
top = element.getBoundingClientRect().top + window.scrollY
left = element.getBoundingClientRect().left + window.scrollX
}
activeHeightElm.style.left = movement.endPosition.x - 50 + left + 'px'
activeHeightElm.style.top = movement.endPosition.y - 40 + top + 'px'
activeHeightElm.style.display = 'block'
let pos84 = tools.cartesian3Towgs84(cartesian, sdk.viewer)
let mainContourHeight = Math.floor(pos84.alt / material.uniforms.spacing) * material.uniforms.spacing
let gap = pos84.alt - mainContourHeight
let gap2 = material.uniforms.spacing / (material.uniforms.secondaryLinesCount + 1)
let activeHeight = Math.floor(gap / gap2) * gap2 + mainContourHeight
if ((pos84.alt - activeHeight) > gap2 / 2) {
activeHeight = activeHeight + gap2
}
material.uniforms.mouseHeight = pos84.alt
material.uniforms.mousePosition = cartesian
activeHeightElm.innerHTML = `${activeHeight.toFixed(0)}`
// 显示
let showBtn = contentElm.getElementsByClassName('show')[0]
showBtn.checked = show
showBtn.addEventListener('change', (e) => {
if (e.target.checked) {
show = true
let height = sdk.viewer.camera.positionCartographic.height
if (height > 16360) {
let cartographic = sdk.viewer.camera.positionCartographic
let options = {
position: {
lng: Cesium.Math.toDegrees(cartographic.longitude),
lat: Cesium.Math.toDegrees(cartographic.latitude),
alt: 16360,
},
}
else {
activeHeightElm.style.display = 'none'
}
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE)
sdk.viewer.scene.globe.material = material;
flyTo(sdk, options, 0.5)
}
showContour(sdk)
} else {
if (handler) {
handler.destroy()
handler = null
}
if (sdk.viewer.container.getElementsByClassName('YJ-customize-active-height-elm')[0]) {
activeHeightElm.style.display = 'none'
sdk.viewer.container.removeChild(activeHeightElm)
}
sdk.viewer.scene.globe.material = null;
show = false
hideContour(sdk)
}
})
// 等高距
let equalHeightDistanceInput = contentElm.getElementsByClassName('equal-height-distance')[0]
equalHeightDistanceInput.value = equalHeightDistance
equalHeightDistanceInput.addEventListener('blur', (e) => {
let value = initInputValue(e)
equalHeightDistance = value
equalHeightDistanceInput.value = value
if (material) {
material.uniforms.spacing = equalHeightDistance * 5
}
})
// 选中颜色
// let activeColorPicker = new YJColorPicker({
// el: contentElm.getElementsByClassName('active-color')[0],
// size: "mini",
// isLog: false,
// alpha: true, //是否开启透明度
// disabled: false, //是否禁止打开颜色选择器
// predefineColor: true, // 预定义颜色
// defaultColor: '#ffffff',
// sure: color => {
// activeColor = color
// if (material) {
// material.uniforms.activeColor = Cesium.Color.fromCssColorString(activeColor)
// }
// },
// clear: () => {
// activeColor = 'rgba(255,255,255,1)'
// if (material) {
// material.uniforms.activeColor = Cesium.Color.fromCssColorString(activeColor)
// }
// }
// })
let activeColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName('active-color')[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
defaultColor: activeColor,
disabled: false,//是否禁止打开颜色选择器
openPickerAni: 'opacity',//打开颜色选择器动画
sure: color => {
activeColor = color
if (material) {
material.uniforms.activeColor = Cesium.Color.fromCssColorString(activeColor)
}
},
clear: () => {
activeColor = 'rgba(255,255,255,1)'
if (material) {
material.uniforms.activeColor = Cesium.Color.fromCssColorString(activeColor)
}
}
})
// 计曲线开关
let indexContourSwitch = contentElm.getElementsByClassName('index-contour-switch')[0]
indexContourSwitch.checked = indexContourShow
indexContourSwitch.addEventListener('change', (e) => {
indexContourShow = e.target.checked
if (material) {
material.uniforms.indexContourShow = indexContourShow
}
})
// 计曲线颜色
let indexContourColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName('index-contour-color')[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
defaultColor: indexContourColor,
disabled: false,//是否禁止打开颜色选择器
openPickerAni: 'opacity',//打开颜色选择器动画
sure: color => {
indexContourColor = color
if (material) {
material.uniforms.indexContourColor = Cesium.Color.fromCssColorString(indexContourColor)
}
},
clear: () => {
indexContourColor = 'rgba(255,255,255,1)'
if (material) {
material.uniforms.indexContourColor = Cesium.Color.fromCssColorString(indexContourColor)
}
}
})
// 计曲线宽度
let indexContourWidthInput = contentElm.getElementsByClassName('index-contour-width')[0]
indexContourWidthInput.value = indexContourWidth
indexContourWidthInput.addEventListener('blur', (e) => {
let value = initInputValue(e)
indexContourWidth = value
indexContourWidthInput.value = value
if (material) {
material.uniforms.indexContourWidth = indexContourWidth
}
})
// 首曲线开关
let intermediateContourSwitch = contentElm.getElementsByClassName('intermediate-contour-switch')[0]
intermediateContourSwitch.checked = intermediateContourShow
intermediateContourSwitch.addEventListener('change', (e) => {
intermediateContourShow = e.target.checked
if (material) {
material.uniforms.intermediateContourShow = intermediateContourShow
}
})
// 首曲线颜色
let intermediateContourColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName('intermediate-contour-color')[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
defaultColor: intermediateContourColor,
disabled: false,//是否禁止打开颜色选择器
openPickerAni: 'opacity',//打开颜色选择器动画
sure: color => {
intermediateContourColor = color
if (material) {
material.uniforms.intermediateContourColor = Cesium.Color.fromCssColorString(intermediateContourColor)
}
},
clear: () => {
intermediateContourColor = 'rgba(255,255,255,1)'
if (material) {
material.uniforms.intermediateContourColor = Cesium.Color.fromCssColorString(intermediateContourColor)
}
}
})
// 首曲线宽度
let intermediateContourWidthInput = contentElm.getElementsByClassName('intermediate-contour-width')[0]
intermediateContourWidthInput.value = intermediateContourWidth
intermediateContourWidthInput.addEventListener('blur', (e) => {
let value = initInputValue(e)
intermediateContourWidth = value
intermediateContourWidthInput.value = value
if (material) {
material.uniforms.intermediateContourWidth = intermediateContourWidth
}
})
// 间曲线开关
let halfIntervalContourSwitch = contentElm.getElementsByClassName('halfInterval-contour-switch')[0]
halfIntervalContourSwitch.checked = halfIntervalContourShow
halfIntervalContourSwitch.addEventListener('change', (e) => {
halfIntervalContourShow = e.target.checked
if (material) {
material.uniforms.halfIntervalContourShow = halfIntervalContourShow
}
})
// 间曲线颜色
let halfIntervalContourColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName('halfInterval-contour-color')[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
defaultColor: halfIntervalContourColor,
disabled: false,//是否禁止打开颜色选择器
openPickerAni: 'opacity',//打开颜色选择器动画
sure: color => {
halfIntervalContourColor = color
if (material) {
material.uniforms.halfIntervalContourColor = Cesium.Color.fromCssColorString(halfIntervalContourColor)
}
},
clear: () => {
halfIntervalContourColor = 'rgba(255,255,255,1)'
if (material) {
material.uniforms.halfIntervalContourColor = Cesium.Color.fromCssColorString(halfIntervalContourColor)
}
}
})
// 间曲线宽度
let halfIntervalContourWidthInput = contentElm.getElementsByClassName('halfInterval-contour-width')[0]
halfIntervalContourWidthInput.value = halfIntervalContourWidth
halfIntervalContourWidthInput.addEventListener('blur', (e) => {
let value = initInputValue(e)
halfIntervalContourWidth = value
halfIntervalContourWidthInput.value = value
if (material) {
material.uniforms.halfIntervalContourWidth = halfIntervalContourWidth
}
})
// 助曲线开关
let supplementaryContourSwitch = contentElm.getElementsByClassName('supplementary-contour-switch')[0]
supplementaryContourSwitch.checked = supplementaryContourShow
supplementaryContourSwitch.addEventListener('change', (e) => {
supplementaryContourShow = e.target.checked
if (material) {
material.uniforms.supplementaryContourShow = supplementaryContourShow
}
})
// 助曲线颜色
let supplementaryContourColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName('supplementary-contour-color')[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
defaultColor: supplementaryContourColor,
disabled: false,//是否禁止打开颜色选择器
openPickerAni: 'opacity',//打开颜色选择器动画
sure: color => {
supplementaryContourColor = color
if (material) {
material.uniforms.supplementaryContourColor = Cesium.Color.fromCssColorString(supplementaryContourColor)
}
},
clear: () => {
supplementaryContourColor = 'rgba(255,255,255,1)'
if (material) {
material.uniforms.supplementaryContourColor = Cesium.Color.fromCssColorString(supplementaryContourColor)
}
}
})
// 助曲线宽度
let supplementaryContourWidthInput = contentElm.getElementsByClassName('supplementary-contour-width')[0]
supplementaryContourWidthInput.value = supplementaryContourWidth
supplementaryContourWidthInput.addEventListener('blur', (e) => {
let value = initInputValue(e)
supplementaryContourWidth = value
supplementaryContourWidthInput.value = value
if (material) {
material.uniforms.supplementaryContourWidth = supplementaryContourWidth
}
})
function initInputValue(e) {
let value = e.target.value
if (e.target.value || (e.target.dataset.null !== 'undefined' && e.target.dataset.null !== '' && !Boolean(e.target.dataset.null))) {
value = Number(value)
if ((e.target.max) && value > Number(e.target.max)) {
value = Number(e.target.max)
}
if ((e.target.min) && value < Number(e.target.min)) {
value = Number(e.target.min)
}
if ((e.target.dataset.min) && value < Number(e.target.dataset.min)) {
value = Number(e.target.dataset.min)
}
}
return value
}
}
function showContour(sdk) {
const camera = sdk.viewer.camera;
const position = camera.positionCartographic;
// 计算相机高度(相对于椭球面)
let cameraHeight = Cesium.Math.toDegrees(position.height);
if (cameraHeight > 1000000) {
return
}
if (handler) {
handler.destroy()
}
if (!sdk.viewer.container.getElementsByClassName('YJ-customize-active-height-elm')[0]) {
sdk.viewer.container.appendChild(activeHeightElm)
}
handler = new Cesium.ScreenSpaceEventHandler(
sdk.viewer.canvas
)
handler.setInputAction((movement) => {
let cartesian = sdk.viewer.scene.pickPosition(movement.endPosition)
if (cartesian) {
let top = 0
let left = 0
if (sdk.viewer && sdk.viewer._element) {
let element = sdk.viewer._element.getElementsByClassName('cesium-widget')[0].getElementsByTagName('canvas')[0]
top = element.getBoundingClientRect().top + window.scrollY
left = element.getBoundingClientRect().left + window.scrollX
}
activeHeightElm.style.left = movement.endPosition.x - 50 + left + 'px'
activeHeightElm.style.top = movement.endPosition.y - 40 + top + 'px'
activeHeightElm.style.display = 'block'
// let pos = sdk.viewer.scene.clampToHeight(cartesian)
let pos84 = tools.cartesian3Towgs84(cartesian, sdk.viewer)
// pos84.alt = height
let mainContourHeight = Math.floor(pos84.alt / material.uniforms.spacing) * material.uniforms.spacing
let gap = pos84.alt - mainContourHeight
let gap2 = material.uniforms.spacing / (material.uniforms.secondaryLinesCount + 1)
let activeHeight = Math.floor(gap / gap2) * gap2 + mainContourHeight
if (pos84.alt < 0) {
pos84.alt = 0
}
if ((pos84.alt - activeHeight) > gap2 / 2) {
activeHeight = activeHeight + gap2
}
material.uniforms.mouseHeight = pos84.alt
material.uniforms.mousePosition = cartesian
activeHeightElm.innerHTML = `${activeHeight.toFixed(0)}`
}
else {
activeHeightElm.style.display = 'none'
}
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE)
sdk.viewer.scene.globe.material = material;
}
function hideContour(sdk) {
if (handler) {
handler.destroy()
handler = null
}
if (sdk.viewer.container.getElementsByClassName('YJ-customize-active-height-elm')[0]) {
activeHeightElm.style.display = 'none'
sdk.viewer.container.removeChild(activeHeightElm)
}
sdk.viewer.scene.globe.material = null;
}
function createMaterial() {
Cesium.Material._materialCache._materials.ElevationContour.fabric.source = `
uniform vec4 color;
uniform vec4 secondaryLinesColor;
uniform float spacing;
uniform float width;
uniform float secondaryLinesWidth;
uniform vec4 activeColor; // 选中颜色
uniform float spacing; // 等高距
// 计曲线
uniform bool indexContourShow;
uniform float indexContourWidth;
uniform vec4 indexContourColor;
// 首曲线
uniform bool intermediateContourShow;
uniform float intermediateContourWidth;
uniform vec4 intermediateContourColor;
// 间曲线
uniform bool halfIntervalContourShow;
uniform float halfIntervalContourWidth;
uniform vec4 halfIntervalContourColor;
// 助曲线
uniform bool supplementaryContourShow;
uniform float supplementaryContourWidth;
uniform vec4 supplementaryContourColor;
uniform float mouseHeight;
uniform float secondaryLinesCount; // 0=无次线, 1=1条次线, 2=2条次线...
czm_material czm_getMaterial(czm_materialInput materialInput)
@ -175,24 +478,60 @@ czm_material czm_getMaterial(czm_materialInput materialInput)
#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives))
float dxc = abs(dFdx(materialInput.height));
float dyc = abs(dFdy(materialInput.height));
float dFMain = max(dxc, dyc) * czm_pixelRatio * width;
float dFMain = max(dxc, dyc) * czm_pixelRatio * indexContourWidth;
#else
float dFMain = czm_pixelRatio * width;
float dFMain = czm_pixelRatio * indexContourWidth;
#endif
bool isMainContour = distanceToMainContour < dFMain;
bool isSecondaryContour = false;
float dFSecondary = 0.0;
float secondarySpacing = 0.0;
bool isHalfInterval = false;
bool isIntermediate= false;
// 计算当前高度所属的等高线高度
float mainContourHeight = floor(materialInput.height / spacing) * spacing;
float secondaryContourHeight = floor(materialInput.height / spacing * (secondaryLinesCount + 1.0)) * spacing / (secondaryLinesCount + 1.0);
// 计算次线在两条主等高线之间的相对位置
float relativeHeight = materialInput.height - mainContourHeight;
float normalizedPosition = relativeHeight / spacing;
// 计算次线索引(从主等高线开始计数)
float lineIndex = floor(normalizedPosition * (secondaryLinesCount + 1.0));
// 只有当存在次线时才计算次线
if(secondaryLinesCount > 0.0) {
float secondaryLinesWidth = supplementaryContourWidth;
secondarySpacing = spacing / (secondaryLinesCount + 1.0);
float distanceToSecondaryContour = mod(materialInput.height, secondarySpacing);
// 确保次线不会与主线重叠
float minDistanceToMain = min(distanceToMainContour, spacing - distanceToMainContour);
bool notCloseToMain = minDistanceToMain > dFMain * 2.0; // 2倍线宽缓冲
if (lineIndex > 0.0 && lineIndex < secondaryLinesCount) {
// 使用mod函数检查余数是否接近0考虑浮点数精度问题
isHalfInterval = abs(mod(lineIndex, 2.0)) < 0.01;
if(isHalfInterval) {
secondaryLinesWidth = halfIntervalContourWidth;
}
// 使用mod函数检查余数是否接近0考虑浮点数精度问题
isIntermediate = abs(mod(lineIndex, 4.0)) < 0.01;
if(isIntermediate) {
secondaryLinesWidth = intermediateContourWidth;
}
}
#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives))
dFSecondary = max(dxc, dyc) * czm_pixelRatio * secondaryLinesWidth;
@ -203,10 +542,6 @@ czm_material czm_getMaterial(czm_materialInput materialInput)
isSecondaryContour = (distanceToSecondaryContour < dFSecondary) && notCloseToMain;
}
// 计算当前高度所属的等高线高度
float mainContourHeight = floor(materialInput.height / spacing) * spacing;
float secondaryContourHeight = floor(materialInput.height / spacing * (secondaryLinesCount + 1.0)) * spacing / (secondaryLinesCount + 1.0);
// 高亮判断
bool shouldHighlight = false;
if(isMainContour && abs(mainContourHeight - mouseHeight) < 0.5 * (spacing/(secondaryLinesCount+1.0))) {
@ -218,15 +553,41 @@ czm_material czm_getMaterial(czm_materialInput materialInput)
// 颜色输出
vec4 outColor;
if(shouldHighlight) {
outColor = vec4(1.0, 0.0, 0.0, 1.0);
outColor = czm_gammaCorrect(vec4(activeColor.rgb, activeColor.a));
} else if(isMainContour) {
outColor = czm_gammaCorrect(vec4(color.rgb, color.a));
float a = indexContourColor.a;
if(!indexContourShow) {
a = 0.0;
}
outColor = czm_gammaCorrect(vec4(indexContourColor.rgb, a));
} else if(isSecondaryContour) {
outColor = czm_gammaCorrect(vec4(secondaryLinesColor.rgb, secondaryLinesColor.a));
float a = supplementaryContourColor.a;
if(!supplementaryContourShow) {
a = 0.0;
}
outColor = czm_gammaCorrect(vec4(supplementaryContourColor.rgb, a));
if(isHalfInterval) {
float a = halfIntervalContourColor.a;
if(!halfIntervalContourShow) {
a = 0.0;
}
outColor = czm_gammaCorrect(vec4(halfIntervalContourColor.rgb, a));
}
if(isIntermediate) {
float a = intermediateContourColor.a;
if(!intermediateContourShow) {
a = 0.0;
}
outColor = czm_gammaCorrect(vec4(intermediateContourColor.rgb, a));
}
} else {
outColor = vec4(0.0);
}
if(materialInput.height<0.0) {
outColor = vec4(0.0);
}
material.diffuse = outColor.rgb;
material.alpha = outColor.a;
return material;
@ -237,14 +598,25 @@ czm_material czm_getMaterial(czm_materialInput materialInput)
fabric: {
type: "ElevationContour",
uniforms: {
width: 2,
secondaryLinesWidth: 1, // 次级线宽度
spacing: 200,
color: Cesium.Color.fromCssColorString('#ffd000'),
secondaryLinesColor: Cesium.Color.fromCssColorString('#0dff00').withAlpha(0.5),
spacing: 10 * 5,
activeColor: Cesium.Color.fromCssColorString(activeColor),
mouseHeight: -100000,
mousePosition: new Cesium.Cartesian3(0, 0, 0),
secondaryLinesCount: 3
secondaryLinesCount: secondaryLinesCount,
cameraHeight: 0,
indexContourShow: indexContourShow,
indexContourWidth: indexContourWidth,
indexContourColor: Cesium.Color.fromCssColorString(indexContourColor),
intermediateContourShow: intermediateContourShow,
intermediateContourWidth: intermediateContourWidth,
intermediateContourColor: Cesium.Color.fromCssColorString(intermediateContourColor),
halfIntervalContourShow: halfIntervalContourShow,
halfIntervalContourWidth: halfIntervalContourWidth,
halfIntervalContourColor: Cesium.Color.fromCssColorString(halfIntervalContourColor),
supplementaryContourShow: supplementaryContourShow,
supplementaryContourWidth: supplementaryContourWidth,
supplementaryContourColor: Cesium.Color.fromCssColorString(supplementaryContourColor),
},
}
});

View File

@ -263,7 +263,7 @@ async function MapPrint(sdk, thumbnailImg, rectangle, originalImg) {
updateCanvas()
}
})
let borderColorPicker = new ewPlugins('colorpicker', {
let borderColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName('border-color')[0],
size: 'mini', //颜色box类型
alpha: false, //是否开启透明度
@ -564,7 +564,7 @@ async function MapPrint(sdk, thumbnailImg, rectangle, originalImg) {
function changeMapBorderColor(color) {
border.color = color || '#000000'
new ewPlugins('colorpicker', {
new YJColorPicker({
el: contentElm.getElementsByClassName('border-color')[0],
size: 'mini', //颜色box类型
alpha: false, //是否开启透明度

View File

@ -278,7 +278,7 @@ async function init(sdk) {
sdk.viewer.scene.preRender.addEventListener(syncViewer, syncObject)
// sdk.viewer.imageryLayers.layerAdded.addEventListener(syncImageryLayerAdded);
// sdk.viewer.imageryLayers.layerMoved.addEventListener(syncImageryLayerMoved);
sdk.viewer.imageryLayers.layerMoved.addEventListener(syncImageryLayerMoved);
// sdk.viewer.imageryLayers.layerRemoved.addEventListener(syncImageryLayerRemoved);
// sdk.viewer.imageryLayers.layerShownOrHidden.addEventListener(syncImageryLayerShownOrHidden);
@ -711,6 +711,9 @@ async function setSplitDirection(v, id, isoff = false, entityId) {
status.P = true
status.D = true
options.show = true
if(thatP.type==='layer') {
options.layer_index = thatP.layer_index
}
target = await new thatP.constructor(sdkD, options)
if (thatP.onClick) {
target.onClick = thatP.onClick
@ -794,6 +797,9 @@ async function setSplitDirection(v, id, isoff = false, entityId) {
status.P = false
status.D = true
options.show = true
if(thatP.type==='layer') {
options.layer_index = thatP.layer_index
}
target = await new thatP.constructor(sdkD, options)
if (thatP.onClick) {
target.onClick = thatP.onClick
@ -1033,7 +1039,13 @@ function syncImageryLayerAdded(layer, index) {
sdkD.viewer.imageryLayers.addImageryProvider(layer.imageryProvider, index)
}
function syncImageryLayerMoved(layer, newindxe, oldindex) {
let layerD = sdkD.viewer.imageryLayers._layers[oldindex]
let layerD
for (let i = 0; i < sdkD.viewer.imageryLayers._layers.length; i++) {
if (sdkD.viewer.imageryLayers._layers[i]._id === layer._id) {
layerD = sdkD.viewer.imageryLayers._layers[i]
break
}
}
if (!layerD) {
return
}
@ -1042,12 +1054,14 @@ function syncImageryLayerMoved(layer, newindxe, oldindex) {
sdkD.viewer.imageryLayers.lowerToBottom(layerD)
}
// 移到最高层
else if (newindxe === sdk.viewer.imageryLayers._layers.length - 1) {
else if (newindxe === sdkD.viewer.imageryLayers._layers.length - 1) {
sdkD.viewer.imageryLayers.raiseToTop(layerD)
}
else {
if (newindxe < oldindex) {
sdkD.viewer.imageryLayers.lower(layerD)
if(newindxe<sdkD.viewer.imageryLayers._layers.length-1) {
sdkD.viewer.imageryLayers.lower(layerD)
}
}
else {
sdkD.viewer.imageryLayers.raise(layerD)

View File

@ -0,0 +1,56 @@
function html() {
return `
<span class="custom-divider"></span>
<div class="div-item">
<div class="row">
<div class="col">
<span class="label">播放倍数</span>
<div class="input-number input-number-unit-1">
<input class="input" type="number" title="" min="0.01" max="999999" step="10" @model="speed">
<span class="arrow"></span>
</div>
</div>
<div class="col">
<span class="label">阴影柔和度</span>
<div class="input-number input-number-unit-1">
<input class="input" type="number" title="" min="0" max="1" step="0.1" @model="darkness">
<span class="arrow"></span>
</div>
</div>
</div>
</div>
<div class="div-item">
<div class="row">
<div class="col">
<span class="label">阴影优化</span>
<input class="btn-switch" type="checkbox" @model="softShadow">
</div>
<div class="col">
<span class="label" style="flex: 0 0 56px;">日期选择</span>
<input class="sunshine-date" type="text" placeholder="YYYY-MM-DD" @model="time">
</div>
</div>
</div>
<span class="custom-divider"></span>
<div class="div-item">
<div class="row">
<div class="col">
<div class="timeline-container">
<div class="timeline" id="timeline">
<div class="progress" id="progress">
<div class="handle" id="handle"></div>
<div class="current-time" id="currentTime">00:00:00</div>
</div>
</div>
<div class="time-marks">
</div>
<button id="timePause">暂停</button>
</div>
</div>
</div>
</div>
<span class="custom-divider"></span>
`
}
export { html }

View File

@ -0,0 +1,92 @@
class eventBinding {
constructor() {
this.element = {}
}
static event = {}
getEvent(name) {
return eventBinding.event[name]
}
getEventAll() {
return eventBinding.event
}
setEvent(name, event) {
eventBinding.event[name] = event
}
on(that, elements) {
for (let i = 0; i < elements.length; i++) {
let Event = []
let isEvent = false
let removeName = []
if (!elements[i] || !elements[i].attributes) {
continue;
}
for (let m of elements[i].attributes) {
switch (m.name) {
case '@model': {
isEvent = true
if (elements[i].type == 'checkbox') {
Event.push((e) => { that[m.value] = e.target.checked })
elements[i].checked = that[m.value]
}
else {
Event.push((e) => {
let value = e.target.value
if (e.target.type == 'number') {
value = Number(value)
}
that[m.value] = value
})
if (elements[i].nodeName == 'IMG') {
elements[i].src = that[m.value]
}
else {
elements[i].value = that[m.value]
}
}
if (this.element[m.value]) {
this.element[m.value].push(elements[i])
}
else {
this.element[m.value] = [elements[i]]
}
removeName.push(m.name)
break;
}
case '@click': {
elements[i].addEventListener('click', (e) => {
if (typeof (that.Dialog[m.value]) === 'function') {
that.Dialog[m.value](e)
}
});
removeName.push(m.name)
// elements[i].attributes.removeNamedItem(m.name)
break;
}
}
// elements[i].attributes[m] = undefined
}
for (let n = 0; n < removeName.length; n++) {
elements[i].attributes.removeNamedItem(removeName[n])
}
if (isEvent) {
let ventType = 'input'
if (elements[i].tagName != 'INPUT' || elements[i].type == 'checkbox') {
ventType = 'change'
}
elements[i].addEventListener(ventType, (e) => {
for (let t = 0; t < Event.length; t++) {
Event[t](e)
}
});
}
}
}
}
const EventBinding = new eventBinding();
export default EventBinding;

View File

@ -0,0 +1,227 @@
/**
* @description 水面
*/
import Dialog from '../../../Obj/Element/Dialog';
import { html } from "./_element";
import EventBinding from '../../../Obj/Element/Dialog/eventBinding';
import { syncData } from '../../MultiViewportMode'
import Tools from '../../../Tools'
import TimeLine from './TimeLine'
import { setSplitDirection, syncSplitData, setActiveId } from '../../SplitScreen'
export default class Sunshine {
/**
* @constructor
* @param sdk
* @description 光照
* @param options {object} 光照属性
* @param options.time=当前时间 {string} 当前时间
* @param options.speed=1000 {number} 速度倍速
* @param options.darkness=0.3 {number} 阴影不透明度--越大越不透明
* @param options.softShadow=false {boolean} 阴影优化--true/false}
* @param Dialog {object} 弹框对象
* @param Dialog.confirmCallBack {function} 弹框确认时的回调
* */
constructor(sdk, options = {}, _Dialog = {}) {
this.viewer = sdk.viewer
this.options = { ...options }
this.sdk = { ...sdk }
this.options.time = options.time || new Date()
this.options.speed = options.speed || 1000
this.options.darkness = options.darkness || 0.4
this.options.softShadow = options.softShadow || true
this.options.show = options.show === true ? true : false
this.Dialog = _Dialog
this.timeLine
this._EventBinding = new EventBinding()
this._elms = {};
Sunshine.start(this)
}
static start(that) {
that.viewer.scene.globe.enableLighting = true
that.viewer.shadows = true
that.viewer.scene.globe.enableLighting = true;
that.viewer.terrainShadows = Cesium.ShadowMode.RECEIVE_ONLY
that.viewer.shadowMap.darkness = 1.0 - that.options.darkness //阴影透明度--越大越透明
const now = new Date();
now.setHours(0, 0, 0, 0); // 设置为当天0点
that.viewer.clock.currentTime = Cesium.JulianDate.fromDate(now);
that.viewer.clock.multiplier = that.options.speed;
that.viewer.shadowMap.softShadows = that.options.softShadow;
that.edit(true)
}
get darkness() {
return this.options.darkness
}
set darkness(v) {
this.options.darkness = v
this.viewer.shadowMap.darkness = 1.0 - this.options.darkness
}
get speed() {
return this.options.speed
}
set speed(v) {
this.options.speed = v
this.viewer.clock.multiplier = this.options.speed;
this.timeLine.setSpeed(v)
}
get softShadow() {
return this.options.softShadow
}
set softShadow(v) {
this.options.softShadow = v
this.viewer.shadowMap.softShadows = this.options.softShadow;
}
/**
* @description 编辑框
* @param state=false {boolean} 状态: true打开, false关闭
*/
async edit(state = false) {
let tools = new Tools()
this.originalOptions = tools.deepCopyObj(this.options)
// let elms = this.sdk.viewer._container.getElementsByClassName('YJ-custom-base-dialog')
// for (let i = elms.length - 1; i >= 0; i--) {
// this.sdk.viewer._container.removeChild(elms[i])
// }
if (this._DialogObject && this._DialogObject.close) {
this._DialogObject.close()
this._DialogObject = null
}
if (state) {
let _this = this
this._DialogObject = await new Dialog(this.sdk, this.originalOptions, {
title: '光照属性', left: '180px', top: '100px',
confirmCallBack: (options) => {
this.originalOptions = tools.deepCopyObj(this.options)
this._DialogObject.close()
this.Dialog.confirmCallBack && this.Dialog.confirmCallBack(this.originalOptions)
syncData(this.sdk, this.options.id)
syncSplitData(this.sdk, this.options.id)
this.remove()
},
resetCallBack: () => {
this.reset()
this.Dialog.resetCallBack && this.Dialog.resetCallBack()
},
// removeCallBack: () => {
// this.Dialog.removeCallBack && this.Dialog.removeCallBack()
// },
closeCallBack: () => {
this.reset()
_this.remove()
// this.entity.style = new Cesium.Cesium3DTileStyle({
// color: "color('rgba(255,255,255," + this.newData.transparency + ")')",
// show: true,
// });
this.Dialog.closeCallBack && this.Dialog.closeCallBack()
},
showCallBack: (show) => {
this.show = show
this.Dialog.showCallBack && this.Dialog.showCallBack()
}
}, true)
this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' sun-shine-surface'
let contentElm = document.createElement('div');
contentElm.innerHTML = html()
this._DialogObject.contentAppChild(contentElm)
//时间轴
let _that = this
this.timeLine = new TimeLine(this.sdk, this.options.speed)
// this.timeLine.setSpeed(1000)
this.timeLine.moveComplay(item => {
let timeData = _that.time + " " + item
_that.viewer.clock.currentTime = Cesium.JulianDate.fromDate(new Date(timeData));
_that.viewer.scene.requestRender();
})
let jeDateObject
let printDateElm = contentElm.getElementsByClassName('sunshine-date')[0]
let text
jeDateObject = jeDate(printDateElm, {
format: "YYYY-MM-DD",
isinitVal: true,
isClear: false,
donefun: function (obj) {
this.time = obj.val
const now = new Date();
let timeData = now.setHours(0, 0, 0, 0); // 设置为当天0点
_that.viewer.clock.currentTime = Cesium.JulianDate.fromDate(new Date(timeData));
_that.timeLine.updateTime(timeData)
}
});
if (this.time) {
jeDateObject.setValue(this.time)
}
else {
jeDateObject.nowBtn && jeDateObject.nowBtn()
this.time = jeDateObject.getValue()
}
let all_elm = contentElm.getElementsByTagName("*")
this._EventBinding.on(this, all_elm)
this._elms = this._EventBinding.element
this._elms.color = [jeDateObject]
} else {
// if (this._element_style) {
// document.getElementsByTagName('head')[0].removeChild(this._element_style)
// this._element_style = null
// }
// if (this._DialogObject && this._DialogObject.remove) {
// this._DialogObject.remove()
// this._DialogObject = null
// }
}
}
reset() {
if (!this.viewer.entities.getById(this.options.id)) {
return
}
this.time = this.originalOptions.time
this.speed = this.originalOptions.speed
this.darkness = this.originalOptions.darkness
}
/**
* 飞到对应实体
*/
async flyTo(options = {}) {
}
/**
* 删除
*/
async remove() {
this.viewer.scene.globe.enableLighting = false
this.viewer.shadows = false
this.viewer.clock.multiplier = 1.0
this.viewer.clock.currentTime = Cesium.JulianDate.fromDate(new Date());
this.entity = null
this.timeLine.clear()
if (this._DialogObject && !this._DialogObject.isDestroy) {
this._DialogObject.close()
this._DialogObject = null
}
// await this.sdk.removeIncetance(this.options.id)
await syncData(this.sdk, this.options.id)
}
flicker() { }
}

View File

@ -0,0 +1,133 @@
export default class TimeLine {
constructor(sdk, speed) {
this.sdk = { ...sdk };
this.progress = document.getElementById('progress');
this.handle = document.getElementById('handle');
this.timeline = document.getElementById('timeline');
this.currentTime = document.getElementById('currentTime');
this.timelineCon = document.getElementsByClassName('timeline-container')[0];
this.speed = speed;
this.animationId;
this.startTime = Date.now();
this.manualPosition = null;
this.isDragging = false;
this.pauseed = false;
this.time = '';
this.update = this.update.bind(this);
TimeLine.init(this)
}
static init(that) {
for (let i = 0; i <= 24; i++) {
if (i % 6 === 0) {
const label = document.createElement('div');
label.className = 'time-mark';
label.textContent = `${i}:00`;
label.style.left = `${(i / 24) * 100}%`;
document.getElementsByClassName('time-marks')[0].appendChild(label)
}
}
that.startTime = Date.now() - ((that.manualPosition || 0) * 86400 * 1000 / that.speed);
that.timeline.addEventListener('mousedown', (e) => {
that.isDragging = true;
e.preventDefault();
});
that.timeline.addEventListener('mousemove', (e) => {
if (!that.isDragging) return;
const rect = that.timeline.getBoundingClientRect();
let pos = (e.clientX - rect.left) / rect.width;
pos = Math.max(0, Math.min(1, pos));
that.manualPosition = pos;
that.progress.style.width = `${pos * 100}%`;
const seconds = pos * 86400;
that.currentTime.textContent = that.formatTime(seconds);
});
that.update();
document.getElementById('timePause').addEventListener('click', function () {
that.pauseed = !that.pauseed;
if (that.pauseed) {
document.getElementById('timePause').textContent = '播放';
that.animationId && cancelAnimationFrame(that.animationId);
that.pausedTime = Date.now(); // 记录暂停时刻
that.sdk.viewer.clock.shouldAnimate = false
} else {
document.getElementById('timePause').textContent = '暂停';
that.manualPosition = null
const pausedDuration = Date.now() - that.pausedTime;
that.startTime += pausedDuration; // 补偿暂停期间的时间差
that.sdk.viewer.clock.shouldAnimate = true
that.update(); // 重启动画循环
}
});
}
moveComplay(func) {
let that = this
that.timeline.addEventListener('mouseup', () => {
that.isDragging = false;
if (that.manualPosition !== null) {
// that.sdk.viewer.clock.shouldAnimate = true
that.startTime = Date.now() - (that.manualPosition * 86400 * 1000 / that.speed);
that.manualPosition = null;
if (!that.pauseed) {
that.update()
func(that.time)
} else {
that.pausedTime = Date.now(); // 记录暂停时刻
func(that.currentTime.textContent)
}
}
});
}
formatTime(seconds) {
const hrs = Math.floor(seconds / 3600).toString().padStart(2, '0');
const mins = Math.floor((seconds % 3600) / 60).toString().padStart(2, '0');
const secs = Math.floor(seconds % 60).toString().padStart(2, '0');
return `${hrs}:${mins}:${secs}`;
}
update() {
if (this.manualPosition !== null) return;
const elapsed = (Date.now() - this.startTime) * this.speed;
const totalSeconds = elapsed / 1000;
const daySeconds = totalSeconds % 86400;
const percentage = daySeconds / 86400;
this.progress.style.width = `${percentage * 100}%`;
this.time = this.formatTime(daySeconds)
this.currentTime.textContent = this.time;
this.animationId = requestAnimationFrame(this.update);
}
setSpeed(v) {
const currentProgress = this.manualPosition ??
(Date.now() - this.startTime) * this.speed / (86400 * 1000);
this.speed = v;
this.startTime = Date.now() - (currentProgress * 86400 * 1000 / this.speed);
this.manualPosition = null;
this.update();
}
updateTime() {
this.startTime = Date.now() - (this.manualPosition * 86400 * 1000 / this.speed);
this.manualPosition = null;
this.update();
}
clear() {
this.animationId && cancelAnimationFrame(this.animationId);
this.progress.style.width = '0%';
this.currentTime.textContent = '00:00:00';
}
}

View File

@ -14,6 +14,7 @@ import { getTheme, setTheme } from "../Obj/Element/theme";
import { setActiveViewer as setMultiViewportActiveViewer } from './MultiViewportMode'
import { setActiveViewer as setSplitActiveViewer, getSdk } from './SplitScreen'
import { updateCluster } from './cluster/cluster'
import { getHost } from "../on";
let coordinateSystem = 'EPSG:4326'
let _cartesian
@ -110,7 +111,7 @@ function CesiumContainer(sdk, options) {
}
containerObject[sdk.viewer._element.className] || (containerObject[sdk.viewer._element.className] = {})
containerObject[sdk.viewer._element.className].event && containerObject[sdk.viewer._element.className].event.destroy()
let tools = new Tools()
let tools = new Tools(sdk)
let element = sdk.viewer._element
let proj = sdk.proj
for (let key in options) {
@ -173,15 +174,28 @@ function CesiumContainer(sdk, options) {
}
let event = new MouseEvent(sdk)
containerObject[sdk.viewer._element.className].event = event
let lastPickTime = 0;
let timeoutEvent
event.mouse_move((movement, cartesian) => {
_cartesian = cartesian
// const now = Date.now();
// if (now - lastPickTime < 500) {
// clearTimeout(timeoutEvent)
// timeoutEvent = setTimeout(() => {
// update()
// }, 500);
// return
// }
// lastPickTime = now;
update()
})
function update() {
async function update() {
if (!_cartesian) {
return
}
// let pos = sdk.viewer.scene.clampToHeight(_cartesian)
let position = tools.cartesian3Towgs84(_cartesian, sdk.viewer)
// position.alt = height
if (coordinateSystem === 'EPSG:4326') {
infoElm.innerHTML = `
<span>经度:</span><span>${Number(position.lng.toFixed(6))}° </span>
@ -244,6 +258,16 @@ function setBillboardDefaultUrl(url, name) {
else {
name = 'billboard_default_url'
}
let host = getHost()
if (!url.startsWith("http")) {
//说明是本地的json在磁盘中存在的
if (!url.includes(":")) {
if (host) {
let o = new URL(url, host)
url = o.href
}
}
}
localStorage.setItem(name, url);
}
/*获取广告牌默认图标*/
@ -426,12 +450,12 @@ function closeViewFollow(sdk) {
/* 方里网状态开关 */
function FlwStatusSwitch(sdk, status) {
if(!sdk) {
if (!sdk) {
return
}
let layer
let sdkD = getSdk().sdkD
if(sdkD && sdk !== sdkD) {
if (sdkD && sdk !== sdkD) {
FlwStatusSwitch(sdkD, status)
}
for (let i = 0; i < sdk.viewer.imageryLayers._layers.length; i++) {
@ -466,12 +490,12 @@ function getFlwStatus(sdk) {
/* 经纬网状态开关 */
function JwwStatusSwitch(sdk, status) {
if(!sdk) {
if (!sdk) {
return
}
let layer
let sdkD = getSdk().sdkD
if(sdkD && sdk !== sdkD) {
if (sdkD && sdk !== sdkD) {
JwwStatusSwitch(sdkD, status)
}
for (let i = 0; i < sdk.viewer.imageryLayers._layers.length; i++) {

View File

@ -70,7 +70,7 @@ import {
import { MouseCoordinate } from '../Global/MouseCoordinate'
import { MouseRightMenu } from '../Global/mouseRightMenu'
import { dialog as ContourDialog } from '../Global/Contour'
import { on as SplitScreenOn, off as SplitScreenOff, setActiveId as SplitScreenSetActiveId ,getSdk } from '../Global/SplitScreen'
import { on as SplitScreenOn, off as SplitScreenOff, setActiveId as SplitScreenSetActiveId, getSdk } from '../Global/SplitScreen'
import LocateCurrent from '../Obj/Base/LocateCurrent'
import { AnalysisClear, SectionClear } from '../Obj/Analysis/clear'
@ -157,7 +157,7 @@ import WaterSurface from '../Obj/Base/WaterSurface'
// import ItineraryMove from '../Obj/Base/ItineraryMove'
import TrajectoryMotion from '../Obj/Base/TrajectoryMotion'
import TrajectoryMotionObject from '../Obj/Base/TrajectoryMotionObject'
import Road from '../Obj/Base/Road'
// import Road from '../Obj/Base/Road'
import Graffiti from '../Obj/Base/Graffiti'
import GroundImage from '../Obj/Base/GroundImage'
import GroundSvg from '../Obj/Base/GroundSvg'
@ -183,6 +183,8 @@ import Dialog from '../Obj/Element/Dialog'
import newAirLine from '../Obj/AirLine/pointRoute.js'
import Frustum from '../Obj/AirLine/frustum'
import DrawTakeOff from '../Obj/AirLine/DrawTakeOff'
import FlowLine from '../Obj/Base/FlowLine'
import Sunshine from '../Global/efflect/Sunshine'
const YJEarthismeasuring = Symbol('测量状态')
const screenRecord = Symbol('录屏对象')
@ -234,7 +236,7 @@ if (!window.YJ) {
Model2,
TrajectoryMotion,
TrajectoryMotionObject,
Road,
// Road,
Graffiti,
GroundImage,
GroundSvg,
@ -253,7 +255,8 @@ if (!window.YJ) {
newAirLine,
FRUSTUN: Frustum,
// GenerateRoute
Dialog
Dialog,
FlowLine
},
YJEarth,
Tools,
@ -292,7 +295,7 @@ if (!window.YJ) {
cease: FlyRoamCease
},
flyTo,
efflect: { rain, snow, fog, nightVision, skyStarry, illumination },
efflect: { rain, snow, fog, nightVision, skyStarry, illumination, Sunshine },
CameraController,
CesiumContainer,
setBillboardDefaultUrl,
@ -301,7 +304,7 @@ if (!window.YJ) {
on: multiViewportModeOn,
off: multiViewportModeOff,
get2DView,
getSdk:getSdk2
getSdk: getSdk2
},
MouseCoordinate,
MouseRightMenu,

View File

@ -48,7 +48,7 @@ class MeasureDistance extends Measure {
}
async computeDisByTowPoint(p1, p2) {
let d = this.computeDistance([p1, p2])
let d = this.computeDistance2([p1, p2])
let meters = 10
let createLabel = (distance) => {
if(this._isDestroy) {
@ -80,7 +80,7 @@ class MeasureDistance extends Measure {
let l = arr.length - 1
arr.forEach((item, index) => {
if (index !== l) {
let d1 = this.computeDistance([item.position, arr[index + 1].position])
let d1 = this.computeDistance2([item.position, arr[index + 1].position])
let d2 = Math.abs(item.position.alt - arr[index + 1].position.alt)
let d3 = Math.sqrt(d1 * d1 + d2 * d2)
total_length += d3
@ -131,7 +131,7 @@ class MeasureDistance extends Measure {
let l = this.clampPositions.length - 1
this.clampPositions.forEach((item, index) => {
if (index !== l) {
let d1 = this.computeDistance([item.position, this.clampPositions[index + 1].position])
let d1 = this.computeDistance2([item.position, this.clampPositions[index + 1].position])
let d2 = Math.abs(item.position.alt - this.clampPositions[index + 1].position.alt)
let d3 = Math.sqrt(d1 * d1 + d2 * d2)
total_length += d3
@ -270,7 +270,7 @@ class MeasureDistance extends Measure {
// if (this.cachePositions.length) {
// let cur_point = this.cartesian3Towgs84(car, this.viewer)
// let pre_p = this.cartesian3Towgs84(this.cachePositions[this.cachePositions.length - 1], this.viewer)
// let cur_len = this.computeDistance([cur_point, pre_p])
// let cur_len = this.computeDistance2([cur_point, pre_p])
// let text = "当前投影距离:" + cur_len + " 米"
// // this.tip.set_text(text)
// }

View File

@ -47,7 +47,7 @@ class MeasureDistance extends Measure {
}
async computeDisByTowPoint(p1, p2) {
let d = this.computeDistance([p1, p2])
let d = this.computeDistance2([p1, p2])
let meters = 10
let createLabel = (distance) => {
let label = this.getLabel("贴地距离:" + distance.toFixed(2) + "米")
@ -84,7 +84,7 @@ class MeasureDistance extends Measure {
let l = arr.length - 1
arr.forEach((item, index) => {
if (index !== l) {
let d1 = this.computeDistance([item.position, arr[index + 1].position])
let d1 = this.computeDistance2([item.position, arr[index + 1].position])
let d2 = Math.abs(item.position.alt - arr[index + 1].position.alt)
let d3 = Math.sqrt(d1 * d1 + d2 * d2)
total_length += d3
@ -135,7 +135,7 @@ class MeasureDistance extends Measure {
let l = this.clampPositions.length - 1
this.clampPositions.forEach((item, index) => {
if (index !== l) {
let d1 = this.computeDistance([item.position, this.clampPositions[index + 1].position])
let d1 = this.computeDistance2([item.position, this.clampPositions[index + 1].position])
let d2 = Math.abs(item.position.alt - this.clampPositions[index + 1].position.alt)
let d3 = Math.sqrt(d1 * d1 + d2 * d2)
total_length += d3
@ -231,7 +231,7 @@ class MeasureDistance extends Measure {
if (this.ids.length !== 0) {
let cur_point = this.cartesian3Towgs84(car, this.viewer)
let pre_p = this.cartesian3Towgs84(this.cachePositions[this.cachePositions.length - 1], this.viewer)
let cur_len = this.computeDistance([cur_point, pre_p])
let cur_len = this.computeDistance2([cur_point, pre_p])
let text = "投影距离:" + cur_len + " 米"
this.ids.push(MeasureDistance.create_point(car, {label: this.getLabel(text)}, this))
this.cachePositions.push(car)
@ -250,7 +250,7 @@ class MeasureDistance extends Measure {
if (this.cachePositions.length) {
let cur_point = this.cartesian3Towgs84(car, this.viewer)
let pre_p = this.cartesian3Towgs84(this.cachePositions[this.cachePositions.length - 1], this.viewer)
let cur_len = this.computeDistance([cur_point, pre_p])
let cur_len = this.computeDistance2([cur_point, pre_p])
let text = "当前投影距离:" + cur_len + " 米"
this.tip.set_text(text)
}
@ -280,7 +280,7 @@ class MeasureDistance extends Measure {
}
computeAngle(start, end) {
let d1 = this.computeDistance([start, end])
let d1 = this.computeDistance2([start, end])
let d2 = Math.abs(start.alt - end.alt)
let d3 = Math.sqrt(d1 * d1 + d2 * d2)
let cosAlpha = d1 / d3

View File

@ -128,7 +128,7 @@ class MeasureHeight extends Measure {
this.positions[1] = Cesium.Cartesian3.fromDegrees(this.firstpoint.lng, this.firstpoint.lat, cur_point.alt)
this.positions[2] = cartesian
this.position = this.positions[1]
this.circleRadius = this.computeDistance([this.firstpoint, cur_point])
this.circleRadius = this.computeDistance2([this.firstpoint, cur_point])
this.height = Number((cur_point.alt - this.firstpoint.alt).toFixed(2))
this.text = "相对高度:" + this.height + " 米"
this.tip.set_text("左键完成,右键取消;半径:" + this.circleRadius + " 米")
@ -145,7 +145,7 @@ class MeasureHeight extends Measure {
this.positions[1] = Cesium.Cartesian3.fromDegrees(this.firstpoint.lng, this.firstpoint.lat, cur_point.alt)
this.positions[2] = cartesian
this.position = this.positions[1]
this.circleRadius = this.computeDistance([this.firstpoint, cur_point])
this.circleRadius = this.computeDistance2([this.firstpoint, cur_point])
this.height = Number((cur_point.alt - this.firstpoint.alt).toFixed(2))
this.text = "相对高度:" + this.height + " 米"
this.tip.set_text("左键完成,右键取消;半径:" + this.circleRadius + " 米")

View File

@ -73,7 +73,7 @@ class MeasureProjectionDistance extends Measure {
let l = this.clampPositions.length - 1
this.clampPositions.forEach((item, index) => {
if (index !== l) {
let d1 = this.computeDistance([item.position, this.clampPositions[index + 1].position])
let d1 = this.computeDistance2([item.position, this.clampPositions[index + 1].position])
let d2 = Math.abs(item.position.alt - this.clampPositions[index + 1].position.alt)
let d3 = Math.sqrt(d1 * d1 + d2 * d2)
total_length += d3
@ -174,7 +174,7 @@ class MeasureProjectionDistance extends Measure {
if (this.ids.length !== 0) {
let cur_point = this.cartesian3Towgs84(car, this.viewer)
let pre_p = this.cartesian3Towgs84(this.cachePositions[this.cachePositions.length - 1], this.viewer)
let cur_len = this.computeDistance([cur_point, pre_p])
let cur_len = this.computeDistance2([cur_point, pre_p])
let text = "投影距离:" + cur_len + " 米"
this.ids.push(MeasureProjectionDistance.create_point(car, {label: this.getLabel(text)}, this))
this.cachePositions.push(car)
@ -215,7 +215,7 @@ class MeasureProjectionDistance extends Measure {
if (this.cachePositions.length) {
let cur_point = this.cartesian3Towgs84(car, this.viewer)
let pre_p = this.cartesian3Towgs84(this.cachePositions[this.cachePositions.length - 1], this.viewer)
let cur_len = this.computeDistance([cur_point, pre_p])
let cur_len = this.computeDistance2([cur_point, pre_p])
let text = "当前投影距离:" + cur_len + " 米"
this.tip.set_text(text)
}

View File

@ -75,7 +75,7 @@ class MeasureSlopeDistance extends Measure {
let l = this.clampPositions.length - 1
this.clampPositions.forEach((item, index) => {
if (index !== l) {
let d1 = this.computeDistance([item.position, this.clampPositions[index + 1].position])
let d1 = this.computeDistance2([item.position, this.clampPositions[index + 1].position])
let d2 = Math.abs(item.position.alt - this.clampPositions[index + 1].position.alt)
let d3 = Math.sqrt(d1 * d1 + d2 * d2)
total_length += d3
@ -235,7 +235,7 @@ class MeasureSlopeDistance extends Measure {
if (this.cachePositions.length) {
let cur_point = this.cartesian3Towgs84(cartesian, this.viewer)
let pre_p = this.cartesian3Towgs84(this.cachePositions[this.cachePositions.length - 1], this.viewer)
let d1 = this.computeDistance([pre_p, cur_point])
let d1 = this.computeDistance2([pre_p, cur_point])
let d2 = Math.abs(pre_p.alt - cur_point.alt)
let d3 = Math.sqrt(d1 * d1 + d2 * d2)
let cosAlpha = d1 / d3
@ -276,7 +276,7 @@ class MeasureSlopeDistance extends Measure {
}
computeAngle(start, end) {
let d1 = this.computeDistance([start, end])
let d1 = this.computeDistance2([start, end])
let d2 = Math.abs(start.alt - end.alt)
let d3 = Math.sqrt(d1 * d1 + d2 * d2)
let cosAlpha = d1 / d3

View File

@ -27,7 +27,7 @@ class MeasureTriangle extends Measure {
cal_distance(positions) {
let p1 = this.cartesian3Towgs84(positions[0], this.viewer)
let p2 = this.cartesian3Towgs84(positions[1], this.viewer)
let dis = this.computeDistance([p1, p2])
let dis = this.computeDistance2([p1, p2])
p1.alt = p1.alt.toFixed(2)
p2.alt = p2.alt.toFixed(2)
if (p1.alt === p2.alt) {//水平边
@ -128,10 +128,10 @@ class MeasureTriangle extends Measure {
let positions2 = this.id_map.get(id2).positions
let p1 = this.cartesian3Towgs84(positions1[0], this.viewer)
let p2 = this.cartesian3Towgs84(positions1[1], this.viewer)
let shuiping = this.computeDistance([p2, p1])
let shuiping = this.computeDistance2([p2, p1])
let p3 = this.cartesian3Towgs84(positions2[0], this.viewer)
let p4 = this.cartesian3Towgs84(positions2[1], this.viewer)
let d = this.computeDistance([p3, p4])
let d = this.computeDistance2([p3, p4])
let h = Math.abs(p3.alt - p4.alt)
let x = Math.sqrt(Math.pow(h, 2) + Math.pow(d, 2))
if (shuiping == 0.00) {

View File

@ -62,7 +62,7 @@ class PolygonObject extends Base {
lineWidth: (options.label.lineWidth || options.label.lineWidth === 0) ? options.label.lineWidth : 4,
pixelOffset: (options.label.pixelOffset || options.label.pixelOffset === 0) ? options.label.pixelOffset : 20,
backgroundColor: options.label.backgroundColor || ['#42c6ef', '#42c6ef'],
lineColor: options.label.lineColor || '#fff000',
lineColor: options.label.lineColor || '#00ffff80',
scaleByDistance: options.label.scaleByDistance || false,
near: (options.label.near || options.label.near === 0) ? options.label.near : 2000,
far: (options.label.far || options.label.far === 0) ? options.label.far : 100000,
@ -105,7 +105,7 @@ class PolygonObject extends Base {
this.entity.polygon.material = Cesium.Color.fromCssColorString(v)
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -218,7 +218,7 @@ class PolygonObject extends Base {
this.entity.polyline.material = Cesium.Color.fromCssColorString(v)
if (this._elms.lineColor) {
this._elms.lineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -311,7 +311,7 @@ class PolygonObject extends Base {
this.label.color = v
if (this._elms.labelColor) {
this._elms.labelColor.forEach((item, i) => {
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -411,7 +411,7 @@ class PolygonObject extends Base {
this.label.lineColor = v
if (this._elms.labelLineColor) {
this._elms.labelLineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -438,7 +438,7 @@ class PolygonObject extends Base {
this.label.backgroundColor = [v, this.label.backgroundColor[1]]
if (this._elms.labelBackgroundColorStart) {
this._elms.labelBackgroundColorStart.forEach((item, i) => {
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -464,7 +464,7 @@ class PolygonObject extends Base {
this.label.backgroundColor = [this.label.backgroundColor[0], v]
if (this._elms.labelBackgroundColorEnd) {
this._elms.labelBackgroundColorEnd.forEach((item, i) => {
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1013,7 +1013,7 @@ class PolygonObject extends Base {
// 创建标签页
let tabsElm = new cy_tabs('polygon-object-edit-tabs', undefined, this.sdk)
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1027,7 +1027,7 @@ class PolygonObject extends Base {
this.color = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let linecolorPicker = new ewPlugins('colorpicker', {
let linecolorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("lineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1041,7 +1041,7 @@ class PolygonObject extends Base {
this.lineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1055,7 +1055,7 @@ class PolygonObject extends Base {
this.labelColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelLineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1069,7 +1069,7 @@ class PolygonObject extends Base {
this.labelLineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorStart")[0],
size: 'mini',
alpha: true,
@ -1083,7 +1083,7 @@ class PolygonObject extends Base {
this.labelBackgroundColorStart = 'rgba(255,255,255,1)'
},
})
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorEnd")[0],
size: 'mini',
alpha: true,

View File

@ -24,7 +24,7 @@ class AssembleObject extends Base {
* @param options {object} 属性
* @param options.show=true {boolean} 显示/隐藏
* @param options.name {string} 名称
* @param options.color="#36c4ff" {string} 颜色
* @param options.color="#ff000080" {string} 颜色
* @param options.height {number} 高度
* @param options.heightMode=2{number} 高度模式0海拔高度1相对地表2依附模式
* @param {Array.<object>} options.positions 坐标数组 [{lon,lat,alt},...]
@ -34,13 +34,13 @@ class AssembleObject extends Base {
constructor(sdk, options = {}, _Dialog = {}) {
super(sdk, options);
this.options.name = options.name || '未命名对象'
this.options.color = options.color || "#36c4ff"
this.options.color = options.color || "#ff000080"
this.options.show = (options.show || options.show === false) ? options.show : true
this.options.heightMode = (options.heightMode || options.heightMode == 0) ? options.heightMode : 2
this.options.positions = options.positions || []
this.options.line = options.line || {}
this.options.line.width = this.options.line.width || 2
this.options.line.color = this.options.line.color || 'rgba(155, 155, 124, 0.89)'
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, 0.5)'
this.options['area-unit'] = options['area-unit'] || '平方米'
this.entity
this.event = new MouseEvent(this.sdk)
@ -57,8 +57,8 @@ class AssembleObject extends Base {
color: options.label.color || '#ffffff',
lineWidth: (options.label.lineWidth || options.label.lineWidth === 0) ? options.label.lineWidth : 4,
pixelOffset: (options.label.pixelOffset || options.label.pixelOffset === 0) ? options.label.pixelOffset : 20,
backgroundColor: options.label.backgroundColor || ['#42c6ef', '#42c6ef'],
lineColor: options.label.lineColor || '#fff000',
backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],
lineColor: options.label.lineColor || '#00ffff80',
scaleByDistance: options.label.scaleByDistance || false,
near: (options.label.near || options.label.near === 0) ? options.label.near : 2000,
far: (options.label.far || options.label.far === 0) ? options.label.far : 100000,
@ -106,31 +106,31 @@ class AssembleObject extends Base {
return this.options.color
}
set color(v) {
this.options.color = v
this.options.color = v || 'rgba(255, 0, 0, 0.5)'
if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polygon) {
return
}
let material = Cesium.Color.fromCssColorString(v)
let material = Cesium.Color.fromCssColorString(this.options.color)
if (this.sdk.viewer.scene.mode === 2) {
material = new Cesium.CustomColorMaterialSource({
color: v
color: this.options.color
})
}
this.entity.polygon.material = material
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
defaultColor: v,
defaultColor: this.options.color,
disabled: false,//是否禁止打开颜色选择器
openPickerAni: 'opacity',//打开颜色选择器动画
sure: (c) => {
this.color = c
},//点击确认按钮事件回调
clear: () => {
this.color = 'rgba(255,255,255,1)'
this.color = 'rgba(255,0,0,0.5)'
},//点击清空按钮事件回调
})
this._elms.color[i] = colorPicker
@ -238,25 +238,25 @@ class AssembleObject extends Base {
return this.options.line.color
}
set lineColor(v) {
this.options.line.color = v
this.options.line.color = v || 'rgba(255, 0, 0, 0.5)'
if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polyline) {
return
}
this.entity.polyline.material = Cesium.Color.fromCssColorString(v)
this.entity.polyline.material = Cesium.Color.fromCssColorString(this.options.line.color)
if (this._elms.lineColor) {
this._elms.lineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
defaultColor: v,
defaultColor: this.options.line.color,
disabled: false,//是否禁止打开颜色选择器
openPickerAni: 'opacity',//打开颜色选择器动画
sure: (c) => {
this.lineColor = c
},//点击确认按钮事件回调
clear: () => {
this.lineColor = 'rgba(255,255,255,1)'
this.lineColor = 'rgba(255,0,0,0.5)'
},//点击清空按钮事件回调
})
this._elms.lineColor[i] = lineColorPicker
@ -268,10 +268,10 @@ class AssembleObject extends Base {
return this.options.line.width
}
set lineWidth(v) {
this.options.line.width = v
this.entity.polyline.width = v
this.options.line.width = ((v || v === 0) ? v : 3)
this.entity.polyline.width = this.options.line.width
this._elms.lineColor && this._elms.lineColor.forEach((item) => {
item.value = v
item.value = this.options.line.width
})
}
@ -353,7 +353,7 @@ class AssembleObject extends Base {
this.label.color = v
if (this._elms.labelColor) {
this._elms.labelColor.forEach((item, i) => {
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -453,7 +453,7 @@ class AssembleObject extends Base {
this.label.lineColor = v
if (this._elms.labelLineColor) {
this._elms.labelLineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -464,7 +464,7 @@ class AssembleObject extends Base {
this.labelLineColor = color
},//点击确认按钮事件回调
clear: () => {
this.labelLineColor = 'rgba(255,255,255,1)'
this.labelLineColor = 'rgba(0,255,255,0.5)'
},//点击清空按钮事件回调
})
this._elms.labelLineColor[i] = lineColorPicker
@ -480,7 +480,7 @@ class AssembleObject extends Base {
this.label.backgroundColor = [v, this.label.backgroundColor[1]]
if (this._elms.labelBackgroundColorStart) {
this._elms.labelBackgroundColorStart.forEach((item, i) => {
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -506,7 +506,7 @@ class AssembleObject extends Base {
this.label.backgroundColor = [this.label.backgroundColor[0], v]
if (this._elms.labelBackgroundColorEnd) {
this._elms.labelBackgroundColorEnd.forEach((item, i) => {
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1171,7 +1171,7 @@ class AssembleObject extends Base {
// 创建标签页
let tabsElm = new cy_tabs('assemble-object-edit-tabs', undefined, this.sdk)
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1185,7 +1185,7 @@ class AssembleObject extends Base {
this.color = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let linecolorPicker = new ewPlugins('colorpicker', {
let linecolorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("lineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1199,7 +1199,7 @@ class AssembleObject extends Base {
this.lineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1213,7 +1213,7 @@ class AssembleObject extends Base {
this.labelColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labellineColorPicker = new ewPlugins('colorpicker', {
let labellineColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelLineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1227,7 +1227,7 @@ class AssembleObject extends Base {
this.labelLineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorStart")[0],
size: 'mini',
alpha: true,
@ -1241,7 +1241,7 @@ class AssembleObject extends Base {
this.labelBackgroundColorStart = 'rgba(255,255,255,1)'
},
})
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorEnd")[0],
size: 'mini',
alpha: true,

View File

@ -24,7 +24,7 @@ class AttackArrowObject extends Base {
* @param options {object} 属性
* @param options.show=true {boolean} 显示/隐藏
* @param options.name {string} 名称
* @param options.color="#36c4ff" {string} 颜色
* @param options.color="#ff000080" {string} 颜色
* @param options.height {number} 高度
* @param options.heightMode=2{number} 高度模式0海拔高度1相对地表2依附模式
* @param {Array.<object>} options.positions 坐标数组 [{lon,lat,alt},...]
@ -34,13 +34,13 @@ class AttackArrowObject extends Base {
constructor(sdk, options = {}, _Dialog = {}) {
super(sdk, options);
this.options.name = options.name || '未命名对象'
this.options.color = options.color || "#36c4ff"
this.options.color = options.color || "#ff000080"
this.options.show = (options.show || options.show === false) ? options.show : true
this.options.positions = options.positions || []
this.options.heightMode = (options.heightMode || options.heightMode == 0) ? options.heightMode : 2
this.options.line = options.line || {}
this.options.line.width = this.options.line.width || 2
this.options.line.color = this.options.line.color || 'rgba(155, 155, 124, 0.89)'
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, 0.5)'
this.options['area-unit'] = options['area-unit'] || '平方米'
this.entity
this.event = new MouseEvent(this.sdk)
@ -61,8 +61,8 @@ class AttackArrowObject extends Base {
color: options.label.color || '#ffffff',
lineWidth: (options.label.lineWidth || options.label.lineWidth === 0) ? options.label.lineWidth : 4,
pixelOffset: (options.label.pixelOffset || options.label.pixelOffset === 0) ? options.label.pixelOffset : 20,
backgroundColor: options.label.backgroundColor || ['#42c6ef', '#42c6ef'],
lineColor: options.label.lineColor || '#fff000',
backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],
lineColor: options.label.lineColor || '#00ffff80',
scaleByDistance: options.label.scaleByDistance || false,
near: (options.label.near || options.label.near === 0) ? options.label.near : 2000,
far: (options.label.far || options.label.far === 0) ? options.label.far : 100000,
@ -110,31 +110,31 @@ class AttackArrowObject extends Base {
return this.options.color
}
set color(v) {
this.options.color = v
this.options.color = v || 'rgba(255, 0, 0, 0.5)'
if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polygon) {
return
}
let material = Cesium.Color.fromCssColorString(v)
let material = Cesium.Color.fromCssColorString(this.options.color)
if (this.sdk.viewer.scene.mode === 2) {
material = new Cesium.CustomColorMaterialSource({
color: v
color: this.options.color
})
}
this.entity.polygon.material = material
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
defaultColor: v,
defaultColor: this.options.color,
disabled: false,//是否禁止打开颜色选择器
openPickerAni: 'opacity',//打开颜色选择器动画
sure: (c) => {
this.color = c
},//点击确认按钮事件回调
clear: () => {
this.color = 'rgba(255,255,255,1)'
this.color = 'rgba(255,0,0,0.5)'
},//点击清空按钮事件回调
})
this._elms.color[i] = colorPicker
@ -243,25 +243,25 @@ class AttackArrowObject extends Base {
return this.options.line.color
}
set lineColor(v) {
this.options.line.color = v
this.options.line.color = v || 'rgba(255, 0, 0, 0.5)'
if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polyline) {
return
}
this.entity.polyline.material = Cesium.Color.fromCssColorString(v)
this.entity.polyline.material = Cesium.Color.fromCssColorString(this.options.line.color)
if (this._elms.lineColor) {
this._elms.lineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
defaultColor: v,
defaultColor: this.options.line.color,
disabled: false,//是否禁止打开颜色选择器
openPickerAni: 'opacity',//打开颜色选择器动画
sure: (c) => {
this.lineColor = c
},//点击确认按钮事件回调
clear: () => {
this.lineColor = 'rgba(255,255,255,1)'
this.lineColor = 'rgba(255,0,0,0.5)'
},//点击清空按钮事件回调
})
this._elms.lineColor[i] = lineColorPicker
@ -273,8 +273,8 @@ class AttackArrowObject extends Base {
return this.options.line.width
}
set lineWidth(v) {
this.options.line.width = v
this.entity.polyline.width = v
this.options.line.width = ((v || v === 0) ? v : 3)
this.entity.polyline.width = this.options.line.width
this._elms.lineColor && this._elms.lineColor.forEach((item) => {
item.value = v
})
@ -358,7 +358,7 @@ class AttackArrowObject extends Base {
this.label.color = v
if (this._elms.labelColor) {
this._elms.labelColor.forEach((item, i) => {
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -458,7 +458,7 @@ class AttackArrowObject extends Base {
this.label.lineColor = v
if (this._elms.labelLineColor) {
this._elms.labelLineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -469,7 +469,7 @@ class AttackArrowObject extends Base {
this.labelLineColor = color
},//点击确认按钮事件回调
clear: () => {
this.labelLineColor = 'rgba(255,255,255,1)'
this.labelLineColor = 'rgba(0,255,255,0.5)'
},//点击清空按钮事件回调
})
this._elms.labelLineColor[i] = lineColorPicker
@ -485,7 +485,7 @@ class AttackArrowObject extends Base {
this.label.backgroundColor = [v, this.label.backgroundColor[1]]
if (this._elms.labelBackgroundColorStart) {
this._elms.labelBackgroundColorStart.forEach((item, i) => {
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -511,7 +511,7 @@ class AttackArrowObject extends Base {
this.label.backgroundColor = [this.label.backgroundColor[0], v]
if (this._elms.labelBackgroundColorEnd) {
this._elms.labelBackgroundColorEnd.forEach((item, i) => {
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1182,7 +1182,7 @@ class AttackArrowObject extends Base {
// 创建标签页
let tabsElm = new cy_tabs('attack-arrow-object-edit-tabs', undefined, this.sdk)
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1196,7 +1196,7 @@ class AttackArrowObject extends Base {
this.color = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let linecolorPicker = new ewPlugins('colorpicker', {
let linecolorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("lineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1210,7 +1210,7 @@ class AttackArrowObject extends Base {
this.lineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1224,7 +1224,7 @@ class AttackArrowObject extends Base {
this.labelColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labellineColorPicker = new ewPlugins('colorpicker', {
let labellineColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelLineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1238,7 +1238,7 @@ class AttackArrowObject extends Base {
this.labelLineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorStart")[0],
size: 'mini',
alpha: true,
@ -1252,7 +1252,7 @@ class AttackArrowObject extends Base {
this.labelBackgroundColorStart = 'rgba(255,255,255,1)'
},
})
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorEnd")[0],
size: 'mini',
alpha: true,

View File

@ -33,6 +33,7 @@ class ArcgisLayer extends BaseLayer {
} else {
this.entity = this.sdk.viewer.imageryLayers.addImageryProvider(imageryProvider,)
}
this.entity._id = this.options.id
for (let i = 0; i < this.sdk.viewer.imageryLayers._layers.length; i++) {
if (this.sdk.viewer.imageryLayers._layers[i]._imageryProvider && this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type && (this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'flw' || this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'jww')) {
let layer = this.sdk.viewer.imageryLayers._layers[i]

View File

@ -30,6 +30,7 @@ class GdImagery extends BaseLayer {
} else {
this.entity = this.sdk.viewer.imageryLayers.addImageryProvider(gdLayer,)
}
this.entity._id = this.options.id
for (let i = 0; i < this.sdk.viewer.imageryLayers._layers.length; i++) {
if (this.sdk.viewer.imageryLayers._layers[i]._imageryProvider && this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type && (this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'flw' || this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'jww')) {
let layer = this.sdk.viewer.imageryLayers._layers[i]

View File

@ -126,6 +126,7 @@ class Layer extends BaseLayer {
this.entity =
this.sdk.viewer.scene.imageryLayers.addImageryProvider(layer,)
}
this.entity._id = this.options.id
for (let i = 0; i < this.sdk.viewer.imageryLayers._layers.length; i++) {
if (this.sdk.viewer.imageryLayers._layers[i]._imageryProvider && this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type && (this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'flw' || this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'jww')) {
let layer = this.sdk.viewer.imageryLayers._layers[i]

View File

@ -37,6 +37,7 @@ class Layer3rdparty extends BaseLayer {
this.entity =
this.sdk.viewer.scene.imageryLayers.addImageryProvider(layer,)
}
this.entity._id = this.options.id
for (let i = 0; i < this.sdk.viewer.imageryLayers._layers.length; i++) {
if (this.sdk.viewer.imageryLayers._layers[i]._imageryProvider && this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type && (this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'flw' || this.sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'jww')) {
let layer = this.sdk.viewer.imageryLayers._layers[i]

View File

@ -28,11 +28,11 @@ class BaseLayer extends BaseSource {
}
get layerIndex() {
return this.entity._layerIndex
return this.entity ? this.entity._layerIndex : undefined
}
get layer_index() {
return this.entity._layerIndex
return this.entity ? this.entity._layerIndex : undefined
}
get brightness() {

View File

@ -56,7 +56,7 @@ function html(that) {
</div>
</div>
<div class="col">
<span class="label">视野缩放</span>
<span class="label">固定大小</span>
<input class="btn-switch" type="checkbox" @model="scaleByDistance">
</div>
</div>

View File

@ -100,8 +100,8 @@ class Model extends BaseModel {
color: options.label.color || '#ffffff',
lineWidth: (options.label.lineWidth || options.label.lineWidth === 0) ? options.label.lineWidth : 4,
pixelOffset: (options.label.pixelOffset || options.label.pixelOffset === 0) ? options.label.pixelOffset : 20,
backgroundColor: options.label.backgroundColor || ['#42c6ef', '#42c6ef'],
lineColor: options.label.lineColor || '#fff000',
backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],
lineColor: options.label.lineColor || '#00ffff80',
scaleByDistance: options.label.scaleByDistance || false,
near: (options.label.near || options.label.near === 0) ? options.label.near : 2000,
far: (options.label.far || options.label.far === 0) ? options.label.far : 100000,
@ -145,15 +145,7 @@ class Model extends BaseModel {
if (!this.sdk || !this.sdk.viewer || !this.sdk.viewer.scene) {
return
}
if (!url.startsWith("http")) {
//说明是本地的json在磁盘中存在的
if (!url.includes(":")) {
if (this.options.host) {
let o = new URL(url, this.options.host)
url = o.href
}
}
}
url = this.replaceHost(url, this.options.host)
// this.handler = new Cesium.ScreenSpaceEventHandler(
// this.sdk.viewer.canvas
// )
@ -447,7 +439,7 @@ class Model extends BaseModel {
this.entity.color = Cesium.Color.fromCssColorString(v)
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -679,7 +671,7 @@ class Model extends BaseModel {
this.label && (this.label.color = v)
if (this._elms.labelColor) {
this._elms.labelColor.forEach((item, i) => {
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -780,7 +772,7 @@ class Model extends BaseModel {
this.label && (this.label.lineColor = v)
if (this._elms.labelLineColor) {
this._elms.labelLineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -791,7 +783,7 @@ class Model extends BaseModel {
this.labelLineColor = color
},//点击确认按钮事件回调
clear: () => {
this.labelLineColor = 'rgba(255,255,255,1)'
this.labelLineColor = 'rgba(0,255,255,0.5)'
},//点击清空按钮事件回调
})
this._elms.labelLineColor[i] = lineColorPicker
@ -807,7 +799,7 @@ class Model extends BaseModel {
this.label && (this.label.backgroundColor = [v, this.label.backgroundColor[1]])
if (this._elms.labelBackgroundColorStart) {
this._elms.labelBackgroundColorStart.forEach((item, i) => {
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -833,7 +825,7 @@ class Model extends BaseModel {
this.label && (this.label.backgroundColor = [this.label.backgroundColor[0], v])
if (this._elms.labelBackgroundColorEnd) {
this._elms.labelBackgroundColorEnd.forEach((item, i) => {
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1336,7 +1328,9 @@ class Model extends BaseModel {
this.name = this.options.name || '未命名对象'
this.originalOptions = this.deepCopyObj(this.options)
this._DialogObject.close()
this.Dialog.confirmCallBack && this.Dialog.confirmCallBack(this.originalOptions)
let cdoptions = this.deepCopyObj(this.options)
cdoptions.host = ''
this.Dialog.confirmCallBack && this.Dialog.confirmCallBack(cdoptions)
syncData(this.sdk, this.options.id)
syncSplitData(this.sdk, this.options.id)
},
@ -1425,7 +1419,7 @@ class Model extends BaseModel {
}
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1439,7 +1433,7 @@ class Model extends BaseModel {
this.color = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1453,7 +1447,7 @@ class Model extends BaseModel {
this.labelColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelLineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1467,7 +1461,7 @@ class Model extends BaseModel {
this.labelLineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorStart")[0],
size: 'mini',
alpha: true,
@ -1481,7 +1475,7 @@ class Model extends BaseModel {
this.labelBackgroundColorStart = 'rgba(255,255,255,1)'
},
})
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorEnd")[0],
size: 'mini',
alpha: true,

View File

@ -381,7 +381,7 @@ class Model2 extends BaseModel {
this.entity.color = Cesium.Color.fromCssColorString(v)
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -583,7 +583,7 @@ class Model2 extends BaseModel {
this.label.color = v
if (this._elms.labelColor) {
this._elms.labelColor.forEach((item, i) => {
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -676,7 +676,7 @@ class Model2 extends BaseModel {
this.label.lineColor = v
if (this._elms.lineColor) {
this._elms.lineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -704,7 +704,7 @@ class Model2 extends BaseModel {
this.label.backgroundColor = [v, this.labelBackgroundColorEnd]
if (this._elms.labelBackgroundColorStart) {
this._elms.labelBackgroundColorStart.forEach((item, i) => {
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -732,7 +732,7 @@ class Model2 extends BaseModel {
this.label.backgroundColor = [this.labelBackgroundColorStart, v]
if (this._elms.labelBackgroundColorEnd) {
this._elms.labelBackgroundColorEnd.forEach((item, i) => {
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1098,7 +1098,7 @@ class Model2 extends BaseModel {
// 创建标签页
let tabsElm = new cy_tabs('model-edit-tabs', undefined, this.sdk)
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1112,7 +1112,7 @@ class Model2 extends BaseModel {
this.color = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("label_color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1126,7 +1126,7 @@ class Model2 extends BaseModel {
this.labelColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("line_color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1140,7 +1140,7 @@ class Model2 extends BaseModel {
this.lineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorStart")[0],
size: 'mini',
alpha: true,
@ -1154,7 +1154,7 @@ class Model2 extends BaseModel {
this.labelBackgroundColorStart = 'rgba(255,255,255,1)'
},
})
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorEnd")[0],
size: 'mini',
alpha: true,

View File

@ -247,7 +247,9 @@ class BaseTerrain extends BaseSource {
}
this.originalOptions = this.deepCopyObj(this.options)
this._DialogObject.close()
this.Dialog.confirmCallBack && this.Dialog.confirmCallBack(this.originalOptions)
let cdoptions = this.deepCopyObj(this.options)
cdoptions.host = ''
this.Dialog.confirmCallBack && this.Dialog.confirmCallBack(cdoptions)
},
// resetCallBack: () => {
// this.name = this.originalOptions.name

View File

@ -63,9 +63,9 @@ class BillboardObject extends Base {
*@param options.label {object} 标注文字的参数
*@param [options.label.text] {string} 标注中文字
*@param [options.label.show=true] {boolean} 标注文字显示/隐藏
*@param [options.label.fontFamily=0] {number} 标注文字字体 0思源黑体1:庞门正道标题体;2:数黑体
*@param [options.label.fontFamily=0] {number} 标注文字字体 0黑体1思源黑体;2:庞门正道标题体;3:数黑体
*@param [options.label.fontSize=39] {number} 标注文字大小 单位px微软雅黑
*@param [options.label.color=#07f8e4] {string} 标注文字颜色
*@param [options.label.color=#00ffff] {string} 标注文字颜色
*@param _Dialog {object} 弹框事件
*@param _Dialog.confirmCallBack {function} 弹框确认时的回调
*@param _Dialog.instructSubmit(id,name,instruct) {function} 提交指令ID, 名称,指令内容)
@ -107,7 +107,7 @@ class BillboardObject extends Base {
: true
this.options.label.fontFamily = options.label.fontFamily || 0
this.options.label.fontSize = options.label.fontSize || 39
this.options.label.color = options.label.color || '#FFFF00'
this.options.label.color = options.label.color || '#00ffff'
this.options.positions = options.positions = options.positions || {}
this.options.positions.lng = Number(
Number(options.positions.lng || 0).toFixed(8)
@ -211,8 +211,9 @@ class BillboardObject extends Base {
let index = 0
let font = getFontFamily(that.labelFontFamily) || 'Helvetica'
let url = that.replaceHost(that.options.billboard.image, that.options.host)
that._frameImages = []
if (that.options.billboard.image && that.options.billboard.image.endsWith('gif')) {
if (url && url.endsWith('gif')) {
isGlf = true
switch (that.options.heightMode) {
case 2:
@ -222,7 +223,7 @@ class BillboardObject extends Base {
}
let gifImg = document.createElement('img')
gifImg.setAttribute('rel:animated_src', that.options.billboard.image)
gifImg.setAttribute('rel:animated_src', url)
gifImg.setAttribute('rel:auto_play', '1')
const imgDiv = document.createElement('div')
imgDiv.appendChild(gifImg)
@ -272,7 +273,7 @@ class BillboardObject extends Base {
else {
let image = new Image()
image.src =
that.options.billboard.image ||
url ||
that.getSourceRootPath() + '/img/A-ablu-blank.png'
switch (that.options.heightMode) {
case 2:
@ -720,11 +721,21 @@ class BillboardObject extends Base {
}
get billboardImage() {
return this.options.billboard.image
let url = this.options.billboard.image
if (url && !url.startsWith("http")) {
//说明是本地的json在磁盘中存在的
if (!url.includes(":")) {
if (this.options.host) {
let o = new URL(url, this.options.host)
url = o.href
}
}
}
return url
}
set billboardImage(v) {
let _this = this
this.options.billboard.image = v
this.options.billboard.image = this.replaceHost(v, this.options.host)
let url =
this.options.billboard.image ||
getBillboardDefaultUrl(this.options.billboard.defaultImage) ||
@ -916,22 +927,22 @@ class BillboardObject extends Base {
return this.options.label.color
}
set labelColor(v) {
this.options.label.color = v
this.options.label.color = v || '#00ffff'
this.renewPoint()
if (this._elms.labelColor) {
this._elms.labelColor.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini', //颜色box类型
alpha: true, //是否开启透明度
defaultColor: v,
defaultColor: this.options.label.color,
disabled: false, //是否禁止打开颜色选择器
openPickerAni: 'opacity', //打开颜色选择器动画
sure: c => {
this.labelColor = c
}, //点击确认按钮事件回调
clear: () => {
this.labelColor = 'rgba(255,255,255,1)'
this.labelColor = 'rgba(0,255,255,1)'
} //点击清空按钮事件回调
})
this._elms.labelColor[i] = colorPicker
@ -993,7 +1004,7 @@ class BillboardObject extends Base {
// this.options.diffuseColor = v
// if (this._elms.diffuseColor) {
// this._elms.diffuseColor.forEach((item, i) => {
// let diffuseColorPicker = new ewPlugins('colorpicker', {
// let diffuseColorPicker = new YJColorPicker({
// el: item.el,
// size: 'mini',//颜色box类型
// alpha: false,//是否开启透明度
@ -1069,7 +1080,7 @@ class BillboardObject extends Base {
// this.options.scanColor = v
// if (this._elms.scanColor) {
// this._elms.scanColor.forEach((item, i) => {
// let scanColorPicker = new ewPlugins('colorpicker', {
// let scanColorPicker = new YJColorPicker({
// el: item.el,
// size: 'mini',//颜色box类型
// alpha: false,//是否开启透明度
@ -1497,10 +1508,11 @@ class BillboardObject extends Base {
}
set billboardDefaultImage(v) {
setBillboardDefaultUrl(v, this.options.billboard.defaultImage)
let url = this.replaceHost(v, this.options.host)
setBillboardDefaultUrl(url, this.options.billboard.defaultImage)
this._elms.billboardDefaultImage &&
this._elms.billboardDefaultImage.forEach(item => {
item.src = v
item.src = url
})
}
@ -1575,8 +1587,10 @@ class BillboardObject extends Base {
}
this.originalOptions = this.deepCopyObj(this.options)
this._DialogObject.close()
let cdoptions = this.deepCopyObj(this.options)
cdoptions.host = ''
this.Dialog.confirmCallBack &&
this.Dialog.confirmCallBack(this.originalOptions)
this.Dialog.confirmCallBack(cdoptions)
syncData(this.sdk, this.options.id)
syncSplitData(this.sdk, this.options.id)
},
@ -1631,7 +1645,7 @@ class BillboardObject extends Base {
// 创建标签页
let tabsElm = new cy_tabs('point-object-edit-tabs', undefined, this.sdk)
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName('labelColor')[0],
size: 'mini', //颜色box类型
alpha: true, //是否开启透明度
@ -1646,7 +1660,7 @@ class BillboardObject extends Base {
} //点击清空按钮事件回调
})
// let diffuseColorPicker = new ewPlugins('colorpicker', {
// let diffuseColorPicker = new YJColorPicker({
// el: contentElm.getElementsByClassName("diffuseColor")[0],
// size: 'mini',//颜色box类型
// alpha: false,//是否开启透明度
@ -1660,7 +1674,7 @@ class BillboardObject extends Base {
// this.diffuseColor = 'rgba(255,255,255,1)'
// },//点击清空按钮事件回调
// })
// let scanColorPicker = new ewPlugins('colorpicker', {
// let scanColorPicker = new YJColorPicker({
// el: contentElm.getElementsByClassName("scanColor")[0],
// size: 'mini',//颜色box类型
// alpha: false,//是否开启透明度
@ -1812,7 +1826,13 @@ class BillboardObject extends Base {
case '2':
case 3:
case '3':
this.getClampToHeight(this.options.positions).then(h => {
let objectsToExclude = []
for (let [key, value] of this.sdk.entityMap) {
if (value.type === 'RadarScanStereoscopic' && value.entity) {
objectsToExclude.push(value.entity)
}
}
this.getClampToHeight(this.options.positions, objectsToExclude).then(h => {
this.alt = Number(h.toFixed(2))
heightElm.value = this.alt
})
@ -1876,7 +1896,13 @@ class BillboardObject extends Base {
break
case 3:
case '3':
this.getClampToHeight(this.options.positions).then(h => {
let objectsToExclude = []
for (let [key, value] of this.sdk.entityMap) {
if (value.type === 'RadarScanStereoscopic' && value.entity) {
objectsToExclude.push(value.entity)
}
}
this.getClampToHeight(this.options.positions, objectsToExclude).then(h => {
this.alt = Number(h.toFixed(2))
})
this.heightMode = 3
@ -2330,9 +2356,14 @@ class BillboardObject extends Base {
this.options.positions.lat,
10000000000000
)
let updatedCartesians = await this.sdk.viewer.scene.clampToHeightMostDetailed(
[point1]
)
let objectsToExclude = []
for (let [key, value] of this.sdk.entityMap) {
if (value.type === 'RadarScanStereoscopic' && value.entity) {
objectsToExclude.push(value.entity)
}
}
let updatedCartesians = await this.sdk.viewer.scene.clampToHeightMostDetailed([point1], objectsToExclude)
if (updatedCartesians && updatedCartesians[0]) {
height = this.cartesian3Towgs84(updatedCartesians[0], this.sdk.viewer).alt
}
@ -2471,7 +2502,13 @@ class BillboardObject extends Base {
}
// 如果没有高度值,则获取紧贴高度计算
if (!position.hasOwnProperty('alt')) {
position.alt = await this.getClampToHeight(position)
let objectsToExclude = []
for (let [key, value] of this.sdk.entityMap) {
if (value.type === 'RadarScanStereoscopic' && value.entity) {
objectsToExclude.push(value.entity)
}
}
position.alt = await this.getClampToHeight(position, objectsToExclude)
}
lng = this.options.customView.relativePosition.lng + position.lng
lat = this.options.customView.relativePosition.lat + position.lat
@ -2482,7 +2519,13 @@ class BillboardObject extends Base {
orientation: orientation
})
} else {
let height = await this.getClampToHeight(this.options.positions)
let objectsToExclude = []
for (let [key, value] of this.sdk.entityMap) {
if (value.type === 'RadarScanStereoscopic' && value.entity) {
objectsToExclude.push(value.entity)
}
}
let height = await this.getClampToHeight(this.options.positions, objectsToExclude)
this.sdk.viewer.camera.flyTo({
orientation: options.orientation,
destination: Cesium.Cartesian3.fromDegrees(
@ -2650,7 +2693,13 @@ class BillboardObject extends Base {
}
// 如果没有高度值,则获取紧贴高度计算
if (!position.hasOwnProperty('alt')) {
position.alt = await this.getClampToHeight(position)
let objectsToExclude = []
for (let [key, value] of this.sdk.entityMap) {
if (value.type === 'RadarScanStereoscopic' && value.entity) {
objectsToExclude.push(value.entity)
}
}
position.alt = await this.getClampToHeight(position, objectsToExclude)
}
relativePosition = {
lng: cameraPosition84.lng - position.lng,

View File

@ -75,8 +75,8 @@ class CircleDiffuse extends Base {
color: options.label.color || '#ffffff',
lineWidth: (options.label.lineWidth || options.label.lineWidth === 0) ? options.label.lineWidth : 4,
pixelOffset: (options.label.pixelOffset || options.label.pixelOffset === 0) ? options.label.pixelOffset : 20,
backgroundColor: options.label.backgroundColor || ['#42c6ef', '#42c6ef'],
lineColor: options.label.lineColor || '#fff000',
backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],
lineColor: options.label.lineColor || '#00ffff80',
scaleByDistance: options.label.scaleByDistance || false,
near: (options.label.near || options.label.near === 0) ? options.label.near : 2000,
far: (options.label.far || options.label.far === 0) ? options.label.far : 100000,
@ -462,7 +462,7 @@ class CircleDiffuse extends Base {
this.label.color = v
if (this._elms.labelColor) {
this._elms.labelColor.forEach((item, i) => {
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -562,7 +562,7 @@ class CircleDiffuse extends Base {
this.label.lineColor = v
if (this._elms.labelLineColor) {
this._elms.labelLineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -573,7 +573,7 @@ class CircleDiffuse extends Base {
this.labelLineColor = color
},//点击确认按钮事件回调
clear: () => {
this.labelLineColor = 'rgba(255,255,255,1)'
this.labelLineColor = 'rgba(0,255,255,0.5)'
},//点击清空按钮事件回调
})
this._elms.labelLineColor[i] = lineColorPicker
@ -589,7 +589,7 @@ class CircleDiffuse extends Base {
this.label.backgroundColor = [v, this.label.backgroundColor[1]]
if (this._elms.labelBackgroundColorStart) {
this._elms.labelBackgroundColorStart.forEach((item, i) => {
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -615,7 +615,7 @@ class CircleDiffuse extends Base {
this.label.backgroundColor = [this.label.backgroundColor[0], v]
if (this._elms.labelBackgroundColorEnd) {
this._elms.labelBackgroundColorEnd.forEach((item, i) => {
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1104,7 +1104,7 @@ class CircleDiffuse extends Base {
// 创建标签页
let tabsElm = new cy_tabs('circle-diffuse-edit-tabs', undefined, this.sdk)
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1118,7 +1118,7 @@ class CircleDiffuse extends Base {
this.labelColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelLineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1132,7 +1132,7 @@ class CircleDiffuse extends Base {
this.labelLineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorStart")[0],
size: 'mini',
alpha: true,
@ -1146,7 +1146,7 @@ class CircleDiffuse extends Base {
this.labelBackgroundColorStart = 'rgba(255,255,255,1)'
},
})
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorEnd")[0],
size: 'mini',
alpha: true,
@ -1446,11 +1446,11 @@ class CircleDiffuse extends Base {
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: circleElm.getElementsByClassName("color")[0],
size: 'mini',//颜色box类型
alpha: false,//是否开启透明度
defaultColor: this.options.circle[i].color,
defaultColor: this.options.circle[i].color || this.options.color,
disabled: false,//是否禁止打开颜色选择器
openPickerAni: 'opacity',//打开颜色选择器动画
sure: (color) => {

View File

@ -23,7 +23,7 @@ class CircleObject extends Base {
* @param options.id {string} 标注id
* @param options.name {string} 名称
* @param options.show=true {boolean} 显示/隐藏
* @param options.color="#36c4ff" {string} 颜色
* @param options.color="#ff000080" {string} 颜色
* @param options.center {object} 位置
* @param options.center.lng {object} 经度
* @param options.center.lat {object} 纬度
@ -31,21 +31,21 @@ class CircleObject extends Base {
* @param options.radius=10 {object}半径
* @param options.line {object} 边框
* @param options.line.width=2 {string} 边框宽
* @param options.line.color="rgba(155, 155, 124, 0.89)" {string} 边框颜色
* @param options.line.color="#ff000080" {string} 边框颜色
* @param options.label {object} 标注
* @param options.heightMode=2{number} 高度模式0海拔高度1相对地表2依附模式
*/
constructor(sdk, options = {}) {
super(sdk, options);
this.options.name = options.name || '未命名对象'
this.options.color = options.color || "#36c4ff"
this.options.color = options.color || "#ff000080"
this.options.heightMode = (options.heightMode || options.heightMode == 0) ? options.heightMode : 2
this.options.radius = (options.radius || options.radius === 0) ? options.radius : 10
this.options.show = (options.show || options.show === false) ? options.show : true
this.options.center = options.center || {}
this.options.line = options.line || {}
this.options.line.width = this.options.line.width || 2
this.options.line.color = this.options.line.color || 'rgba(155, 155, 124, 0.89)'
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, 0.5)'
this.options['area-unit'] = options['area-unit'] || '平方米'
options.label = options.label || {}
this._elms = {};
@ -58,8 +58,8 @@ class CircleObject extends Base {
color: options.label.color || '#ffffff',
lineWidth: (options.label.lineWidth || options.label.lineWidth === 0) ? options.label.lineWidth : 4,
pixelOffset: (options.label.pixelOffset || options.label.pixelOffset === 0) ? options.label.pixelOffset : 20,
backgroundColor: options.label.backgroundColor || ['#42c6ef', '#42c6ef'],
lineColor: options.label.lineColor || '#fff000',
backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],
lineColor: options.label.lineColor || '#00ffff80',
scaleByDistance: options.label.scaleByDistance || false,
near: (options.label.near || options.label.near === 0) ? options.label.near : 2000,
far: (options.label.far || options.label.far === 0) ? options.label.far : 100000,
@ -216,31 +216,31 @@ class CircleObject extends Base {
return this.options.color
}
set color(v) {
this.options.color = v
this.options.color = v || 'rgba(255, 0, 0, 0.5)'
if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polygon) {
return
}
let material = Cesium.Color.fromCssColorString(v)
let material = Cesium.Color.fromCssColorString(this.options.color)
if (this.sdk.viewer.scene.mode === 2) {
material = new Cesium.CustomColorMaterialSource({
color: v
color: this.options.color
})
}
this.entity.polygon.material = material
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
defaultColor: v,
defaultColor: this.options.color,
disabled: false,//是否禁止打开颜色选择器
openPickerAni: 'opacity',//打开颜色选择器动画
sure: (c) => {
this.color = c
},//点击确认按钮事件回调
clear: () => {
this.color = 'rgba(255,255,255,1)'
this.color = 'rgba(255,0,0,0.5)'
},//点击清空按钮事件回调
})
this._elms.color[i] = colorPicker
@ -252,25 +252,25 @@ class CircleObject extends Base {
return this.options.line.color
}
set lineColor(v) {
this.options.line.color = v
this.options.line.color = v || 'rgba(255, 0, 0, 0.5)'
if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polyline) {
return
}
this.entity.polyline.material = Cesium.Color.fromCssColorString(v)
this.entity.polyline.material = Cesium.Color.fromCssColorString(this.options.line.color)
if (this._elms.lineColor) {
this._elms.lineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
defaultColor: v,
defaultColor: this.options.line.color,
disabled: false,//是否禁止打开颜色选择器
openPickerAni: 'opacity',//打开颜色选择器动画
sure: (c) => {
this.lineColor = c
},//点击确认按钮事件回调
clear: () => {
this.lineColor = 'rgba(255,255,255,1)'
this.lineColor = 'rgba(255,0,0,0.5)'
},//点击清空按钮事件回调
})
this._elms.lineColor[i] = lineColorPicker
@ -282,8 +282,8 @@ class CircleObject extends Base {
return this.options.line.width
}
set lineWidth(v) {
this.options.line.width = v
this.entity.polyline.width = v
this.options.line.width = ((v || v === 0) ? v : 3)
this.entity.polyline.width = this.options.line.width
this._elms.lineWidth && this._elms.lineWidth.forEach((item) => {
item.value = v
})
@ -367,7 +367,7 @@ class CircleObject extends Base {
this.label.color = v
if (this._elms.labelColor) {
this._elms.labelColor.forEach((item, i) => {
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -467,7 +467,7 @@ class CircleObject extends Base {
this.label.lineColor = v
if (this._elms.labelLineColor) {
this._elms.labelLineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -478,7 +478,7 @@ class CircleObject extends Base {
this.labelLineColor = color
},//点击确认按钮事件回调
clear: () => {
this.labelLineColor = 'rgba(255,255,255,1)'
this.labelLineColor = 'rgba(0,255,255,0.5)'
},//点击清空按钮事件回调
})
this._elms.labelLineColor[i] = lineColorPicker
@ -494,7 +494,7 @@ class CircleObject extends Base {
this.label.backgroundColor = [v, this.label.backgroundColor[1]]
if (this._elms.labelBackgroundColorStart) {
this._elms.labelBackgroundColorStart.forEach((item, i) => {
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -520,7 +520,7 @@ class CircleObject extends Base {
this.label.backgroundColor = [this.label.backgroundColor[0], v]
if (this._elms.labelBackgroundColorEnd) {
this._elms.labelBackgroundColorEnd.forEach((item, i) => {
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1151,7 +1151,7 @@ class CircleObject extends Base {
// 创建标签页
let tabsElm = new cy_tabs('circle-object-edit-tabs', undefined, this.sdk)
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1165,7 +1165,7 @@ class CircleObject extends Base {
this.color = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let linecolorPicker = new ewPlugins('colorpicker', {
let linecolorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("lineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1179,7 +1179,7 @@ class CircleObject extends Base {
this.lineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1193,7 +1193,7 @@ class CircleObject extends Base {
this.labelColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labellineColorPicker = new ewPlugins('colorpicker', {
let labellineColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelLineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1207,7 +1207,7 @@ class CircleObject extends Base {
this.labelLineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorStart")[0],
size: 'mini',
alpha: true,
@ -1221,7 +1221,7 @@ class CircleObject extends Base {
this.labelBackgroundColorStart = 'rgba(255,255,255,1)'
},
})
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorEnd")[0],
size: 'mini',
alpha: true,
@ -1878,7 +1878,7 @@ class CircleObject extends Base {
entity = null
}
endpoint = that.cartesian3Towgs84(cartesian, that.viewer)
let radius = that.computeDistance([that.options.center, endpoint])
let radius = that.computeDistance2([that.options.center, endpoint])
that.radius = radius
YJ.Measure.SetMeasureStatus(false)
@ -1904,7 +1904,7 @@ class CircleObject extends Base {
that.event.mouse_move((movement, cartesian) => {
entity && (entity.show = true)
endpoint = that.cartesian3Towgs84(cartesian, that.viewer)
moveRadius = that.computeDistance([that.options.center, endpoint])
moveRadius = that.computeDistance2([that.options.center, endpoint])
fromDegreesArray = that.createCircle(that.options.center, moveRadius)
that.tip.setPosition(
cartesian,

View File

@ -24,8 +24,8 @@ class CurvelineObject extends Base {
* @description 折线
* @param options {object} 线属性
* @param options.name{string} 名称
* @param options.width=5{number} 线宽
* @param options.color=#0df89e {string} 颜色
* @param options.width=3{number} 线宽
* @param options.color=#ff0000 {string} 颜色
* @param options.type=0 {number} 材质类型 0-实线 1-虚线 2-泛光
* @param options.heightMode{number} 高度模式0海拔高度1相对高度2依附模式
* @param options['nose-to-tail']=false {boolean} 首尾相连
@ -51,8 +51,8 @@ class CurvelineObject extends Base {
constructor(sdk, options = {}, _Dialog = {}) {
super(sdk, options)
this.options.name = options.name || '未命名对象'
this.options.width = options.width || 10
this.options.color = options.color || '#0df89e'
this.options.width = ((options.width || options.width === 0) ? options.width : 3)
this.options.color = options.color || '#ff0000'
this.options.type = options.type ? Number(options.type) : 0
this.options['nose-to-tail'] = options['nose-to-tail'] || false
this.options.extend = options.extend || false
@ -86,8 +86,8 @@ class CurvelineObject extends Base {
options.label.pixelOffset || options.label.pixelOffset === 0
? options.label.pixelOffset
: 20,
backgroundColor: options.label.backgroundColor || ['#42c6ef', '#42c6ef'],
lineColor: options.label.lineColor || '#fff000',
backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],
lineColor: options.label.lineColor || '#00ffff80',
scaleByDistance: options.label.scaleByDistance || false,
near:
options.label.near || options.label.near === 0
@ -143,22 +143,22 @@ class CurvelineObject extends Base {
return this.options.color
}
set color(v) {
this.options.color = v
this.options.color = v || '#ff0000'
this.entity.polyline.material = this.getMaterial(v, this.options.type)
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini', //颜色box类型
alpha: true, //是否开启透明度
defaultColor: v,
defaultColor: this.options.color,
disabled: false, //是否禁止打开颜色选择器
openPickerAni: 'opacity', //打开颜色选择器动画
sure: c => {
this.color = c
}, //点击确认按钮事件回调
clear: () => {
this.color = 'rgba(255,255,255,1)'
this.color = 'rgba(255,0,0,1)'
} //点击清空按钮事件回调
})
this._elms.color[i] = colorPicker
@ -243,10 +243,10 @@ class CurvelineObject extends Base {
}
set lineWidth(v) {
this.options.width = v
this.options.width = (v || v == 0) ? v : 3
this._elms.lineWidth &&
this._elms.lineWidth.forEach(item => {
item.value = v
item.value = this.options.width
})
this.entity &&
this.entity.polyline &&
@ -349,7 +349,7 @@ class CurvelineObject extends Base {
break
}
this.options.lengthByMeter = this.computeDistance(
this.options.lengthByMeter = this.computeDistance2(
this.smoothHandle(this.options.positions),
2,
ground
@ -438,7 +438,7 @@ class CurvelineObject extends Base {
this.options['extend-color'] = v
if (this._elms.extendColor) {
this._elms.extendColor.forEach((item, i) => {
let extendColorPicker = new ewPlugins('colorpicker', {
let extendColorPicker = new YJColorPicker({
el: item.el,
size: 'mini', //颜色box类型
alpha: true, //是否开启透明度
@ -508,7 +508,7 @@ class CurvelineObject extends Base {
this.label.color = v
if (this._elms.labelColor) {
this._elms.labelColor.forEach((item, i) => {
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: item.el,
size: 'mini', //颜色box类型
alpha: true, //是否开启透明度
@ -612,7 +612,7 @@ class CurvelineObject extends Base {
this.label.lineColor = v
if (this._elms.labelLineColor) {
this._elms.labelLineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini', //颜色box类型
alpha: true, //是否开启透明度
@ -623,7 +623,7 @@ class CurvelineObject extends Base {
this.labelLineColor = color
}, //点击确认按钮事件回调
clear: () => {
this.labelLineColor = 'rgba(255,255,255,1)'
this.labelLineColor = 'rgba(0,255,255,0.5)'
} //点击清空按钮事件回调
})
this._elms.labelLineColor[i] = lineColorPicker
@ -639,7 +639,7 @@ class CurvelineObject extends Base {
this.label.backgroundColor = [v, this.label.backgroundColor[1]]
if (this._elms.labelBackgroundColorStart) {
this._elms.labelBackgroundColorStart.forEach((item, i) => {
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: item.el,
size: 'mini', //颜色box类型
alpha: true, //是否开启透明度
@ -667,7 +667,7 @@ class CurvelineObject extends Base {
this.label.backgroundColor = [this.label.backgroundColor[0], v]
if (this._elms.labelBackgroundColorEnd) {
this._elms.labelBackgroundColorEnd.forEach((item, i) => {
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: item.el,
size: 'mini', //颜色box类型
alpha: true, //是否开启透明度
@ -1157,7 +1157,7 @@ class CurvelineObject extends Base {
CurvelineObject.createLabel(that)
// that.entity.polyline.positionsLngLat = positions
that.renewPolygon(fromDegreesArray)
that.options.lengthByMeter = that.computeDistance(that.smoothHandle(positions), 2, ground)
that.options.lengthByMeter = that.computeDistance2(that.smoothHandle(positions), 2, ground)
that.lengthUnit = that.options['length-unit']
syncData(that.sdk, that.options.id)
if (that.options.show) {
@ -1169,10 +1169,10 @@ class CurvelineObject extends Base {
// for (let i = 0; i < fromDegreesArray.length; i += 2) {
// array.push({ lng: fromDegreesArray[i], lat: fromDegreesArray[i + 1] })
// }
// this.options.fit_length = tool.computeDistance(array)
// this.options.fit_length = tool.computeDistance2(array)
// }
// else {
// this.options.fit_length = tool.computeDistance(positions)
// this.options.fit_length = tool.computeDistance2(positions)
// }
// if (this.options.fit_length_unit === 'km') {
// this.options.fit_length = this.options.fit_length / 1000
@ -1263,7 +1263,7 @@ class CurvelineObject extends Base {
this.sdk
)
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName('color')[0],
size: 'mini', //颜色box类型
alpha: true, //是否开启透明度
@ -1277,7 +1277,7 @@ class CurvelineObject extends Base {
this.color = 'rgba(255,255,255,1)'
} //点击清空按钮事件回调
})
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName('labelColor')[0],
size: 'mini', //颜色box类型
alpha: true, //是否开启透明度
@ -1291,7 +1291,7 @@ class CurvelineObject extends Base {
this.labelColor = 'rgba(255,255,255,1)'
} //点击清空按钮事件回调
})
let extendColorPicker = new ewPlugins('colorpicker', {
let extendColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName('extendColor')[0],
size: 'mini', //颜色box类型
alpha: true, //是否开启透明度
@ -1305,7 +1305,7 @@ class CurvelineObject extends Base {
this.extendColor = 'rgba(255,255,255,1)'
} //点击清空按钮事件回调
})
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName('labelLineColor')[0],
size: 'mini', //颜色box类型
alpha: true, //是否开启透明度
@ -1319,7 +1319,7 @@ class CurvelineObject extends Base {
this.labelLineColor = 'rgba(255,255,255,1)'
} //点击清空按钮事件回调
})
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: contentElm.getElementsByClassName('labelBackgroundColorStart')[0],
size: 'mini',
alpha: true,
@ -1333,7 +1333,7 @@ class CurvelineObject extends Base {
this.labelBackgroundColorStart = 'rgba(255,255,255,1)'
}
})
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: contentElm.getElementsByClassName('labelBackgroundColorEnd')[0],
size: 'mini',
alpha: true,
@ -1856,13 +1856,13 @@ class CurvelineObject extends Base {
alt: fromDegreesArray[i + 2]
})
}
this.options.fitLengthByMeter = this.computeDistance(
this.options.fitLengthByMeter = this.computeDistance2(
array,
2,
ground
)
this.fitLengthUnit = this.options['fit-length-unit']
this.options.lengthByMeter = this.computeDistance(this.smoothHandle(positions), 2, ground)
this.options.lengthByMeter = this.computeDistance2(this.smoothHandle(positions), 2, ground)
this.lengthUnit = this.options['length-unit']
return fromDegreesArray
}
@ -2234,7 +2234,7 @@ class CurvelineObject extends Base {
// )
// let fromDegreesArray = that.renewPositions(that.options.positions)
// that.renewPolygon(fromDegreesArray)
// that.options.lengthByMeter = that.computeDistance(
// that.options.lengthByMeter = that.computeDistance2(
// that.options.positions,
// 2,
// that.ground

View File

@ -1,5 +1,5 @@
/**
* 圆
*
*/
import Dialog from '../../Element/Dialog';
import cy_tabs from "../../Element/cy_html_tabs";
@ -24,7 +24,7 @@ class EllipseObject extends Base {
* @param options.name {string} 名称
* @param options.show=true {boolean} 显示/隐藏
* @param options.center {object} 位置
* @param options.color="#36c4ff" {string} 颜色
* @param options.color="#ff000080" {string} 颜色
* @param options.center.lng {object} 经度
* @param options.center.lat {object} 维度
* @param options.semiMinorAxis=10 {number} 短半轴长度
@ -32,22 +32,22 @@ class EllipseObject extends Base {
* @param options.bearing=0 {number} 旋转角度
* @param options.line {object} 边框
* @param options.line.width=2 {string} 边框宽
* @param options.line.color="rgba(155, 155, 124, 0.89)" {string} 边框颜色
* @param options.line.color="#ff000080" {string} 边框颜色
* @param options.label {object} 标注
* @param options.heightMode=2{number} 高度模式0海拔高度1相对地表2依附模式
*/
constructor(sdk, options = {}) {
super(sdk, options);
this.options.name = options.name || '未命名对象'
this.options.color = options.color || "#36c4ff"
this.options.color = options.color || "#ff000080"
this.options.heightMode = (options.heightMode || options.heightMode == 0) ? options.heightMode : 2
this.options.semiMinorAxis = (options.semiMinorAxis || options.semiMinorAxis === 0) ? options.semiMinorAxis : 10
this.options.semiMajorAxis = (options.semiMajorAxis || options.semiMajorAxis === 0) ? options.semiMajorAxis : 20
this.options.show = (options.show || options.show === false) ? options.show : true
this.options.center = options.center || {}
this.options.line = options.line || {}
this.options.line.width = this.options.line.width || 2
this.options.line.color = this.options.line.color || 'rgba(155, 155, 124, 0.89)'
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, 0.5)'
this.options['area-unit'] = options['area-unit'] || '平方米'
options.label = options.label || {}
this._elms = {};
@ -60,8 +60,8 @@ class EllipseObject extends Base {
color: options.label.color || '#ffffff',
lineWidth: (options.label.lineWidth || options.label.lineWidth === 0) ? options.label.lineWidth : 4,
pixelOffset: (options.label.pixelOffset || options.label.pixelOffset === 0) ? options.label.pixelOffset : 20,
backgroundColor: options.label.backgroundColor || ['#42c6ef', '#42c6ef'],
lineColor: options.label.lineColor || '#fff000',
backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],
lineColor: options.label.lineColor || '#00ffff80',
scaleByDistance: options.label.scaleByDistance || false,
near: (options.label.near || options.label.near === 0) ? options.label.near : 2000,
far: (options.label.far || options.label.far === 0) ? options.label.far : 100000,
@ -229,32 +229,32 @@ class EllipseObject extends Base {
return this.options.color
}
set color(v) {
this.options.color = v
this.options.color = v || 'rgba(255, 0, 0, 0.5)'
if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polygon) {
return
}
let material = Cesium.Color.fromCssColorString(v)
let material = Cesium.Color.fromCssColorString(this.options.color)
if (this.sdk.viewer.scene.mode === 2) {
material = new Cesium.CustomColorMaterialSource({
color: v
color: this.options.color
})
}
this.entity.polygon.material = material
this.entity.polyline.width = this.lineWidth
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
defaultColor: v,
defaultColor: this.options.color,
disabled: false,//是否禁止打开颜色选择器
openPickerAni: 'opacity',//打开颜色选择器动画
sure: (c) => {
this.color = c
},//点击确认按钮事件回调
clear: () => {
this.color = 'rgba(255,255,255,1)'
this.color = 'rgba(255,0,0,0.5)'
},//点击清空按钮事件回调
})
this._elms.color[i] = colorPicker
@ -266,25 +266,25 @@ class EllipseObject extends Base {
return this.options.line.color
}
set lineColor(v) {
this.options.line.color = v
this.options.line.color = v || 'rgba(255, 0, 0, 0.5)'
if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polyline) {
return
}
this.entity.polyline.material = Cesium.Color.fromCssColorString(v)
this.entity.polyline.material = Cesium.Color.fromCssColorString(this.options.line.color)
if (this._elms.lineColor) {
this._elms.lineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
defaultColor: v,
defaultColor: this.options.line.color,
disabled: false,//是否禁止打开颜色选择器
openPickerAni: 'opacity',//打开颜色选择器动画
sure: (c) => {
this.lineColor = c
},//点击确认按钮事件回调
clear: () => {
this.lineColor = 'rgba(255,255,255,1)'
this.lineColor = 'rgba(255,0,0,0.5)'
},//点击清空按钮事件回调
})
this._elms.lineColor[i] = lineColorPicker
@ -296,10 +296,10 @@ class EllipseObject extends Base {
return this.options.line.width
}
set lineWidth(v) {
this.options.line.width = v
this.entity.polyline.width = v
this.options.line.width = ((v || v === 0) ? v : 3)
this.entity.polyline.width = this.options.line.width
this._elms.lineWidth && this._elms.lineWidth.forEach((item) => {
item.value = v
item.value = this.options.line.width
})
}
@ -381,7 +381,7 @@ class EllipseObject extends Base {
this.label.color = v
if (this._elms.labelColor) {
this._elms.labelColor.forEach((item, i) => {
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -481,7 +481,7 @@ class EllipseObject extends Base {
this.label.lineColor = v
if (this._elms.labelLineColor) {
this._elms.labelLineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -492,7 +492,7 @@ class EllipseObject extends Base {
this.labelLineColor = color
},//点击确认按钮事件回调
clear: () => {
this.labelLineColor = 'rgba(255,255,255,1)'
this.labelLineColor = 'rgba(0,255,255,0.5)'
},//点击清空按钮事件回调
})
this._elms.labelLineColor[i] = lineColorPicker
@ -508,7 +508,7 @@ class EllipseObject extends Base {
this.label.backgroundColor = [v, this.label.backgroundColor[1]]
if (this._elms.labelBackgroundColorStart) {
this._elms.labelBackgroundColorStart.forEach((item, i) => {
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -534,7 +534,7 @@ class EllipseObject extends Base {
this.label.backgroundColor = [this.label.backgroundColor[0], v]
if (this._elms.labelBackgroundColorEnd) {
this._elms.labelBackgroundColorEnd.forEach((item, i) => {
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1161,7 +1161,7 @@ class EllipseObject extends Base {
// 创建标签页
let tabsElm = new cy_tabs('circle-object-edit-tabs', undefined, this.sdk)
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1175,7 +1175,7 @@ class EllipseObject extends Base {
this.color = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let linecolorPicker = new ewPlugins('colorpicker', {
let linecolorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("lineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1189,7 +1189,7 @@ class EllipseObject extends Base {
this.lineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1203,7 +1203,7 @@ class EllipseObject extends Base {
this.labelColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labellineColorPicker = new ewPlugins('colorpicker', {
let labellineColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelLineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1217,7 +1217,7 @@ class EllipseObject extends Base {
this.labelLineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorStart")[0],
size: 'mini',
alpha: true,
@ -1231,7 +1231,7 @@ class EllipseObject extends Base {
this.labelBackgroundColorStart = 'rgba(255,255,255,1)'
},
})
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorEnd")[0],
size: 'mini',
alpha: true,

View File

@ -0,0 +1,76 @@
function html() {
return `
<span class="custom-divider"></span>
<div class="div-item">
<div class="row">
<div class="col">
<span class="label">名称</span>
<input class="input" maxlength="40" type="text" @model="name">
</div>
<div class="col">
<span class="label">颜色</span>
<div class="flowLine-color"></div>
</div>
</div>
</div>
<span class="custom-divider"></span>
<div class="div-item">
<div class="row">
<div class="col">
<span class="label">飞线数量</span>
<div class="input-number input-number-unit-1">
<input class="input" type="number" title="" min="1" max="99999" @model="pointNumber">
<span class="arrow"></span>
</div>
</div>
<div class="col">
<span class="label">飞线宽度</span>
<div class="input-number input-number-unit-1">
<input class="input" type="number" title="" max="99999" min="1" step="1" @model="width">
<span class="arrow"></span>
</div>
</div>
</div>
</div>
<div class="div-item">
<div class="row">
<div class="col">
<span class="label">飞线高度</span>
<div class="input-number input-number-unit-1">
<input class="input" type="number" title="" min="0" max="999999" step="1" @model="height">
<span class="arrow"></span>
</div>
</div>
<div class="col">
<span class="label">飞线高度差</span>
<div class="input-number input-number-unit-1">
<input class="input" type="number" title="" max="99999" min="0" step="1" @model="heightDifference">
<span class="arrow"></span>
</div>
</div>
</div>
</div>
<div class="div-item">
<div class="row">
<div class="col">
<span class="label">单次运动时长s</span>
<div class="input-number input-number-unit-1">
<input class="input" type="number" title="" max="999999999" min="1" step="1" @model="duration">
<span class="arrow"></span>
</div>
</div>
<div class="col">
<span class="label">轨迹透明度</span>
<div class="input-number input-number-unit-1">
<input class="input" type="number" title="" max="1" min="0.01" step="0.01" @model="lineBackAlpha">
<span class="arrow"></span>
</div>
</div>
</div>
</div>
<span class="custom-divider"></span>
`
}
export { html }

View File

@ -0,0 +1,92 @@
class eventBinding {
constructor() {
this.element = {}
}
static event = {}
getEvent(name) {
return eventBinding.event[name]
}
getEventAll() {
return eventBinding.event
}
setEvent(name, event) {
eventBinding.event[name] = event
}
on(that, elements) {
for (let i = 0; i < elements.length; i++) {
let Event = []
let isEvent = false
let removeName = []
if (!elements[i] || !elements[i].attributes) {
continue;
}
for (let m of elements[i].attributes) {
switch (m.name) {
case '@model': {
isEvent = true
if (elements[i].type == 'checkbox') {
Event.push((e) => { that[m.value] = e.target.checked })
elements[i].checked = that[m.value]
}
else {
Event.push((e) => {
let value = e.target.value
if (e.target.type == 'number') {
value = Number(value)
}
that[m.value] = value
})
if (elements[i].nodeName == 'IMG') {
elements[i].src = that[m.value]
}
else {
elements[i].value = that[m.value]
}
}
if (this.element[m.value]) {
this.element[m.value].push(elements[i])
}
else {
this.element[m.value] = [elements[i]]
}
removeName.push(m.name)
break;
}
case '@click': {
elements[i].addEventListener('click', (e) => {
if (typeof (that.Dialog[m.value]) === 'function') {
that.Dialog[m.value](e)
}
});
removeName.push(m.name)
// elements[i].attributes.removeNamedItem(m.name)
break;
}
}
// elements[i].attributes[m] = undefined
}
for (let n = 0; n < removeName.length; n++) {
elements[i].attributes.removeNamedItem(removeName[n])
}
if (isEvent) {
let ventType = 'input'
if (elements[i].tagName != 'INPUT' || elements[i].type == 'checkbox') {
ventType = 'change'
}
elements[i].addEventListener(ventType, (e) => {
for (let t = 0; t < Event.length; t++) {
Event[t](e)
}
});
}
}
}
}
const EventBinding = new eventBinding();
export default EventBinding;

View File

@ -0,0 +1,485 @@
/**
* @description 水面
*/
import Dialog from '../../Element/Dialog';
import { html } from "./_element";
import EventBinding from '../../Element/Dialog/eventBinding';
import Base from "../index";
import { syncData } from '../../../Global/MultiViewportMode'
import DrawRect from '../../../Draw/drawRect'
import drawPolygon from '../../../Draw/drawPolygon'
import { setSplitDirection, syncSplitData, setActiveId } from '../../../Global/SplitScreen'
import { setActiveViewer, closeRotateAround, closeViewFollow } from '../../../Global/global'
import FlowLineMaterialProperty from "../../Materail/FlowLineMaterialProperty";
class FlowLine extends Base {
/**
* @constructor
* @param sdk
* @description 流光飞线
* @param options {object} 流光飞线属性
* @param options.name=未命名对象 {string} 名称
* @param options.pointNumber=300 {number} 线数量
* @param options.height=200 {number} 线高度
* @param options.heightDifference=3000 {number} 线高度差
* @param options.width=2 {number} 线宽
* @param options.duration=10.0 {number} 单次运动时间
* @param options.color=rgba(255,255,255,1) {string} 颜色
* @param options.lineBackAlpha=0.05 {number} 轨迹颜色不能为0
* @param Dialog {object} 弹框对象
* @param Dialog.confirmCallBack {function} 弹框确认时的回调
* */
constructor(sdk, options = {}, _Dialog = {}) {
super(sdk, options);
this.viewer = this.sdk.viewer
this.options.name = options.name || '飞线'
this.options.pointNumber = options.pointNumber || 200
this.options.height = options.height || 200
this.options.heightDifference = options.heightDifference || 3000
this.options.width = options.width || 2
this.options.duration = options.duration || 10.0
this.options.color = options.color || "rgba(255,255,255,1)"
this.options.lineBackAlpha = options.lineBackAlpha || 0.05
this.options.positions = options.positions || []
this.options.show = (options.show || options.show === false) ? options.show : true
this.Dialog = _Dialog
this._EventBinding = new EventBinding()
this._elms = {};
this.positionArea = []
this.positions = []
this.sdk.addIncetance(this.options.id, this)
// FlowLine.create(this)
FlowLine.drawLine(this)
}
// 创建水面
static create(that) {
// let Draw = new DrawRect(that.sdk)
// Draw.start((a, positions) => {
// that.positions = positions
// that.getLine(that, that.positions)
// that.edit(true)
// })
let Draw = new drawPolygon(that.sdk)
Draw.start((a, positions) => {
that.positionArea = positions
let posis = that.getRandomPointsInCesiumPolygon(positions, that.options.pointNumber)
that.positions = posis
that.getLine(that, posis)
that.edit(true)
})
}
static drawLine(that) {
that.positionArea = that.options.positions
let posis = that.getRandomPointsInCesiumPolygon(that.options.positions, that.options.pointNumber)
that.positions = posis
that.getLine(that, posis)
// that.edit(true)
}
getRandomPointsInCesiumPolygon(positions, count) {
let lons = [], lats = [], posi = []
positions.forEach(item => {
lons.push(item.lng)
lats.push(item.lat)
posi.push([item.lng, item.lat])
})
posi.push([posi[0][0], posi[0][1]])
const minLon = Math.min(...lons), maxLon = Math.max(...lons);
const minLat = Math.min(...lats), maxLat = Math.max(...lats);
const points = [];
while (points.length < count) {
const lon = minLon + Math.random() * (maxLon - minLon);
const lat = minLat + Math.random() * (maxLat - minLat);
// const cartesian = Cesium.Cartesian3.fromDegrees(lon, lat);
let point = turf.point([lon, lat]);
const polygon = turf.polygon([
posi
]);
const isInside = turf.booleanPointInPolygon(point, polygon);
if (isInside) {
points.push([
lon,
lat
]);
}
}
return points;
}
getLine(that, positions) {
let num = 0
let celiangEntity = null
if (that.viewer.entities.getById(that.options.id)) {
that.viewer.entities.getById(that.options.id)._children.forEach((item) => {
that.viewer.entities.remove(item);
});
that.viewer.entities.remove(that.viewer.entities.getById(that.options.id))
}
celiangEntity = that.viewer.entities.add(new Cesium.Entity({ id: that.options.id, show: that.options.show }))
positions.forEach((item, index) => {
let point = item
//根据点设置起始点位置
let start = Cesium.Cartesian3.fromDegrees(point[0], point[1], 0)
//根据点设置结束点位置
let end = Cesium.Cartesian3.fromDegrees(point[0], point[1], that.options.height + Math.random() * that.options.heightDifference)
//创建线
that.viewer.entities.add({
parent: celiangEntity,
polyline: {
positions: [start, end],
width: 2,
// material:Cesium.Color.RED
material: new Cesium.FlowLineMaterialProperty({
color: that.options.color,
duration: that.options.duration,
lineBackAlpha: that.options.lineBackAlpha,
num: num
})
}
})
});
}
get color() {
return this.options.color
}
set color(v) {
this.options.color = v
let entity = this.viewer.entities.getById(this.options.id)
if (entity) {
entity._children.forEach(item => {
item.polyline.material.color = Cesium.Color.fromCssColorString(v)
})
}
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let picker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
defaultColor: v,
disabled: false,//是否禁止打开颜色选择器
openPickerAni: 'opacity',//打开颜色选择器动画
sure: (c) => {
this.color = c
},//点击确认按钮事件回调
clear: () => {
this.color = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
this._elms.color[i] = picker
})
}
}
get pointNumber() {
return this.options.pointNumber
}
set pointNumber(v) {
this.options.pointNumber = v
let entity = this.viewer.entities.getById(this.options.id)
if (entity) {
let posis = this.getRandomPointsInCesiumPolygon(this.positionArea, this.options.pointNumber)
this.positions = posis
this.getLine(this, posis)
}
}
get height() {
return this.options.height
}
set height(v) {
this.options.height = v
let entity = this.viewer.entities.getById(this.options.id)
if (entity) {
this.getLine(this, this.positions)
}
}
get heightDifference() {
return this.options.heightDifference
}
set heightDifference(v) {
this.options.heightDifference = v
let entity = this.viewer.entities.getById(this.options.id)
if (entity) {
this.getLine(this, this.positions)
}
}
get width() {
return this.options.width
}
set width(v) {
this.options.width = v
let entity = this.viewer.entities.getById(this.options.id)
if (entity) {
entity._children.forEach(item => {
item.polyline.width = v
})
}
}
get duration() {
return this.options.duration
}
set duration(v) {
this.options.duration = v
let entity = this.viewer.entities.getById(this.options.id)
if (entity) {
entity._children.forEach(item => {
item.polyline.material.duration = v
})
}
}
get lineBackAlpha() {
return this.options.lineBackAlpha
}
set lineBackAlpha(v) {
this.options.lineBackAlpha = v
let entity = this.viewer.entities.getById(this.options.id)
if (entity) {
entity._children.forEach(item => {
item.polyline.material.lineBackAlpha = v
})
}
}
/**
* @description 编辑框
* @param state=false {boolean} 状态: true打开, false关闭
*/
async edit(state = false) {
let _this = this
this.originalOptions = this.deepCopyObj(this.options)
// let elms = this.sdk.viewer._container.getElementsByClassName('YJ-custom-base-dialog')
// for (let i = elms.length - 1; i >= 0; i--) {
// this.sdk.viewer._container.removeChild(elms[i])
// }
if (this._DialogObject && this._DialogObject.close) {
this._DialogObject.close()
this._DialogObject = null
}
if (state) {
this._DialogObject = await new Dialog(this.sdk, this.originalOptions, {
title: '飞线属性', left: '180px', top: '100px',
confirmCallBack: (options) => {
this.name = this.name.trim()
if (!this.name) {
// this.name = '未命名对象'
this.name = '飞线'
}
this.originalOptions = this.deepCopyObj(this.options)
this._DialogObject.close()
this.Dialog.confirmCallBack && this.Dialog.confirmCallBack(this.originalOptions)
syncData(this.sdk, this.options.id)
syncSplitData(this.sdk, this.options.id)
},
resetCallBack: () => {
this.reset()
this.Dialog.resetCallBack && this.Dialog.resetCallBack()
},
// removeCallBack: () => {
// this.Dialog.removeCallBack && this.Dialog.removeCallBack()
// },
closeCallBack: () => {
this.reset()
// this.entity.style = new Cesium.Cesium3DTileStyle({
// color: "color('rgba(255,255,255," + this.newData.transparency + ")')",
// show: true,
// });
this.Dialog.closeCallBack && this.Dialog.closeCallBack()
},
showCallBack: (show) => {
this.show = show
this.Dialog.showCallBack && this.Dialog.showCallBack()
}
}, true)
this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' flow-line-surface'
let contentElm = document.createElement('div');
contentElm.innerHTML = html()
this._DialogObject.contentAppChild(contentElm)
// 颜色组件
let waterColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("flowLine-color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
defaultColor: this.color,
disabled: false,//是否禁止打开颜色选择器
openPickerAni: 'opacity',//打开颜色选择器动画
sure: (color) => {
this.color = color
},//点击确认按钮事件回调
clear: () => {
this.color = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let all_elm = contentElm.getElementsByTagName("*")
this._EventBinding.on(this, all_elm)
this._elms = this._EventBinding.element
this._elms.color = [waterColorPicker]
} else {
// if (this._element_style) {
// document.getElementsByTagName('head')[0].removeChild(this._element_style)
// this._element_style = null
// }
// if (this._DialogObject && this._DialogObject.remove) {
// this._DialogObject.remove()
// this._DialogObject = null
// }
}
}
reset() {
if (!this.viewer.entities.getById(this.options.id)) {
return
}
this.name = this.originalOptions.name
this.pointNumber = this.originalOptions.pointNumber
this.height = this.originalOptions.height
this.heightDifference = this.originalOptions.heightDifference
this.width = this.originalOptions.width
this.duration = this.originalOptions.duration
this.color = this.originalOptions.color
this.lineBackAlpha = this.originalOptions.lineBackAlpha
}
/**
* 飞到对应实体
*/
async flyTo(options = {}) {
setActiveViewer(0)
closeRotateAround(this.sdk)
closeViewFollow(this.sdk)
if (this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation) {
let orientation = {
heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),
pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),
roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)
}
let lng = this.options.customView.relativePosition.lng
let lat = this.options.customView.relativePosition.lat
let alt = this.options.customView.relativePosition.alt
let destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt)
let position = { lng: 0, lat: 0 }
if (this.options.position) {
position = { ...this.options.position }
}
else if (this.options.positions) {
position = { ...this.options.positions[0] }
}
else if (this.options.center) {
position = { ...this.options.center }
}
else if (this.options.start) {
position = { ...this.options.start }
}
else {
if (this.options.hasOwnProperty('lng')) {
position.lng = this.options.lng
}
if (this.options.hasOwnProperty('lat')) {
position.lat = this.options.lat
}
if (this.options.hasOwnProperty('alt')) {
position.alt = this.options.alt
}
}
// 如果没有高度值,则获取紧贴高度计算
// if (!position.hasOwnProperty('alt')) {
// position.alt = await this.getClampToHeight(position)
// }
lng = this.options.customView.relativePosition.lng + position.lng
lat = this.options.customView.relativePosition.lat + position.lat
alt = this.options.customView.relativePosition.alt + position.alt
destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt)
this.sdk.viewer.camera.flyTo({
destination: destination,
orientation: orientation
})
}
else {
let positionArray = []
for (let i = 0; i < this.positions.length; i++) {
let a = Cesium.Cartesian3.fromDegrees(
this.positions[i][0],
this.positions[i][1],
this.options.height + this.options.heightDifference / 2
)
positionArray.push(a.x, a.y, a.z)
}
let BoundingSphere = Cesium.BoundingSphere.fromVertices(positionArray)
this.viewer.camera.flyToBoundingSphere(BoundingSphere, {
offset: {
heading: Cesium.Math.toRadians(0.0),
pitch: Cesium.Math.toRadians(-20.0),
roll: Cesium.Math.toRadians(0.0)
}
})
}
}
getSphere() {
return new Promise((resolve) => {
// entity没有加载完成时 state 不会等于0 所以设置定时器直到获取到为止
const interval = setInterval(() => {
const sphere = new Cesium.BoundingSphere()
const state = this.sdk.viewer._dataSourceDisplay.getBoundingSphere(
this.viewer.entities.getById(this.options.id),
false,
sphere
)
if (state === Cesium.BoundingSphereState.DONE) {
clearInterval(interval)
}
}, 1000)
})
}
/**
* 删除
*/
async remove() {
if (this.viewer.entities.getById(this.options.id)) {
this.viewer.entities.getById(this.options.id)._children.forEach((item) => {
this.viewer.entities.remove(item);
});
this.viewer.entities.remove(this.viewer.entities.getById(this.options.id))
}
this.positions = []
this.entity = null
if (this._DialogObject && !this._DialogObject.isDestroy) {
this._DialogObject.close()
this._DialogObject = null
}
await this.sdk.removeIncetance(this.options.id)
await syncData(this.sdk, this.options.id)
}
flicker() { }
}
export default FlowLine

View File

@ -37,7 +37,7 @@ class Graffiti extends Draw {
this.options.color = v
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -77,7 +77,7 @@ class Graffiti extends Draw {
contentElm.innerHTML = html()
that._DialogObject.contentAppChild(contentElm)
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度

View File

@ -123,7 +123,7 @@ class GroundSvg extends Base {
}
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -796,7 +796,7 @@ class GroundSvg extends Base {
await this._DialogObject.contentAppChild(contentElm)
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度

View File

@ -206,7 +206,7 @@ class GroundSvg extends Base {
}
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -334,7 +334,7 @@ class GroundSvg extends Base {
this.text && (this.text.color = v)
if (this._elms.textColor) {
this._elms.textColor.forEach((item, i) => {
let textColorPicker = new ewPlugins('colorpicker', {
let textColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -594,12 +594,13 @@ class GroundSvg extends Base {
}
init() {
let url = this.replaceHost(this.options.url, this.options.host)
syncData(this.sdk, this.options.id)
this.hierarchys = []
this.originalOptions = this.deepCopyObj(this.options)
let geometryArray = []
const loader = new SVGLoader();
loader.load(this.options.url, (data) => {
loader.load(url, (data) => {
if (!this.sdk || !this.sdk.viewer || !this.sdk.viewer.entities) {
return
}
@ -923,7 +924,9 @@ class GroundSvg extends Base {
this.text && (this.options.text.position = { lng: this.text.position[0], lat: this.text.position[1], alt: this.text.position[2] })
this.originalOptions = this.deepCopyObj(this.options)
this._DialogObject.close()
this.Dialog.confirmCallBack && this.Dialog.confirmCallBack(this.originalOptions)
let cdoptions = this.deepCopyObj(this.options)
cdoptions.host = ''
this.Dialog.confirmCallBack && this.Dialog.confirmCallBack(cdoptions)
syncData(this.sdk, this.options.id)
syncSplitData(this.sdk, this.options.id)
},
@ -991,7 +994,7 @@ class GroundSvg extends Base {
this.attributeType = this.options.attributeType
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1006,7 +1009,7 @@ class GroundSvg extends Base {
},//点击清空按钮事件回调
})
let textColorPicker = new ewPlugins('colorpicker', {
let textColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("textColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度

View File

@ -34,10 +34,10 @@ class LabelObject extends Base {
}
this.options.text = textArray.join('\n')
this.options.fontFamily = options.fontFamily || 0
this.font = getFontFamily(this.options.fontFamily) || 'Helvetica'
this.font = getFontFamily(this.options.fontFamily) || 'SimHei'
this.options.fontSize = options.fontSize || 20
this.options.lineWidth = options.lineWidth || 4
this.options.lineColor = options.lineColor || '#fff000'
this.options.lineColor = options.lineColor || '#00ffff80'
this.options.color = options.color || '#ffffff'
this.options.ground =
options.ground || options.ground === false ? options.ground : true
@ -46,8 +46,8 @@ class LabelObject extends Base {
? options.pixelOffset
: 20
this.options.backgroundColor = options.backgroundColor || [
'#42c6ef',
'#42c6ef'
'#00ffff80',
'#00ffff80'
]
this.event = new MouseEvent(this.sdk)
this.entity
@ -407,7 +407,7 @@ class LabelObject extends Base {
set fontFamily(v) {
this.options.fontFamily = v || 0
this.font = getFontFamily(this.options.fontFamily) || 'Helvetica'
this.font = getFontFamily(this.options.fontFamily) || 'SimHei'
this.updateBillboardImage()
}
@ -415,7 +415,7 @@ class LabelObject extends Base {
return this.options.lineWidth
}
set lineWidth(v) {
this.options.lineWidth = Number(v)
this.options.lineWidth = ((Number(v) || Number(v) === 0) ? Number(v) : 4)
if (!this.entity) {
return
}
@ -443,7 +443,7 @@ class LabelObject extends Base {
return this.options.pixelOffset
}
set lineColor(v) {
this.options.lineColor = v
this.options.lineColor = v || '#00ffff80'
if (!this.entity) {
return
}

View File

@ -245,7 +245,7 @@ class Flame extends Base {
this.particleSystem.startColor = Cesium.Color.fromCssColorString(v)
if (this._elms.startColor) {
this._elms.startColor.forEach((item, i) => {
let picker = new ewPlugins('colorpicker', {
let picker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -273,7 +273,7 @@ class Flame extends Base {
this.particleSystem.endColor = Cesium.Color.fromCssColorString(v)
if (this._elms.endColor) {
this._elms.endColor.forEach((item, i) => {
let picker = new ewPlugins('colorpicker', {
let picker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -496,7 +496,7 @@ class Flame extends Base {
contentElm.innerHTML = html()
this._DialogObject.contentAppChild(contentElm)
// 颜色组件
let startColorPicker = new ewPlugins('colorpicker', {
let startColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("start_color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -510,7 +510,7 @@ class Flame extends Base {
this.startColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let endColorPicker = new ewPlugins('colorpicker', {
let endColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("end_color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度

View File

@ -269,7 +269,7 @@ class Fountain extends Base {
this.particleSystem.startColor = Cesium.Color.fromCssColorString(v)
if (this._elms.startColor) {
this._elms.startColor.forEach((item, i) => {
let picker = new ewPlugins('colorpicker', {
let picker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -297,7 +297,7 @@ class Fountain extends Base {
this.particleSystem.endColor = Cesium.Color.fromCssColorString(v)
if (this._elms.endColor) {
this._elms.endColor.forEach((item, i) => {
let picker = new ewPlugins('colorpicker', {
let picker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -520,7 +520,7 @@ class Fountain extends Base {
contentElm.innerHTML = html()
this._DialogObject.contentAppChild(contentElm)
// 颜色组件
let startColorPicker = new ewPlugins('colorpicker', {
let startColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("start_color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -534,7 +534,7 @@ class Fountain extends Base {
this.startColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let endColorPicker = new ewPlugins('colorpicker', {
let endColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("end_color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度

View File

@ -243,7 +243,7 @@ class Smoke extends Base {
this.particleSystem.startColor = Cesium.Color.fromCssColorString(v)
if (this._elms.startColor) {
this._elms.startColor.forEach((item, i) => {
let picker = new ewPlugins('colorpicker', {
let picker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -271,7 +271,7 @@ class Smoke extends Base {
this.particleSystem.endColor = Cesium.Color.fromCssColorString(v)
if (this._elms.endColor) {
this._elms.endColor.forEach((item, i) => {
let picker = new ewPlugins('colorpicker', {
let picker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -494,7 +494,7 @@ class Smoke extends Base {
contentElm.innerHTML = html()
this._DialogObject.contentAppChild(contentElm)
// 颜色组件
let startColorPicker = new ewPlugins('colorpicker', {
let startColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("start_color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -508,7 +508,7 @@ class Smoke extends Base {
this.startColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let endColorPicker = new ewPlugins('colorpicker', {
let endColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("end_color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度

View File

@ -360,7 +360,7 @@ class Spout extends Base {
this.particleSystem.startColor = Cesium.Color.fromCssColorString(v)
if (this._elms.startColor) {
this._elms.startColor.forEach((item, i) => {
let picker = new ewPlugins('colorpicker', {
let picker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -388,7 +388,7 @@ class Spout extends Base {
this.particleSystem.endColor = Cesium.Color.fromCssColorString(v)
if (this._elms.endColor) {
this._elms.endColor.forEach((item, i) => {
let picker = new ewPlugins('colorpicker', {
let picker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -634,7 +634,7 @@ class Spout extends Base {
contentElm.innerHTML = html()
this._DialogObject.contentAppChild(contentElm)
// 颜色组件
let startColorPicker = new ewPlugins('colorpicker', {
let startColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("start_color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -648,7 +648,7 @@ class Spout extends Base {
this.startColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let endColorPicker = new ewPlugins('colorpicker', {
let endColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("end_color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度

View File

@ -24,7 +24,7 @@ class PincerArrowObject extends Base {
* @param options {object} 属性
* @param options.show=true {boolean} 显示/隐藏
* @param options.name {string} 名称
* @param options.color="#36c4ff" {string} 颜色
* @param options.color="#ff000080" {string} 颜色
* @param options.height {number} 高度
* @param options.heightMode=2{number} 高度模式0海拔高度1相对地表2依附模式
* @param {Array.<object>} options.positions 坐标数组 [{lon,lat,alt},...]
@ -34,13 +34,13 @@ class PincerArrowObject extends Base {
constructor(sdk, options = {}, _Dialog = {}) {
super(sdk, options);
this.options.name = options.name || '未命名对象'
this.options.color = options.color || "#36c4ff"
this.options.color = options.color || "#ff000080"
this.options.show = (options.show || options.show === false) ? options.show : true
this.options.positions = options.positions || []
this.options.heightMode = (options.heightMode || options.heightMode == 0) ? options.heightMode : 2
this.options.line = options.line || {}
this.options.line.width = this.options.line.width || 2
this.options.line.color = this.options.line.color || 'rgba(155, 155, 124, 0.89)'
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, 0.5)'
this.options['area-unit'] = options['area-unit'] || '平方米'
this.options.height = options.height
this.options.loop = options.loop || false
@ -62,8 +62,8 @@ class PincerArrowObject extends Base {
color: options.label.color || '#ffffff',
lineWidth: (options.label.lineWidth || options.label.lineWidth === 0) ? options.label.lineWidth : 4,
pixelOffset: (options.label.pixelOffset || options.label.pixelOffset === 0) ? options.label.pixelOffset : 20,
backgroundColor: options.label.backgroundColor || ['#42c6ef', '#42c6ef'],
lineColor: options.label.lineColor || '#fff000',
backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],
lineColor: options.label.lineColor || '#00ffff80',
scaleByDistance: options.label.scaleByDistance || false,
near: (options.label.near || options.label.near === 0) ? options.label.near : 2000,
far: (options.label.far || options.label.far === 0) ? options.label.far : 100000,
@ -122,31 +122,31 @@ class PincerArrowObject extends Base {
return this.options.color
}
set color(v) {
this.options.color = v
this.options.color = v || 'rgba(255, 0, 0, 0.5)'
if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polygon) {
return
}
let material = Cesium.Color.fromCssColorString(v)
let material = Cesium.Color.fromCssColorString(this.options.color)
if (this.sdk.viewer.scene.mode === 2) {
material = new Cesium.CustomColorMaterialSource({
color: v
color: this.options.color
})
}
this.entity.polygon.material = material
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
defaultColor: v,
defaultColor: this.options.color,
disabled: false,//是否禁止打开颜色选择器
openPickerAni: 'opacity',//打开颜色选择器动画
sure: (c) => {
this.color = c
},//点击确认按钮事件回调
clear: () => {
this.color = 'rgba(255,255,255,1)'
this.color = 'rgba(255,0,0,0.5)'
},//点击清空按钮事件回调
})
this._elms.color[i] = colorPicker
@ -253,25 +253,25 @@ class PincerArrowObject extends Base {
return this.options.line.color
}
set lineColor(v) {
this.options.line.color = v
this.options.line.color = v || 'rgba(255, 0, 0, 0.5)'
if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polyline) {
return
}
this.entity.polyline.material = Cesium.Color.fromCssColorString(v)
this.entity.polyline.material = Cesium.Color.fromCssColorString(this.options.line.color)
if (this._elms.lineColor) {
this._elms.lineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
defaultColor: v,
defaultColor: this.options.line.color,
disabled: false,//是否禁止打开颜色选择器
openPickerAni: 'opacity',//打开颜色选择器动画
sure: (c) => {
this.lineColor = c
},//点击确认按钮事件回调
clear: () => {
this.lineColor = 'rgba(255,255,255,1)'
this.lineColor = 'rgba(255,0,0,0.5)'
},//点击清空按钮事件回调
})
this._elms.lineColor[i] = lineColorPicker
@ -283,10 +283,10 @@ class PincerArrowObject extends Base {
return this.options.line.width
}
set lineWidth(v) {
this.options.line.width = v
this.entity.polyline.width = v
this.options.line.width = ((v || v === 0) ? v : 3)
this.entity.polyline.width = this.options.line.width
this._elms.lineWidth && this._elms.lineWidth.forEach((item) => {
item.value = v
item.value = this.options.line.width
})
}
@ -368,7 +368,7 @@ class PincerArrowObject extends Base {
this.label.color = v
if (this._elms.labelColor) {
this._elms.labelColor.forEach((item, i) => {
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -468,7 +468,7 @@ class PincerArrowObject extends Base {
this.label.lineColor = v
if (this._elms.labelLineColor) {
this._elms.labelLineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -479,7 +479,7 @@ class PincerArrowObject extends Base {
this.labelLineColor = color
},//点击确认按钮事件回调
clear: () => {
this.labelLineColor = 'rgba(255,255,255,1)'
this.labelLineColor = 'rgba(0,255,255,0.5)'
},//点击清空按钮事件回调
})
this._elms.labelLineColor[i] = lineColorPicker
@ -495,7 +495,7 @@ class PincerArrowObject extends Base {
this.label.backgroundColor = [v, this.label.backgroundColor[1]]
if (this._elms.labelBackgroundColorStart) {
this._elms.labelBackgroundColorStart.forEach((item, i) => {
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -521,7 +521,7 @@ class PincerArrowObject extends Base {
this.label.backgroundColor = [this.label.backgroundColor[0], v]
if (this._elms.labelBackgroundColorEnd) {
this._elms.labelBackgroundColorEnd.forEach((item, i) => {
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1192,7 +1192,7 @@ class PincerArrowObject extends Base {
// 创建标签页
let tabsElm = new cy_tabs('pincer-arrow-object-edit-tabs', undefined, this.sdk)
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1206,7 +1206,7 @@ class PincerArrowObject extends Base {
this.color = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let linecolorPicker = new ewPlugins('colorpicker', {
let linecolorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("lineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1220,7 +1220,7 @@ class PincerArrowObject extends Base {
this.lineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1234,7 +1234,7 @@ class PincerArrowObject extends Base {
this.labelColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelLineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1248,7 +1248,7 @@ class PincerArrowObject extends Base {
this.labelLineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorStart")[0],
size: 'mini',
alpha: true,
@ -1262,7 +1262,7 @@ class PincerArrowObject extends Base {
this.labelBackgroundColorStart = 'rgba(255,255,255,1)'
},
})
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorEnd")[0],
size: 'mini',
alpha: true,

View File

@ -25,7 +25,7 @@ class PolygonObject extends Base {
* @param options.id {string} 唯一标识
* @param options.show=true {boolean} 显示/隐藏
* @param options.name {string} 名称
* @param options.color="#36c4ff" {string} 颜色
* @param options.color='rgba(255, 0, 0, 0.5)' {string} 颜色
* @param options.height {number} 高度
* @param options.heightMode=2{number} 高度模式0海拔高度1相对地表2依附模式
* @param options.line {object} 边框
@ -39,15 +39,15 @@ class PolygonObject extends Base {
constructor(sdk, options = {}, _Dialog = {}) {
super(sdk, options)
this.options.name = options.name || '未命名对象'
this.options.color = options.color || '#36c4ff'
this.options.color = options.color || 'rgba(255, 0, 0, 0.5)'
this.options.show =
options.show || options.show === false ? options.show : true
this.options.heightMode = (options.heightMode || options.heightMode == 0) ? options.heightMode : 2
this.options.positions = options.positions || []
this.options.line = options.line || {}
this.options.line.width = this.options.line.width || 2
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(155, 155, 124, 0.89)'
this.options.line.color || 'rgba(255, 0, 0, 0.5)'
this.options['area-unit'] = options['area-unit'] || '平方米'
this.entity
this.event = new MouseEvent(this.sdk)
@ -74,8 +74,8 @@ class PolygonObject extends Base {
options.label.pixelOffset || options.label.pixelOffset === 0
? options.label.pixelOffset
: 20,
backgroundColor: options.label.backgroundColor || ['#42c6ef', '#42c6ef'],
lineColor: options.label.lineColor || '#fff000',
backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],
lineColor: options.label.lineColor || '#00ffff80',
scaleByDistance: options.label.scaleByDistance || false,
near:
options.label.near || options.label.near === 0
@ -133,35 +133,35 @@ class PolygonObject extends Base {
return this.options.color
}
set color(v) {
this.options.color = v
this.options.color = v || 'rgba(255, 0, 0, 0.5)'
if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polygon) {
return
}
if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polygon) {
return
}
let material = Cesium.Color.fromCssColorString(v)
let material = Cesium.Color.fromCssColorString(this.options.color)
if (this.sdk.viewer.scene.mode === 2) {
this.heightMode = 0
material = new Cesium.CustomColorMaterialSource({
color: v
color: this.options.color
})
}
this.entity.polygon.material = material
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini', //颜色box类型
alpha: true, //是否开启透明度
defaultColor: v,
defaultColor: this.options.color,
disabled: false, //是否禁止打开颜色选择器
openPickerAni: 'opacity', //打开颜色选择器动画
sure: c => {
this.color = c
}, //点击确认按钮事件回调
clear: () => {
this.color = 'rgba(255,255,255,1)'
this.color = 'rgba(255,0,0,0.5)'
} //点击清空按钮事件回调
})
this._elms.color[i] = colorPicker
@ -269,25 +269,25 @@ class PolygonObject extends Base {
return this.options.line.color
}
set lineColor(v) {
this.options.line.color = v
this.options.line.color = v || 'rgba(255, 0, 0, 0.5)'
if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polyline) {
return
}
this.entity.polyline.material = Cesium.Color.fromCssColorString(v)
this.entity.polyline.material = Cesium.Color.fromCssColorString(this.options.line.color)
if (this._elms.lineColor) {
this._elms.lineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini', //颜色box类型
alpha: true, //是否开启透明度
defaultColor: v,
defaultColor: this.options.line.color,
disabled: false, //是否禁止打开颜色选择器
openPickerAni: 'opacity', //打开颜色选择器动画
sure: c => {
this.lineColor = c
}, //点击确认按钮事件回调
clear: () => {
this.lineColor = 'rgba(255,255,255,1)'
this.lineColor = 'rgba(255,0,0,0.5)'
} //点击清空按钮事件回调
})
this._elms.lineColor[i] = lineColorPicker
@ -299,8 +299,8 @@ class PolygonObject extends Base {
return this.options.line.width
}
set lineWidth(v) {
this.options.line.width = v
this.entity.polyline.width = v
this.options.line.width = ((v || v === 0) ? v : 3)
this.entity.polyline.width = this.options.line.width
this._elms.lineWidth &&
this._elms.lineWidth.forEach(item => {
item.value = v
@ -389,7 +389,7 @@ class PolygonObject extends Base {
this.label.color = v
if (this._elms.labelColor) {
this._elms.labelColor.forEach((item, i) => {
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: item.el,
size: 'mini', //颜色box类型
alpha: true, //是否开启透明度
@ -493,7 +493,7 @@ class PolygonObject extends Base {
this.label.lineColor = v
if (this._elms.labelLineColor) {
this._elms.labelLineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini', //颜色box类型
alpha: true, //是否开启透明度
@ -504,7 +504,7 @@ class PolygonObject extends Base {
this.labelLineColor = color
}, //点击确认按钮事件回调
clear: () => {
this.labelLineColor = 'rgba(255,255,255,1)'
this.labelLineColor = 'rgba(0,255,255,0.5)'
} //点击清空按钮事件回调
})
this._elms.labelLineColor[i] = lineColorPicker
@ -520,7 +520,7 @@ class PolygonObject extends Base {
this.label.backgroundColor = [v, this.label.backgroundColor[1]]
if (this._elms.labelBackgroundColorStart) {
this._elms.labelBackgroundColorStart.forEach((item, i) => {
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: item.el,
size: 'mini', //颜色box类型
alpha: true, //是否开启透明度
@ -548,7 +548,7 @@ class PolygonObject extends Base {
this.label.backgroundColor = [this.label.backgroundColor[0], v]
if (this._elms.labelBackgroundColorEnd) {
this._elms.labelBackgroundColorEnd.forEach((item, i) => {
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: item.el,
size: 'mini', //颜色box类型
alpha: true, //是否开启透明度
@ -1270,7 +1270,7 @@ class PolygonObject extends Base {
// 创建标签页
let tabsElm = new cy_tabs('polygon-object-edit-tabs', undefined, this.sdk)
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName('color')[0],
size: 'mini', //颜色box类型
alpha: true, //是否开启透明度
@ -1284,7 +1284,7 @@ class PolygonObject extends Base {
this.color = 'rgba(255,255,255,1)'
} //点击清空按钮事件回调
})
let linecolorPicker = new ewPlugins('colorpicker', {
let linecolorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName('lineColor')[0],
size: 'mini', //颜色box类型
alpha: true, //是否开启透明度
@ -1298,7 +1298,7 @@ class PolygonObject extends Base {
this.lineColor = 'rgba(255,255,255,1)'
} //点击清空按钮事件回调
})
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName('labelColor')[0],
size: 'mini', //颜色box类型
alpha: true, //是否开启透明度
@ -1312,7 +1312,7 @@ class PolygonObject extends Base {
this.labelColor = 'rgba(255,255,255,1)'
} //点击清空按钮事件回调
})
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName('labelLineColor')[0],
size: 'mini', //颜色box类型
alpha: true, //是否开启透明度
@ -1326,7 +1326,7 @@ class PolygonObject extends Base {
this.labelLineColor = 'rgba(255,255,255,1)'
} //点击清空按钮事件回调
})
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: contentElm.getElementsByClassName('labelBackgroundColorStart')[0],
size: 'mini',
alpha: true,
@ -1340,7 +1340,7 @@ class PolygonObject extends Base {
this.labelBackgroundColorStart = 'rgba(255,255,255,1)'
}
})
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: contentElm.getElementsByClassName('labelBackgroundColorEnd')[0],
size: 'mini',
alpha: true,

View File

@ -24,7 +24,7 @@ class PolyhedronObject extends Base {
* @param options.id {string} 唯一标识
* @param options.show=true {boolean} 显示/隐藏
* @param options.name {string} 名称
* @param options.color="#0df7f8" {string} 颜色
* @param options.color="#ff0000" {string} 颜色
* @param options.height=10 {number} 高
* @param {Array.<object>} options.positions 经纬度和高度的列表,值交替 [{lon,lat,alt},...]
* @param _Dialog {object} 弹框事件
@ -32,7 +32,7 @@ class PolyhedronObject extends Base {
* */
constructor(sdk, options = {}, _Dialog = {}) {
super(sdk, options);
this.options.color = options.color || "#0df7f8"
this.options.color = options.color || "#ff0000"
this.options.show = (options.show || options.show === false) ? options.show : true
this.options.height = (options.height || options.height === 0) ? options.height : 10
if (this.options.height <= 0.01) {
@ -54,8 +54,8 @@ class PolyhedronObject extends Base {
color: options.label.color || '#ffffff',
lineWidth: (options.label.lineWidth || options.label.lineWidth === 0) ? options.label.lineWidth : 4,
pixelOffset: (options.label.pixelOffset || options.label.pixelOffset === 0) ? options.label.pixelOffset : 20,
backgroundColor: options.label.backgroundColor || ['#42c6ef', '#42c6ef'],
lineColor: options.label.lineColor || '#fff000',
backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],
lineColor: options.label.lineColor || '#00ffff80',
scaleByDistance: options.label.scaleByDistance || false,
near: (options.label.near || options.label.near === 0) ? options.label.near : 2000,
far: (options.label.far || options.label.far === 0) ? options.label.far : 100000,
@ -381,7 +381,7 @@ class PolyhedronObject extends Base {
return this.options.color
}
set color(v) {
this.options.color = v
this.options.color = v || '#ff0000'
if(!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polygon) {
return
}
@ -394,11 +394,11 @@ class PolyhedronObject extends Base {
this.entity.polygon.material = material
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
defaultColor: v,
defaultColor: this.options.color,
disabled: false,//是否禁止打开颜色选择器
openPickerAni: 'opacity',//打开颜色选择器动画
sure: (c) => {
@ -551,7 +551,7 @@ class PolyhedronObject extends Base {
this.label.color = v
if (this._elms.labelColor) {
this._elms.labelColor.forEach((item, i) => {
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -651,7 +651,7 @@ class PolyhedronObject extends Base {
this.label.lineColor = v
if (this._elms.labelLineColor) {
this._elms.labelLineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -662,7 +662,7 @@ class PolyhedronObject extends Base {
this.labelLineColor = color
},//点击确认按钮事件回调
clear: () => {
this.labelLineColor = 'rgba(255,255,255,1)'
this.labelLineColor = 'rgba(0,255,255,0.5)'
},//点击清空按钮事件回调
})
this._elms.labelLineColor[i] = lineColorPicker
@ -678,7 +678,7 @@ class PolyhedronObject extends Base {
this.label.backgroundColor = [v, this.label.backgroundColor[1]]
if (this._elms.labelBackgroundColorStart) {
this._elms.labelBackgroundColorStart.forEach((item, i) => {
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -704,7 +704,7 @@ class PolyhedronObject extends Base {
this.label.backgroundColor = [this.label.backgroundColor[0], v]
if (this._elms.labelBackgroundColorEnd) {
this._elms.labelBackgroundColorEnd.forEach((item, i) => {
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1105,7 +1105,7 @@ class PolyhedronObject extends Base {
// 创建标签页
let tabsElm = new cy_tabs('polygon-object-edit-tabs', undefined, this.sdk)
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1119,7 +1119,7 @@ class PolyhedronObject extends Base {
this.color = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1133,7 +1133,7 @@ class PolyhedronObject extends Base {
this.labelColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelLineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1147,7 +1147,7 @@ class PolyhedronObject extends Base {
this.labelLineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorStart")[0],
size: 'mini',
alpha: true,
@ -1161,7 +1161,7 @@ class PolyhedronObject extends Base {
this.labelBackgroundColorStart = 'rgba(255,255,255,1)'
},
})
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorEnd")[0],
size: 'mini',
alpha: true,

View File

@ -53,8 +53,8 @@ class PolyhedronObject extends Base {
color: options.label.color || '#ffffff',
lineWidth: (options.label.lineWidth || options.label.lineWidth === 0) ? options.label.lineWidth : 4,
pixelOffset: (options.label.pixelOffset || options.label.pixelOffset === 0) ? options.label.pixelOffset : 20,
backgroundColor: options.label.backgroundColor || ['#42c6ef', '#42c6ef'],
lineColor: options.label.lineColor || '#fff000',
backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],
lineColor: options.label.lineColor || '#00ffff80',
scaleByDistance: options.label.scaleByDistance || false,
near: (options.label.near || options.label.near === 0) ? options.label.near : 2000,
far: (options.label.far || options.label.far === 0) ? options.label.far : 100000,
@ -347,7 +347,7 @@ class PolyhedronObject extends Base {
this.entity.polygon.material = Cesium.Color.fromCssColorString(v)
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -488,7 +488,7 @@ class PolyhedronObject extends Base {
this.label.color = v
if (this._elms.labelColor) {
this._elms.labelColor.forEach((item, i) => {
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -588,7 +588,7 @@ class PolyhedronObject extends Base {
this.label.lineColor = v
if (this._elms.labelLineColor) {
this._elms.labelLineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -599,7 +599,7 @@ class PolyhedronObject extends Base {
this.labelLineColor = color
},//点击确认按钮事件回调
clear: () => {
this.labelLineColor = 'rgba(255,255,255,1)'
this.labelLineColor = 'rgba(0,255,255,0.5)'
},//点击清空按钮事件回调
})
this._elms.labelLineColor[i] = lineColorPicker
@ -615,7 +615,7 @@ class PolyhedronObject extends Base {
this.label.backgroundColor = [v, this.label.backgroundColor[1]]
if (this._elms.labelBackgroundColorStart) {
this._elms.labelBackgroundColorStart.forEach((item, i) => {
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -641,7 +641,7 @@ class PolyhedronObject extends Base {
this.label.backgroundColor = [this.label.backgroundColor[0], v]
if (this._elms.labelBackgroundColorEnd) {
this._elms.labelBackgroundColorEnd.forEach((item, i) => {
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -890,7 +890,7 @@ class PolyhedronObject extends Base {
// 创建标签页
let tabsElm = new cy_tabs('polygon-object-edit-tabs', undefined, this.sdk)
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -904,7 +904,7 @@ class PolyhedronObject extends Base {
this.color = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -918,7 +918,7 @@ class PolyhedronObject extends Base {
this.labelColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelLineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -932,7 +932,7 @@ class PolyhedronObject extends Base {
this.labelLineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorStart")[0],
size: 'mini',
alpha: true,
@ -946,7 +946,7 @@ class PolyhedronObject extends Base {
this.labelBackgroundColorStart = 'rgba(255,255,255,1)'
},
})
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorEnd")[0],
size: 'mini',
alpha: true,

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;">
@ -9,22 +9,15 @@ function html(that) {
<span class="label">名称</span>
<input class="input" maxlength="40" type="text" @model="name">
</div>
<div class="col" style="flex: 0 0 54%;">
<div class="col" style="flex: 0 0 56%;">
<div>
<div class="row">
<div class="col input-select-unit-box">
<span class="label">原始长度:</span>
<div class="input-select-unit"></div>
<input class="input input-text" readonly="readonly" type="text" style="flex: 0 0 130px;" @model="length">
<div class="input-select-unit"></div>
</div>
</div>
<div class="row">
<div class="col input-select-fit-unit-box">
<span class="label">拟合长度:</span>
<input class="input input-text" readonly="readonly" type="text" style="flex: 0 0 130px;" @model="fitLength">
<div class="input-select-fit-unit"></div>
</div>
</div>
</div>
</div>
</div>
@ -48,7 +41,7 @@ function html(that) {
<span class="unit">m</span>
<span class="arrow"></span>
</div>
<button class="confirm height-confirm" style="margin-left: 5px;">确认</button>
<button class="confirm height-confirm" style="margin-left: 5px;">应用</button>
</div>
</div>
<div class="row">
@ -72,7 +65,7 @@ function html(that) {
<span class="label">线条颜色</span>
<div class="color"></div>
</div>
<div class="col">
<div class="col" style="flex: 0 0 33%;">
<span class="label">线条宽度</span>
<div class="input-number input-number-unit-1" style="width: 80px;">
<input class="input" type="number" title="" min="1" max="999" @model="lineWidth">
@ -80,7 +73,7 @@ function html(that) {
<span class="arrow"></span>
</div>
</div>
<div class="col input-select-line-type-box">
<div class="col input-select-line-type-box" style="flex: 0 0 37%;">
<span class="label">线条形式</span>
<div class="input-select-line-type"></div>
</div>
@ -90,11 +83,32 @@ function html(that) {
<span class="label">首尾相连</span>
<input class="btn-switch" type="checkbox" @model="noseToTail">
</div>
<div class="col">
<div class="col" style="flex: 0 0 33%;">
<span class="label">线段圆滑</span>
<input class="btn-switch" type="checkbox" @model="smooth">
</div>
<div class="col" style="flex: 0 0 37%;">
</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" style="flex: 0 0 33%;">
<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="1" @model="speed">
<span class="arrow"></span>
</div>
</div>
<div class="col" style="flex: 0 0 37%;">
<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="unit">倍</span>
<span class="arrow"></span>
</div>
</div>
</div>
<div class="row">
@ -102,7 +116,7 @@ function html(that) {
<span class="label">线段缓冲</span>
<input class="btn-switch" type="checkbox" @model="extend">
</div>
<div class="col">
<div class="col" style="flex: 0 0 33%;">
<span class="label">缓冲宽度</span>
<div class="input-number input-number-unit-1" style="width: 80px;">
<input class="input" type="number" title="" min="0" data-min="0.01" max="999999" @model="extendWidth">
@ -110,7 +124,7 @@ function html(that) {
<span class="arrow"></span>
</div>
</div>
<div class="col">
<div class="col" style="flex: 0 0 37%;">
<span class="label">缓冲颜色</span>
<div class="extendColor"></div>
</div>

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;

File diff suppressed because it is too large Load Diff

View File

@ -53,8 +53,8 @@ class RadarScan extends Base {
color: options.label.color || '#ffffff',
lineWidth: (options.label.lineWidth || options.label.lineWidth === 0) ? options.label.lineWidth : 4,
pixelOffset: (options.label.pixelOffset || options.label.pixelOffset === 0) ? options.label.pixelOffset : 20,
backgroundColor: options.label.backgroundColor || ['#42c6ef', '#42c6ef'],
lineColor: options.label.lineColor || '#fff000',
backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],
lineColor: options.label.lineColor || '#00ffff80',
scaleByDistance: options.label.scaleByDistance || false,
near: (options.label.near || options.label.near === 0) ? options.label.near : 2000,
far: (options.label.far || options.label.far === 0) ? options.label.far : 100000,
@ -425,7 +425,7 @@ class RadarScan extends Base {
this.changeMaterial()
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -483,7 +483,7 @@ class RadarScan extends Base {
this.label.color = v
if (this._elms.labelColor) {
this._elms.labelColor.forEach((item, i) => {
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -583,7 +583,7 @@ class RadarScan extends Base {
this.label.lineColor = v
if (this._elms.labelLineColor) {
this._elms.labelLineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -594,7 +594,7 @@ class RadarScan extends Base {
this.labelLineColor = color
},//点击确认按钮事件回调
clear: () => {
this.labelLineColor = 'rgba(255,255,255,1)'
this.labelLineColor = 'rgba(0,255,255,0.5)'
},//点击清空按钮事件回调
})
this._elms.labelLineColor[i] = lineColorPicker
@ -610,7 +610,7 @@ class RadarScan extends Base {
this.label.backgroundColor = [v, this.label.backgroundColor[1]]
if (this._elms.labelBackgroundColorStart) {
this._elms.labelBackgroundColorStart.forEach((item, i) => {
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -636,7 +636,7 @@ class RadarScan extends Base {
this.label.backgroundColor = [this.label.backgroundColor[0], v]
if (this._elms.labelBackgroundColorEnd) {
this._elms.labelBackgroundColorEnd.forEach((item, i) => {
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1124,7 +1124,7 @@ class RadarScan extends Base {
// 创建标签页
let tabsElm = new cy_tabs('radar-scan-edit-tabs', undefined, this.sdk)
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1138,7 +1138,7 @@ class RadarScan extends Base {
this.color = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1152,7 +1152,7 @@ class RadarScan extends Base {
this.labelColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelLineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1166,7 +1166,7 @@ class RadarScan extends Base {
this.labelLineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorStart")[0],
size: 'mini',
alpha: true,
@ -1180,7 +1180,7 @@ class RadarScan extends Base {
this.labelBackgroundColorStart = 'rgba(255,255,255,1)'
},
})
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorEnd")[0],
size: 'mini',
alpha: true,

View File

@ -58,8 +58,8 @@ class RadarScanStereoscopic extends Base {
color: options.label.color || '#ffffff',
lineWidth: (options.label.lineWidth || options.label.lineWidth === 0) ? options.label.lineWidth : 4,
pixelOffset: (options.label.pixelOffset || options.label.pixelOffset === 0) ? options.label.pixelOffset : 20,
backgroundColor: options.label.backgroundColor || ['#42c6ef', '#42c6ef'],
lineColor: options.label.lineColor || '#fff000',
backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],
lineColor: options.label.lineColor || '#00ffff80',
scaleByDistance: options.label.scaleByDistance || false,
near: (options.label.near || options.label.near === 0) ? options.label.near : 2000,
far: (options.label.far || options.label.far === 0) ? options.label.far : 100000,
@ -86,6 +86,10 @@ class RadarScanStereoscopic extends Base {
RadarScanStereoscopic.radarSolidScan(this)
}
get type() {
return 'RadarScanStereoscopic'
}
static radarSolidScan(that) {
let viewer = that.sdk.viewer
let options = that.options
@ -369,7 +373,7 @@ class RadarScanStereoscopic extends Base {
this.entity.ellipsoid.outlineColor = Cesium.Color.fromCssColorString(v)
if (this._elms.colorOut) {
this._elms.colorOut.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -396,7 +400,7 @@ class RadarScanStereoscopic extends Base {
this.entity.wall.material = Cesium.Color.fromCssColorString(v)
if (this._elms.colorIn) {
this._elms.colorIn.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -454,7 +458,7 @@ class RadarScanStereoscopic extends Base {
this.label.color = v
if (this._elms.labelColor) {
this._elms.labelColor.forEach((item, i) => {
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -554,7 +558,7 @@ class RadarScanStereoscopic extends Base {
this.label.lineColor = v
if (this._elms.labelLineColor) {
this._elms.labelLineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -565,7 +569,7 @@ class RadarScanStereoscopic extends Base {
this.labelLineColor = color
},//点击确认按钮事件回调
clear: () => {
this.labelLineColor = 'rgba(255,255,255,1)'
this.labelLineColor = 'rgba(0,255,255,0.5)'
},//点击清空按钮事件回调
})
this._elms.labelLineColor[i] = lineColorPicker
@ -581,7 +585,7 @@ class RadarScanStereoscopic extends Base {
this.label.backgroundColor = [v, this.label.backgroundColor[1]]
if (this._elms.labelBackgroundColorStart) {
this._elms.labelBackgroundColorStart.forEach((item, i) => {
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -607,7 +611,7 @@ class RadarScanStereoscopic extends Base {
this.label.backgroundColor = [this.label.backgroundColor[0], v]
if (this._elms.labelBackgroundColorEnd) {
this._elms.labelBackgroundColorEnd.forEach((item, i) => {
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1026,7 +1030,7 @@ class RadarScanStereoscopic extends Base {
// 创建标签页
let tabsElm = new cy_tabs('radar-scan-edit-tabs', undefined, this.sdk)
// 颜色组件
let colorOutPicker = new ewPlugins('colorpicker', {
let colorOutPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("colorOut")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1040,7 +1044,7 @@ class RadarScanStereoscopic extends Base {
this.colorOut = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let colorInPicker = new ewPlugins('colorpicker', {
let colorInPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("colorIn")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1054,7 +1058,7 @@ class RadarScanStereoscopic extends Base {
this.colorIn = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1068,7 +1072,7 @@ class RadarScanStereoscopic extends Base {
this.labelColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelLineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1082,7 +1086,7 @@ class RadarScanStereoscopic extends Base {
this.labelLineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorStart")[0],
size: 'mini',
alpha: true,
@ -1096,7 +1100,7 @@ class RadarScanStereoscopic extends Base {
this.labelBackgroundColorStart = 'rgba(255,255,255,1)'
},
})
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorEnd")[0],
size: 'mini',
alpha: true,

View File

@ -27,7 +27,7 @@ class Corridor extends Base {
fromDegreesArray.push(positions[i].lng, positions[i].lat)
}
let length = this.computeDistance(positions)
let length = this.computeDistance2(positions)
let geometry = new Cesium.CorridorGeometry({
positions: Cesium.Cartesian3.fromDegreesArray(fromDegreesArray),

View File

@ -31,7 +31,7 @@ class Corridor extends Base {
fromDegreesArray.push(positions[i].lng, positions[i].lat)
}
let length = this.computeDistance(positions)
let length = this.computeDistance2(positions)
let geometry = new Cesium.CorridorGeometry({
positions: Cesium.Cartesian3.fromDegreesArray(fromDegreesArray),

View File

@ -23,7 +23,7 @@ class SectorObject extends Base {
* @param options.id {string} 标注id
* @param options.name {string} 名称
* @param options.show=true {boolean} 显示/隐藏
* @param options.color="#36c4ff" {string} 颜色
* @param options.color="#ff000080" {string} 颜色
* @param options.center {object} 位置
* @param options.center.lng {object} 经度
* @param options.center.lat {object} 维度
@ -31,7 +31,7 @@ class SectorObject extends Base {
* @param options.startAngle=10 {number} 起始方向
* @param options.endAngle=0 {number} 结束方向
* @param options.line {object} 边框
* @param options.line.width=2 {string} 边框宽
* @param options.line.width=3 {string} 边框宽
* @param options.line.color="rgba(155, 155, 124, 0.89)" {string} 边框颜色
* @param options.label {object} 标注
* @param options.heightMode=2{number} 高度模式0海拔高度1相对地表2依附模式
@ -39,15 +39,15 @@ class SectorObject extends Base {
constructor(sdk, options = {}) {
super(sdk, options);
this.options.name = options.name || '未命名对象'
this.options.color = options.color || "#36c4ff"
this.options.color = options.color || "#ff000080"
this.options.heightMode = (options.heightMode || options.heightMode == 0) ? options.heightMode : 2
this.options.semiMinorAxis = (options.semiMinorAxis || options.semiMinorAxis === 0) ? options.semiMinorAxis : 10
this.options.semiMajorAxis = (options.semiMajorAxis || options.semiMajorAxis === 0) ? options.semiMajorAxis : 20
this.options.show = (options.show || options.show === false) ? options.show : true
this.options.center = options.center || {}
this.options.line = options.line || {}
this.options.line.width = this.options.line.width || 2
this.options.line.color = this.options.line.color || 'rgba(155, 155, 124, 0.89)'
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, 0.5)'
this.options['area-unit'] = options['area-unit'] || '平方米'
options.label = options.label || {}
this._elms = {};
@ -60,8 +60,8 @@ class SectorObject extends Base {
color: options.label.color || '#ffffff',
lineWidth: (options.label.lineWidth || options.label.lineWidth === 0) ? options.label.lineWidth : 4,
pixelOffset: (options.label.pixelOffset || options.label.pixelOffset === 0) ? options.label.pixelOffset : 20,
backgroundColor: options.label.backgroundColor || ['#42c6ef', '#42c6ef'],
lineColor: options.label.lineColor || '#fff000',
backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],
lineColor: options.label.lineColor || '#00ffff80',
scaleByDistance: options.label.scaleByDistance || false,
near: (options.label.near || options.label.near === 0) ? options.label.near : 2000,
far: (options.label.far || options.label.far === 0) ? options.label.far : 100000,
@ -226,32 +226,32 @@ class SectorObject extends Base {
return this.options.color
}
set color(v) {
this.options.color = v
this.options.color = v || 'rgba(255, 0, 0, 0.5)'
if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polygon) {
return
}
let material = Cesium.Color.fromCssColorString(v)
let material = Cesium.Color.fromCssColorString(this.options.color)
if (this.sdk.viewer.scene.mode === 2) {
material = new Cesium.CustomColorMaterialSource({
color: v
color: this.options.color
})
}
this.entity.polygon.material = material
this.entity.polyline.width = this.lineWidth
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
defaultColor: v,
defaultColor: this.options.color,
disabled: false,//是否禁止打开颜色选择器
openPickerAni: 'opacity',//打开颜色选择器动画
sure: (c) => {
this.color = c
},//点击确认按钮事件回调
clear: () => {
this.color = 'rgba(255,255,255,1)'
this.color = 'rgba(255,0,0,0.5)'
},//点击清空按钮事件回调
})
this._elms.color[i] = colorPicker
@ -263,25 +263,25 @@ class SectorObject extends Base {
return this.options.line.color
}
set lineColor(v) {
this.options.line.color = v
this.options.line.color = v || 'rgba(255, 0, 0, 0.5)'
if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polyline) {
return
}
this.entity.polyline.material = Cesium.Color.fromCssColorString(v)
this.entity.polyline.material = Cesium.Color.fromCssColorString(this.options.line.color)
if (this._elms.lineColor) {
this._elms.lineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
defaultColor: v,
defaultColor: this.options.line.color,
disabled: false,//是否禁止打开颜色选择器
openPickerAni: 'opacity',//打开颜色选择器动画
sure: (c) => {
this.lineColor = c
},//点击确认按钮事件回调
clear: () => {
this.lineColor = 'rgba(255,255,255,1)'
this.lineColor = 'rgba(255,0,0,0.5)'
},//点击清空按钮事件回调
})
this._elms.lineColor[i] = lineColorPicker
@ -293,10 +293,10 @@ class SectorObject extends Base {
return this.options.line.width
}
set lineWidth(v) {
this.options.line.width = v
this.entity.polyline.width = v
this.options.line.width = ((v || v === 0) ? v : 3)
this.entity.polyline.width = this.options.line.width
this._elms.lineWidth && this._elms.lineWidth.forEach((item) => {
item.value = v
item.value = this.options.line.width
})
}
@ -378,7 +378,7 @@ class SectorObject extends Base {
this.label.color = v
if (this._elms.labelColor) {
this._elms.labelColor.forEach((item, i) => {
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -478,7 +478,7 @@ class SectorObject extends Base {
this.label.lineColor = v
if (this._elms.labelLineColor) {
this._elms.labelLineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -489,7 +489,7 @@ class SectorObject extends Base {
this.labelLineColor = color
},//点击确认按钮事件回调
clear: () => {
this.labelLineColor = 'rgba(255,255,255,1)'
this.labelLineColor = 'rgba(0,255,255,0.5)'
},//点击清空按钮事件回调
})
this._elms.labelLineColor[i] = lineColorPicker
@ -505,7 +505,7 @@ class SectorObject extends Base {
this.label.backgroundColor = [v, this.label.backgroundColor[1]]
if (this._elms.labelBackgroundColorStart) {
this._elms.labelBackgroundColorStart.forEach((item, i) => {
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -531,7 +531,7 @@ class SectorObject extends Base {
this.label.backgroundColor = [this.label.backgroundColor[0], v]
if (this._elms.labelBackgroundColorEnd) {
this._elms.labelBackgroundColorEnd.forEach((item, i) => {
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1175,7 +1175,7 @@ class SectorObject extends Base {
// 创建标签页
let tabsElm = new cy_tabs('circle-object-edit-tabs', undefined, this.sdk)
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1189,7 +1189,7 @@ class SectorObject extends Base {
this.color = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let linecolorPicker = new ewPlugins('colorpicker', {
let linecolorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("lineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1203,7 +1203,7 @@ class SectorObject extends Base {
this.lineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1217,7 +1217,7 @@ class SectorObject extends Base {
this.labelColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labellineColorPicker = new ewPlugins('colorpicker', {
let labellineColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelLineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1231,7 +1231,7 @@ class SectorObject extends Base {
this.labelLineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorStart")[0],
size: 'mini',
alpha: true,
@ -1245,7 +1245,7 @@ class SectorObject extends Base {
this.labelBackgroundColorStart = 'rgba(255,255,255,1)'
},
})
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorEnd")[0],
size: 'mini',
alpha: true,

View File

@ -24,7 +24,7 @@ class StraightArrowObject extends Base {
* @param options {object} 属性
* @param options.show=true {boolean} 显示/隐藏
* @param options.name {string} 名称
* @param options.color="#36c4ff" {string} 颜色
* @param options.color="#ff000080" {string} 颜色
* @param options.height {number} 高度
* @param options.heightMode=2{number} 高度模式0海拔高度1相对地表2依附模式
* @param {Array.<object>} options.positions 坐标数组 [{lon,lat,alt},...]
@ -34,13 +34,13 @@ class StraightArrowObject extends Base {
constructor(sdk, options = {}, _Dialog = {}) {
super(sdk, options);
this.options.name = options.name || '未命名对象'
this.options.color = options.color || "#36c4ff"
this.options.color = options.color || "#ff000080"
this.options.show = (options.show || options.show === false) ? options.show : true
this.options.heightMode = (options.heightMode || options.heightMode == 0) ? options.heightMode : 2
this.options.positions = options.positions || []
this.options.line = options.line || {}
this.options.line.width = this.options.line.width || 2
this.options.line.color = this.options.line.color || 'rgba(155, 155, 124, 0.89)'
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, 0.5)'
this.options['area-unit'] = options['area-unit'] || '平方米'
this.entity
this.event = new MouseEvent(this.sdk)
@ -60,8 +60,8 @@ class StraightArrowObject extends Base {
color: options.label.color || '#ffffff',
lineWidth: (options.label.lineWidth || options.label.lineWidth === 0) ? options.label.lineWidth : 4,
pixelOffset: (options.label.pixelOffset || options.label.pixelOffset === 0) ? options.label.pixelOffset : 20,
backgroundColor: options.label.backgroundColor || ['#42c6ef', '#42c6ef'],
lineColor: options.label.lineColor || '#fff000',
backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],
lineColor: options.label.lineColor || '#00ffff80',
scaleByDistance: options.label.scaleByDistance || false,
near: (options.label.near || options.label.near === 0) ? options.label.near : 2000,
far: (options.label.far || options.label.far === 0) ? options.label.far : 100000,
@ -109,24 +109,24 @@ class StraightArrowObject extends Base {
return this.options.color
}
set color(v) {
this.options.color = v
this.options.color = v || 'rgba(255, 0, 0, 0.5)'
if (!this.sdk || !this.sdk.viewer || !this.entity || !this.entity.polygon) {
return
}
let material = Cesium.Color.fromCssColorString(v)
let material = Cesium.Color.fromCssColorString(this.options.color)
if (this.sdk.viewer.scene.mode === 2) {
material = new Cesium.CustomColorMaterialSource({
color: v
color: this.options.color
})
}
this.entity.polygon.material = material
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
defaultColor: v,
defaultColor: this.options.color,
disabled: false,//是否禁止打开颜色选择器
openPickerAni: 'opacity',//打开颜色选择器动画
sure: (c) => {
@ -247,7 +247,7 @@ class StraightArrowObject extends Base {
this.entity.polyline.material = Cesium.Color.fromCssColorString(v)
if (this._elms.lineColor) {
this._elms.lineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -355,7 +355,7 @@ class StraightArrowObject extends Base {
this.label.color = v
if (this._elms.labelColor) {
this._elms.labelColor.forEach((item, i) => {
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -455,7 +455,7 @@ class StraightArrowObject extends Base {
this.label.lineColor = v
if (this._elms.labelLineColor) {
this._elms.labelLineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -466,7 +466,7 @@ class StraightArrowObject extends Base {
this.labelLineColor = color
},//点击确认按钮事件回调
clear: () => {
this.labelLineColor = 'rgba(255,255,255,1)'
this.labelLineColor = 'rgba(0,255,255,0.5)'
},//点击清空按钮事件回调
})
this._elms.labelLineColor[i] = lineColorPicker
@ -482,7 +482,7 @@ class StraightArrowObject extends Base {
this.label.backgroundColor = [v, this.label.backgroundColor[1]]
if (this._elms.labelBackgroundColorStart) {
this._elms.labelBackgroundColorStart.forEach((item, i) => {
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -508,7 +508,7 @@ class StraightArrowObject extends Base {
this.label.backgroundColor = [this.label.backgroundColor[0], v]
if (this._elms.labelBackgroundColorEnd) {
this._elms.labelBackgroundColorEnd.forEach((item, i) => {
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1178,7 +1178,7 @@ class StraightArrowObject extends Base {
// 创建标签页
let tabsElm = new cy_tabs('assemble-object-edit-tabs', undefined, this.sdk)
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1192,7 +1192,7 @@ class StraightArrowObject extends Base {
this.color = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let linecolorPicker = new ewPlugins('colorpicker', {
let linecolorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("lineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1206,7 +1206,7 @@ class StraightArrowObject extends Base {
this.lineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1220,7 +1220,7 @@ class StraightArrowObject extends Base {
this.labelColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labellineColorPicker = new ewPlugins('colorpicker', {
let labellineColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelLineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1234,7 +1234,7 @@ class StraightArrowObject extends Base {
this.labelLineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorStart")[0],
size: 'mini',
alpha: true,
@ -1248,7 +1248,7 @@ class StraightArrowObject extends Base {
this.labelBackgroundColorStart = 'rgba(255,255,255,1)'
},
})
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorEnd")[0],
size: 'mini',
alpha: true,

View File

@ -52,7 +52,7 @@ class Text3D extends Base {
})
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -236,7 +236,7 @@ class Text3D extends Base {
// 创建标签页
// let tabsElm = new cy_tabs('radar-scan-edit-tabs')
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -250,7 +250,7 @@ class Text3D extends Base {
this.color = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -264,7 +264,7 @@ class Text3D extends Base {
this.labelColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelLineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -278,7 +278,7 @@ class Text3D extends Base {
this.labelLineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorStart")[0],
size: 'mini',
alpha: true,
@ -292,7 +292,7 @@ class Text3D extends Base {
this.labelBackgroundColorStart = 'rgba(255,255,255,1)'
},
})
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorEnd")[0],
size: 'mini',
alpha: true,

View File

@ -263,7 +263,7 @@ class GroundText extends Base {
})
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini', //颜色box类型
alpha: true, //是否开启透明度
@ -401,7 +401,7 @@ class GroundText extends Base {
this._elms = this._EventBinding.element
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName('color')[0],
size: 'mini', //颜色box类型
alpha: true, //是否开启透明度

View File

@ -164,7 +164,7 @@ class GroundText extends Base {
})
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini', //颜色box类型
alpha: true, //是否开启透明度
@ -302,7 +302,7 @@ class GroundText extends Base {
this._elms = this._EventBinding.element
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName('color')[0],
size: 'mini', //颜色box类型
alpha: true, //是否开启透明度

View File

@ -94,7 +94,7 @@ class StandText extends Base {
let minimumHeights = []
let maximumHeights = []
let material = this.getMaterial()
let width = this.computeDistance(positions)
let width = this.computeDistance2(positions)
let extrudedHeight = this.aspectRatio ? (width / this.aspectRatio) : 0
for (let i = 0; i < positions.length; i++) {
fromDegreesArray.push(positions[i].lng, positions[i].lat)
@ -118,7 +118,7 @@ class StandText extends Base {
this.entity.wall.material = this.getMaterial()
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -303,7 +303,7 @@ class StandText extends Base {
let minimumHeights = []
let maximumHeights = []
let material = that.getMaterial()
let width = that.computeDistance(positions)
let width = that.computeDistance2(positions)
let extrudedHeight = that.aspectRatio ? (width / that.aspectRatio) : 0
// aspectRatio
for (let i = 0; i < positions.length; i++) {
@ -403,7 +403,7 @@ class StandText extends Base {
// 创建标签页
// let tabsElm = new cy_tabs('radar-scan-edit-tabs')
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -417,7 +417,7 @@ class StandText extends Base {
this.color = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -431,7 +431,7 @@ class StandText extends Base {
this.labelColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelLineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -445,7 +445,7 @@ class StandText extends Base {
this.labelLineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorStart")[0],
size: 'mini',
alpha: true,
@ -459,7 +459,7 @@ class StandText extends Base {
this.labelBackgroundColorStart = 'rgba(255,255,255,1)'
},
})
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorEnd")[0],
size: 'mini',
alpha: true,
@ -503,7 +503,7 @@ class StandText extends Base {
let fromDegreesArray = []
let minimumHeights = []
let maximumHeights = []
let width = this.computeDistance(positions)
let width = this.computeDistance2(positions)
let extrudedHeight = this.aspectRatio ? (width / this.aspectRatio) : 0
// aspectRatio
for (let i = 0; i < positions.length; i++) {
@ -602,7 +602,7 @@ class StandText extends Base {
let fromDegreesArray = []
let minimumHeights = []
let maximumHeights = []
let width = that.computeDistance(positions)
let width = that.computeDistance2(positions)
let extrudedHeight = that.aspectRatio ? (width / that.aspectRatio) : 0
for (let i = 0; i < positions.length; i++) {
fromDegreesArray.push(positions[i].lng, positions[i].lat)
@ -635,7 +635,7 @@ class StandText extends Base {
fromDegreesArray = []
minimumHeights = []
maximumHeights = []
width = that.computeDistance(positions)
width = that.computeDistance2(positions)
extrudedHeight = that.aspectRatio ? (width / that.aspectRatio) : 0
for (let i = 0; i < positions.length; i++) {
fromDegreesArray.push(positions[i].lng, positions[i].lat)
@ -680,7 +680,7 @@ class StandText extends Base {
fromDegreesArray = []
minimumHeights = []
maximumHeights = []
width = that.computeDistance(positions)
width = that.computeDistance2(positions)
extrudedHeight = that.aspectRatio ? (width / that.aspectRatio) : 0
for (let i = 0; i < positions.length; i++) {
fromDegreesArray.push(positions[i].lng, positions[i].lat)
@ -710,7 +710,7 @@ class StandText extends Base {
fromDegreesArray = []
minimumHeights = []
maximumHeights = []
width = that.computeDistance(positions)
width = that.computeDistance2(positions)
extrudedHeight = that.aspectRatio ? (width / that.aspectRatio) : 0
for (let i = 0; i < positions.length; i++) {
fromDegreesArray.push(positions[i].lng, positions[i].lat)

View File

@ -100,7 +100,7 @@ class TrajectoryMotion extends Base {
lineWidth: (options.label.lineWidth || options.label.lineWidth === 0) ? options.label.lineWidth : 4,
pixelOffset: (options.label.pixelOffset || options.label.pixelOffset === 0) ? options.label.pixelOffset : 20,
backgroundColor: options.label.backgroundColor || ['#42c6ef', '#42c6ef'],
lineColor: options.label.lineColor || '#fff000',
lineColor: options.label.lineColor || '#00ffff80',
scaleByDistance: options.label.scaleByDistance || false,
near: (options.label.near || options.label.near === 0) ? options.label.near : 2000,
far: (options.label.far || options.label.far === 0) ? options.label.far : 100000,
@ -1162,7 +1162,7 @@ class TrajectoryMotion extends Base {
this.label && (this.label.color = v)
if (this._elms.labelColor) {
this._elms.labelColor.forEach((item, i) => {
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1305,9 +1305,10 @@ class TrajectoryMotion extends Base {
}
// 创建模型
static async addModel(that) {
let url = that.replaceHost(that.options.model.url, that.options.host)
let options = {
id: that.options.id,
url: that.options.model.url,
url: url,
show: that.options.show ? that.options.model.show : false,
scale: that.options.model.scale,
// minimumPixelSize: that.options.model.pixelSize,
@ -1861,7 +1862,9 @@ class TrajectoryMotion extends Base {
// this.options.viewFollowOrientation.roll = Cesium.Math.toDegrees(this.sdk.viewer.camera.roll)
// this.options.viewFollowOrientation.direction = this.sdk.viewer.camera.direction
this._DialogObject.close()
this.Dialog.confirmCallBack && this.Dialog.confirmCallBack(this.originalOptions)
let cdoptions = this.deepCopyObj(this.options)
cdoptions.host = ''
this.Dialog.confirmCallBack && this.Dialog.confirmCallBack(cdoptions)
syncData(this.sdk, this.options.id)
syncSplitData(this.sdk, this.options.id)
},
@ -1914,7 +1917,7 @@ class TrajectoryMotion extends Base {
this._DialogObject._element.content.getElementsByClassName('model-rotate-btn')[0].className = 'btn model-rotate-btn'
}
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -2285,7 +2288,7 @@ class TrajectoryMotion extends Base {
async changeModelUrl(url) {
this.sdk.viewer.scene.primitives.remove(this.model)
this.options.model.url = url
this.options.model.url = this.replaceHost(url, this.options.host)
let matrix = this.model.modelMatrix
let position = this.model.position
let options = {

View File

@ -41,7 +41,7 @@ function html(that) {
<div class="corner-type"></div>
</div>
<div class="col material-box">
<span class="label">材质样式</span>
<span class="label">墙体样式</span>
<div class="material"></div>
</div>
</div>

View File

@ -32,7 +32,7 @@ class WallRealStereoscopic extends Base {
* @param options['nose-to-tail']=false {boolean} 首尾相连
* @param options.extrudedHeight=2.4 {number} 拉伸高度
* @param options.cornerType=0 {string} 拐角类型;0直角1斜角2圆角
* @param options.material=0 {number} 材质0纯色墙1砖墙12砖墙23砖墙3
* @param options.material=0 {number} 材质0纯色墙1红砖2黄砖3灰瓷
* @param {Array.<object>} positions 经纬度和高度的列表,值交替 [{lon,lat,alt},...]
* @param _Dialog {object} 弹框事件
* @param _Dialog.confirmCallBack {function} 弹框确认时的回调
@ -60,8 +60,8 @@ class WallRealStereoscopic extends Base {
color: options.label.color || '#ffffff',
lineWidth: (options.label.lineWidth || options.label.lineWidth === 0) ? options.label.lineWidth : 4,
pixelOffset: (options.label.pixelOffset || options.label.pixelOffset === 0) ? options.label.pixelOffset : 20,
backgroundColor: options.label.backgroundColor || ['#42c6ef', '#42c6ef'],
lineColor: options.label.lineColor || '#fff000',
backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],
lineColor: options.label.lineColor || '#00ffff80',
scaleByDistance: options.label.scaleByDistance || false,
near: (options.label.near || options.label.near === 0) ? options.label.near : 2000,
far: (options.label.far || options.label.far === 0) ? options.label.far : 100000,
@ -142,7 +142,7 @@ class WallRealStereoscopic extends Base {
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: false,//是否开启透明度
@ -287,7 +287,7 @@ class WallRealStereoscopic extends Base {
this.label.color = v
if (this._elms.labelColor) {
this._elms.labelColor.forEach((item, i) => {
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -387,7 +387,7 @@ class WallRealStereoscopic extends Base {
this.label.lineColor = v
if (this._elms.labelLineColor) {
this._elms.labelLineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -398,7 +398,7 @@ class WallRealStereoscopic extends Base {
this.labelLineColor = color
},//点击确认按钮事件回调
clear: () => {
this.labelLineColor = 'rgba(255,255,255,1)'
this.labelLineColor = 'rgba(0,255,255,0.5)'
},//点击清空按钮事件回调
})
this._elms.labelLineColor[i] = lineColorPicker
@ -414,7 +414,7 @@ class WallRealStereoscopic extends Base {
this.label.backgroundColor = [v, this.label.backgroundColor[1]]
if (this._elms.labelBackgroundColorStart) {
this._elms.labelBackgroundColorStart.forEach((item, i) => {
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -440,7 +440,7 @@ class WallRealStereoscopic extends Base {
this.label.backgroundColor = [this.label.backgroundColor[0], v]
if (this._elms.labelBackgroundColorEnd) {
this._elms.labelBackgroundColorEnd.forEach((item, i) => {
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1368,20 +1368,20 @@ class WallRealStereoscopic extends Base {
icon: 'icon-wall'
},
{
name: '<i class="icon icon-wall-brick1"></i>砖墙1',
value: '砖墙1',
name: '<i class="icon icon-wall-brick1"></i>砖墙',
value: '砖墙',
key: 1,
icon: 'icon-wall-brick1'
},
{
name: '<i class="icon icon-wall-brick2"></i>砖墙2',
value: '砖墙2',
name: '<i class="icon icon-wall-brick2"></i>砖墙',
value: '砖墙',
key: 2,
icon: 'icon-wall-brick2'
},
{
name: '<i class="icon icon-wall-brick3"></i>砖墙3',
value: '砖墙3',
name: '<i class="icon icon-wall-brick3"></i>灰瓷墙',
value: '灰瓷墙',
key: 3,
icon: 'icon-wall-brick3'
}
@ -1414,7 +1414,7 @@ class WallRealStereoscopic extends Base {
// 创建标签页
let tabsElm = new cy_tabs('radar-scan-edit-tabs', undefined, this.sdk)
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("color")[0],
size: 'mini',//颜色box类型
alpha: false,//是否开启透明度
@ -1428,7 +1428,7 @@ class WallRealStereoscopic extends Base {
this.color = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1442,7 +1442,7 @@ class WallRealStereoscopic extends Base {
this.labelColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelLineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1456,7 +1456,7 @@ class WallRealStereoscopic extends Base {
this.labelLineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorStart")[0],
size: 'mini',
alpha: true,
@ -1470,7 +1470,7 @@ class WallRealStereoscopic extends Base {
this.labelBackgroundColorStart = 'rgba(255,255,255,1)'
},
})
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorEnd")[0],
size: 'mini',
alpha: true,

View File

@ -47,8 +47,8 @@ class WallStereoscopic extends Base {
color: options.label.color || '#ffffff',
lineWidth: (options.label.lineWidth || options.label.lineWidth === 0) ? options.label.lineWidth : 4,
pixelOffset: (options.label.pixelOffset || options.label.pixelOffset === 0) ? options.label.pixelOffset : 20,
backgroundColor: options.label.backgroundColor || ['#42c6ef', '#42c6ef'],
lineColor: options.label.lineColor || '#fff000',
backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],
lineColor: options.label.lineColor || '#00ffff80',
scaleByDistance: options.label.scaleByDistance || false,
near: (options.label.near || options.label.near === 0) ? options.label.near : 2000,
far: (options.label.far || options.label.far === 0) ? options.label.far : 100000,
@ -92,7 +92,7 @@ class WallStereoscopic extends Base {
this.entity.corridor.material = Cesium.Color.fromCssColorString(v)
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -176,7 +176,7 @@ class WallStereoscopic extends Base {
this.label.color = v
if (this._elms.labelColor) {
this._elms.labelColor.forEach((item, i) => {
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -276,7 +276,7 @@ class WallStereoscopic extends Base {
this.label.lineColor = v
if (this._elms.labelLineColor) {
this._elms.labelLineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -287,7 +287,7 @@ class WallStereoscopic extends Base {
this.labelLineColor = color
},//点击确认按钮事件回调
clear: () => {
this.labelLineColor = 'rgba(255,255,255,1)'
this.labelLineColor = 'rgba(0,255,255,0.5)'
},//点击清空按钮事件回调
})
this._elms.labelLineColor[i] = lineColorPicker
@ -303,7 +303,7 @@ class WallStereoscopic extends Base {
this.label.backgroundColor = [v, this.label.backgroundColor[1]]
if (this._elms.labelBackgroundColorStart) {
this._elms.labelBackgroundColorStart.forEach((item, i) => {
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -329,7 +329,7 @@ class WallStereoscopic extends Base {
this.label.backgroundColor = [this.label.backgroundColor[0], v]
if (this._elms.labelBackgroundColorEnd) {
this._elms.labelBackgroundColorEnd.forEach((item, i) => {
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -627,7 +627,7 @@ class WallStereoscopic extends Base {
// 创建标签页
let tabsElm = new cy_tabs('radar-scan-edit-tabs',undefined,this.sdk)
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -641,7 +641,7 @@ class WallStereoscopic extends Base {
this.color = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -655,7 +655,7 @@ class WallStereoscopic extends Base {
this.labelColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelLineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -669,7 +669,7 @@ class WallStereoscopic extends Base {
this.labelLineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorStart")[0],
size: 'mini',
alpha: true,
@ -683,7 +683,7 @@ class WallStereoscopic extends Base {
this.labelBackgroundColorStart = 'rgba(255,255,255,1)'
},
})
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorEnd")[0],
size: 'mini',
alpha: true,

View File

@ -58,8 +58,8 @@ class WallRealStereoscopic extends Base {
color: options.label.color || '#ffffff',
lineWidth: (options.label.lineWidth || options.label.lineWidth === 0) ? options.label.lineWidth : 4,
pixelOffset: (options.label.pixelOffset || options.label.pixelOffset === 0) ? options.label.pixelOffset : 20,
backgroundColor: options.label.backgroundColor || ['#42c6ef', '#42c6ef'],
lineColor: options.label.lineColor || '#fff000',
backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],
lineColor: options.label.lineColor || '#00ffff80',
scaleByDistance: options.label.scaleByDistance || false,
near: (options.label.near || options.label.near === 0) ? options.label.near : 2000,
far: (options.label.far || options.label.far === 0) ? options.label.far : 100000,
@ -135,7 +135,7 @@ class WallRealStereoscopic extends Base {
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: false,//是否开启透明度
@ -262,7 +262,7 @@ class WallRealStereoscopic extends Base {
this.label.color = v
if (this._elms.labelColor) {
this._elms.labelColor.forEach((item, i) => {
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -362,7 +362,7 @@ class WallRealStereoscopic extends Base {
this.label.lineColor = v
if (this._elms.labelLineColor) {
this._elms.labelLineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -373,7 +373,7 @@ class WallRealStereoscopic extends Base {
this.labelLineColor = color
},//点击确认按钮事件回调
clear: () => {
this.labelLineColor = 'rgba(255,255,255,1)'
this.labelLineColor = 'rgba(0,255,255,0.5)'
},//点击清空按钮事件回调
})
this._elms.labelLineColor[i] = lineColorPicker
@ -389,7 +389,7 @@ class WallRealStereoscopic extends Base {
this.label.backgroundColor = [v, this.label.backgroundColor[1]]
if (this._elms.labelBackgroundColorStart) {
this._elms.labelBackgroundColorStart.forEach((item, i) => {
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -415,7 +415,7 @@ class WallRealStereoscopic extends Base {
this.label.backgroundColor = [this.label.backgroundColor[0], v]
if (this._elms.labelBackgroundColorEnd) {
this._elms.labelBackgroundColorEnd.forEach((item, i) => {
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1363,7 +1363,7 @@ class WallRealStereoscopic extends Base {
// 创建标签页
let tabsElm = new cy_tabs('radar-scan-edit-tabs', undefined, this.sdk)
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("color")[0],
size: 'mini',//颜色box类型
alpha: false,//是否开启透明度
@ -1377,7 +1377,7 @@ class WallRealStereoscopic extends Base {
this.color = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1391,7 +1391,7 @@ class WallRealStereoscopic extends Base {
this.labelColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelLineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -1405,7 +1405,7 @@ class WallRealStereoscopic extends Base {
this.labelLineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorStart")[0],
size: 'mini',
alpha: true,
@ -1419,7 +1419,7 @@ class WallRealStereoscopic extends Base {
this.labelBackgroundColorStart = 'rgba(255,255,255,1)'
},
})
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorEnd")[0],
size: 'mini',
alpha: true,

View File

@ -47,8 +47,8 @@ class WallStereoscopic extends Base {
color: options.label.color || '#ffffff',
lineWidth: (options.label.lineWidth || options.label.lineWidth === 0) ? options.label.lineWidth : 4,
pixelOffset: (options.label.pixelOffset || options.label.pixelOffset === 0) ? options.label.pixelOffset : 20,
backgroundColor: options.label.backgroundColor || ['#42c6ef', '#42c6ef'],
lineColor: options.label.lineColor || '#fff000',
backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],
lineColor: options.label.lineColor || '#00ffff80',
scaleByDistance: options.label.scaleByDistance || false,
near: (options.label.near || options.label.near === 0) ? options.label.near : 2000,
far: (options.label.far || options.label.far === 0) ? options.label.far : 100000,
@ -92,7 +92,7 @@ class WallStereoscopic extends Base {
this.entity.corridor.material = Cesium.Color.fromCssColorString(v)
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -176,7 +176,7 @@ class WallStereoscopic extends Base {
this.label.color = v
if (this._elms.labelColor) {
this._elms.labelColor.forEach((item, i) => {
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -276,7 +276,7 @@ class WallStereoscopic extends Base {
this.label.lineColor = v
if (this._elms.labelLineColor) {
this._elms.labelLineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -287,7 +287,7 @@ class WallStereoscopic extends Base {
this.labelLineColor = color
},//点击确认按钮事件回调
clear: () => {
this.labelLineColor = 'rgba(255,255,255,1)'
this.labelLineColor = 'rgba(0,255,255,0.5)'
},//点击清空按钮事件回调
})
this._elms.labelLineColor[i] = lineColorPicker
@ -303,7 +303,7 @@ class WallStereoscopic extends Base {
this.label.backgroundColor = [v, this.label.backgroundColor[1]]
if (this._elms.labelBackgroundColorStart) {
this._elms.labelBackgroundColorStart.forEach((item, i) => {
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -329,7 +329,7 @@ class WallStereoscopic extends Base {
this.label.backgroundColor = [this.label.backgroundColor[0], v]
if (this._elms.labelBackgroundColorEnd) {
this._elms.labelBackgroundColorEnd.forEach((item, i) => {
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -627,7 +627,7 @@ class WallStereoscopic extends Base {
// 创建标签页
let tabsElm = new cy_tabs('radar-scan-edit-tabs',undefined,this.sdk)
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -641,7 +641,7 @@ class WallStereoscopic extends Base {
this.color = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -655,7 +655,7 @@ class WallStereoscopic extends Base {
this.labelColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelLineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -669,7 +669,7 @@ class WallStereoscopic extends Base {
this.labelLineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorStart")[0],
size: 'mini',
alpha: true,
@ -683,7 +683,7 @@ class WallStereoscopic extends Base {
this.labelBackgroundColorStart = 'rgba(255,255,255,1)'
},
})
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorEnd")[0],
size: 'mini',
alpha: true,

View File

@ -32,10 +32,10 @@ class WallStereoscopic extends Base {
* */
constructor(sdk, options, _Dialog = {}) {
super(sdk, options);
this.options.color = options.color || "#00d9ff"
this.options.color = options.color || "#ff0000"
this.options.extrudedHeight = options.extrudedHeight || 2.4
this.options.positions = options.positions
this.options.material = Number(options.material) || 0
this.options.material = (Number(options.material) || Number(options.material) === 0) ? Number(options.material) : 3
this.options.duration = (options.duration || options.duration === 0) ? options.duration : 1000
this.options.show = (options.show || options.show === false) ? options.show : true
this.options['nose-to-tail'] = options['nose-to-tail'] || false
@ -51,8 +51,8 @@ class WallStereoscopic extends Base {
color: options.label.color || '#ffffff',
lineWidth: (options.label.lineWidth || options.label.lineWidth === 0) ? options.label.lineWidth : 4,
pixelOffset: (options.label.pixelOffset || options.label.pixelOffset === 0) ? options.label.pixelOffset : 20,
backgroundColor: options.label.backgroundColor || ['#42c6ef', '#42c6ef'],
lineColor: options.label.lineColor || '#fff000',
backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],
lineColor: options.label.lineColor || '#00ffff80',
scaleByDistance: options.label.scaleByDistance || false,
near: (options.label.near || options.label.near === 0) ? options.label.near : 2000,
far: (options.label.far || options.label.far === 0) ? options.label.far : 100000,
@ -113,15 +113,15 @@ class WallStereoscopic extends Base {
return this.options.color
}
set color(v) {
this.options.color = v
this.options.color = v || '#ff0000'
this.entity.polylineVolume.material = this.getMaterial()
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
defaultColor: v,
defaultColor: this.options.color,
disabled: false,//是否禁止打开颜色选择器
openPickerAni: 'opacity',//打开颜色选择器动画
sure: (c) => {
@ -140,10 +140,10 @@ class WallStereoscopic extends Base {
return this.options.material
}
set material(v) {
this.options.material = Number(v)
this.options.material = (Number(v) || Number(v) === 0) ? Number(v) : 3
this.entity.polylineVolume.material = this.getMaterial()
this._elms.material && this._elms.material.forEach((item) => {
item.value = v
item.value = this.options.material
})
}
@ -225,7 +225,7 @@ class WallStereoscopic extends Base {
this.label.color = v
if (this._elms.labelColor) {
this._elms.labelColor.forEach((item, i) => {
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -325,7 +325,7 @@ class WallStereoscopic extends Base {
this.label.lineColor = v
if (this._elms.labelLineColor) {
this._elms.labelLineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -336,7 +336,7 @@ class WallStereoscopic extends Base {
this.labelLineColor = color
},//点击确认按钮事件回调
clear: () => {
this.labelLineColor = 'rgba(255,255,255,1)'
this.labelLineColor = 'rgba(0,255,255,0.5)'
},//点击清空按钮事件回调
})
this._elms.labelLineColor[i] = lineColorPicker
@ -352,7 +352,7 @@ class WallStereoscopic extends Base {
this.label.backgroundColor = [v, this.label.backgroundColor[1]]
if (this._elms.labelBackgroundColorStart) {
this._elms.labelBackgroundColorStart.forEach((item, i) => {
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -378,7 +378,7 @@ class WallStereoscopic extends Base {
this.label.backgroundColor = [this.label.backgroundColor[0], v]
if (this._elms.labelBackgroundColorEnd) {
this._elms.labelBackgroundColorEnd.forEach((item, i) => {
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -900,7 +900,7 @@ class WallStereoscopic extends Base {
// 创建标签页
let tabsElm = new cy_tabs('radar-scan-edit-tabs', undefined, this.sdk)
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -914,7 +914,7 @@ class WallStereoscopic extends Base {
this.color = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -928,7 +928,7 @@ class WallStereoscopic extends Base {
this.labelColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelLineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -942,7 +942,7 @@ class WallStereoscopic extends Base {
this.labelLineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorStart")[0],
size: 'mini',
alpha: true,
@ -956,7 +956,7 @@ class WallStereoscopic extends Base {
this.labelBackgroundColorStart = 'rgba(255,255,255,1)'
},
})
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorEnd")[0],
size: 'mini',
alpha: true,

View File

@ -47,8 +47,8 @@ class WallStereoscopic extends Base {
color: options.label.color || '#ffffff',
lineWidth: (options.label.lineWidth || options.label.lineWidth === 0) ? options.label.lineWidth : 4,
pixelOffset: (options.label.pixelOffset || options.label.pixelOffset === 0) ? options.label.pixelOffset : 20,
backgroundColor: options.label.backgroundColor || ['#42c6ef', '#42c6ef'],
lineColor: options.label.lineColor || '#fff000',
backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],
lineColor: options.label.lineColor || '#00ffff80',
scaleByDistance: options.label.scaleByDistance || false,
near: (options.label.near || options.label.near === 0) ? options.label.near : 2000,
far: (options.label.far || options.label.far === 0) ? options.label.far : 100000,
@ -92,7 +92,7 @@ class WallStereoscopic extends Base {
this.entity.corridor.material = Cesium.Color.fromCssColorString(v)
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -176,7 +176,7 @@ class WallStereoscopic extends Base {
this.label.color = v
if (this._elms.labelColor) {
this._elms.labelColor.forEach((item, i) => {
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -276,7 +276,7 @@ class WallStereoscopic extends Base {
this.label.lineColor = v
if (this._elms.labelLineColor) {
this._elms.labelLineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -287,7 +287,7 @@ class WallStereoscopic extends Base {
this.labelLineColor = color
},//点击确认按钮事件回调
clear: () => {
this.labelLineColor = 'rgba(255,255,255,1)'
this.labelLineColor = 'rgba(0,255,255,0.5)'
},//点击清空按钮事件回调
})
this._elms.labelLineColor[i] = lineColorPicker
@ -303,7 +303,7 @@ class WallStereoscopic extends Base {
this.label.backgroundColor = [v, this.label.backgroundColor[1]]
if (this._elms.labelBackgroundColorStart) {
this._elms.labelBackgroundColorStart.forEach((item, i) => {
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -329,7 +329,7 @@ class WallStereoscopic extends Base {
this.label.backgroundColor = [this.label.backgroundColor[0], v]
if (this._elms.labelBackgroundColorEnd) {
this._elms.labelBackgroundColorEnd.forEach((item, i) => {
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -633,7 +633,7 @@ class WallStereoscopic extends Base {
// 创建标签页
let tabsElm = new cy_tabs('radar-scan-edit-tabs',undefined,this.sdk)
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -647,7 +647,7 @@ class WallStereoscopic extends Base {
this.color = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -661,7 +661,7 @@ class WallStereoscopic extends Base {
this.labelColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelLineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -675,7 +675,7 @@ class WallStereoscopic extends Base {
this.labelLineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorStart")[0],
size: 'mini',
alpha: true,
@ -689,7 +689,7 @@ class WallStereoscopic extends Base {
this.labelBackgroundColorStart = 'rgba(255,255,255,1)'
},
})
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorEnd")[0],
size: 'mini',
alpha: true,

View File

@ -47,8 +47,8 @@ class WallStereoscopic2 extends Base {
color: options.label.color || '#ffffff',
lineWidth: (options.label.lineWidth || options.label.lineWidth === 0) ? options.label.lineWidth : 4,
pixelOffset: (options.label.pixelOffset || options.label.pixelOffset === 0) ? options.label.pixelOffset : 20,
backgroundColor: options.label.backgroundColor || ['#42c6ef', '#42c6ef'],
lineColor: options.label.lineColor || '#fff000',
backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],
lineColor: options.label.lineColor || '#00ffff80',
scaleByDistance: options.label.scaleByDistance || false,
near: (options.label.near || options.label.near === 0) ? options.label.near : 2000,
far: (options.label.far || options.label.far === 0) ? options.label.far : 100000,
@ -112,7 +112,7 @@ class WallStereoscopic2 extends Base {
this.entity.polylineVolume.material = this.getMaterial()
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -195,7 +195,7 @@ class WallStereoscopic2 extends Base {
this.label.color = v
if (this._elms.labelColor) {
this._elms.labelColor.forEach((item, i) => {
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -295,7 +295,7 @@ class WallStereoscopic2 extends Base {
this.label.lineColor = v
if (this._elms.labelLineColor) {
this._elms.labelLineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -306,7 +306,7 @@ class WallStereoscopic2 extends Base {
this.labelLineColor = color
},//点击确认按钮事件回调
clear: () => {
this.labelLineColor = 'rgba(255,255,255,1)'
this.labelLineColor = 'rgba(0,255,255,0.5)'
},//点击清空按钮事件回调
})
this._elms.labelLineColor[i] = lineColorPicker
@ -322,7 +322,7 @@ class WallStereoscopic2 extends Base {
this.label.backgroundColor = [v, this.label.backgroundColor[1]]
if (this._elms.labelBackgroundColorStart) {
this._elms.labelBackgroundColorStart.forEach((item, i) => {
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -348,7 +348,7 @@ class WallStereoscopic2 extends Base {
this.label.backgroundColor = [this.label.backgroundColor[0], v]
if (this._elms.labelBackgroundColorEnd) {
this._elms.labelBackgroundColorEnd.forEach((item, i) => {
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -889,7 +889,7 @@ class WallStereoscopic2 extends Base {
// 创建标签页
let tabsElm = new cy_tabs('radar-scan-edit-tabs', undefined, this.sdk)
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -903,7 +903,7 @@ class WallStereoscopic2 extends Base {
this.color = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -917,7 +917,7 @@ class WallStereoscopic2 extends Base {
this.labelColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelLineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -931,7 +931,7 @@ class WallStereoscopic2 extends Base {
this.labelLineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorStart")[0],
size: 'mini',
alpha: true,
@ -945,7 +945,7 @@ class WallStereoscopic2 extends Base {
this.labelBackgroundColorStart = 'rgba(255,255,255,1)'
},
})
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorEnd")[0],
size: 'mini',
alpha: true,

View File

@ -47,8 +47,8 @@ class WallStereoscopic extends Base {
color: options.label.color || '#ffffff',
lineWidth: (options.label.lineWidth || options.label.lineWidth === 0) ? options.label.lineWidth : 4,
pixelOffset: (options.label.pixelOffset || options.label.pixelOffset === 0) ? options.label.pixelOffset : 20,
backgroundColor: options.label.backgroundColor || ['#42c6ef', '#42c6ef'],
lineColor: options.label.lineColor || '#fff000',
backgroundColor: options.label.backgroundColor || ['#00ffff80', '#00ffff80'],
lineColor: options.label.lineColor || '#00ffff80',
scaleByDistance: options.label.scaleByDistance || false,
near: (options.label.near || options.label.near === 0) ? options.label.near : 2000,
far: (options.label.far || options.label.far === 0) ? options.label.far : 100000,
@ -92,7 +92,7 @@ class WallStereoscopic extends Base {
this.entity.corridor.material = Cesium.Color.fromCssColorString(v)
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -176,7 +176,7 @@ class WallStereoscopic extends Base {
this.label.color = v
if (this._elms.labelColor) {
this._elms.labelColor.forEach((item, i) => {
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -276,7 +276,7 @@ class WallStereoscopic extends Base {
this.label.lineColor = v
if (this._elms.labelLineColor) {
this._elms.labelLineColor.forEach((item, i) => {
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -287,7 +287,7 @@ class WallStereoscopic extends Base {
this.labelLineColor = color
},//点击确认按钮事件回调
clear: () => {
this.labelLineColor = 'rgba(255,255,255,1)'
this.labelLineColor = 'rgba(0,255,255,0.5)'
},//点击清空按钮事件回调
})
this._elms.labelLineColor[i] = lineColorPicker
@ -303,7 +303,7 @@ class WallStereoscopic extends Base {
this.label.backgroundColor = [v, this.label.backgroundColor[1]]
if (this._elms.labelBackgroundColorStart) {
this._elms.labelBackgroundColorStart.forEach((item, i) => {
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -329,7 +329,7 @@ class WallStereoscopic extends Base {
this.label.backgroundColor = [this.label.backgroundColor[0], v]
if (this._elms.labelBackgroundColorEnd) {
this._elms.labelBackgroundColorEnd.forEach((item, i) => {
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -627,7 +627,7 @@ class WallStereoscopic extends Base {
// 创建标签页
let tabsElm = new cy_tabs('radar-scan-edit-tabs',undefined,this.sdk)
// 颜色组件
let colorPicker = new ewPlugins('colorpicker', {
let colorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -641,7 +641,7 @@ class WallStereoscopic extends Base {
this.color = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelColorPicker = new ewPlugins('colorpicker', {
let labelColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -655,7 +655,7 @@ class WallStereoscopic extends Base {
this.labelColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let lineColorPicker = new ewPlugins('colorpicker', {
let lineColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelLineColor")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -669,7 +669,7 @@ class WallStereoscopic extends Base {
this.labelLineColor = 'rgba(255,255,255,1)'
},//点击清空按钮事件回调
})
let labelBackgroundColorStartPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorStartPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorStart")[0],
size: 'mini',
alpha: true,
@ -683,7 +683,7 @@ class WallStereoscopic extends Base {
this.labelBackgroundColorStart = 'rgba(255,255,255,1)'
},
})
let labelBackgroundColorEndPicker = new ewPlugins('colorpicker', {
let labelBackgroundColorEndPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("labelBackgroundColorEnd")[0],
size: 'mini',
alpha: true,

View File

@ -105,7 +105,7 @@ class WaterSurface extends Base {
this.entity && (this.entity.appearance.material.uniforms.baseWaterColor = Cesium.Color.fromCssColorString(v))
if (this._elms.color) {
this._elms.color.forEach((item, i) => {
let picker = new ewPlugins('colorpicker', {
let picker = new YJColorPicker({
el: item.el,
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度
@ -232,7 +232,7 @@ class WaterSurface extends Base {
contentElm.innerHTML = html()
this._DialogObject.contentAppChild(contentElm)
// 颜色组件
let waterColorPicker = new ewPlugins('colorpicker', {
let waterColorPicker = new YJColorPicker({
el: contentElm.getElementsByClassName("water-color")[0],
size: 'mini',//颜色box类型
alpha: true,//是否开启透明度

View File

@ -6,6 +6,7 @@
* @update: 2023-12-01 12:12
*/
import Tools from "../../Tools";
import { getHost, getToken } from "../../on";
import { regLeftClickCallback, regRightClickCallback, regMoveCallback } from "../../Global/ClickCallback";
import { regLeftClickCallback as regLeftClickCallback2, regRightClickCallback as regRightClickCallback2, regMoveCallback as regMoveCallback2 } from "../../Global/SplitScreen/ClickCallback";
import { setSplitDirection, syncSplitData, getSdk } from "../../Global/SplitScreen";
@ -27,6 +28,7 @@ class Base extends Tools {
this.clickCallBack = null
this.rightClickCallBack = null
this.picking = true
this.options.host = this.options.host || getHost()
this.setDefaultValue()
// this.sdk.addIncetance(this.options.id, this)

View File

@ -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 = `<div class="cy_datalist"><i class="yj-custom-icon-arrow-down"></i>\n ${search ? '<input type="text" placeholder="\u8F93\u5165\u6216\u9009\u62E9" autocomplete="off">' : '<input type="text" class="datalist" readonly="readonly" placeholder="\u8bf7\u9009\u62e9" autocomplete="off">'}\n <dl style="display: none;position: absolute;background: rgba(0, 0, 0, 0.5);color: rgba(var(--color-sdk-base-rgb), 1);border: 1px solid rgba(var(--color-sdk-base-rgb), 0.2);border-radius: 3px;margin: 2px 0px;max-height: 300px;overflow-x: hidden;white-space: nowrap; font-size: 12px;z-index: 8;">\n </dl>\n </div>`;
var html = `<div class="cy_datalist"><i class="yj-custom-icon-arrow-down"></i>\n ${search ? '<input type="text" placeholder="\u8F93\u5165\u6216\u9009\u62E9" autocomplete="off">' : `<input type="text" class="datalist ${index}" readonly="readonly" placeholder="\u8bf7\u9009\u62e9" autocomplete="off">`}\n <dl style="display: none;position: absolute;background: rgba(0, 0, 0, 0.5);color: rgba(var(--color-sdk-base-rgb), 1);border: 1px solid rgba(var(--color-sdk-base-rgb), 0.2);border-radius: 3px;margin: 2px 0px;max-height: 300px;overflow-x: hidden;white-space: nowrap; font-size: 12px;z-index: 8;">\n </dl>\n </div>`;
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 += "<dd class=\"" + ((targetValue === item.value) ? 'active' : '') + "\" style=\"margin: 0; padding: 5px 5px; color: #fff;cursor: pointer;\" value=\"" + item.value + "\">" + item.name + "</dd>";
legp(parentElement, ".cy_datalist dl").that[index].innerHTML += "<dd class=\"" + ((targetValue === item.value) ? 'active' : '') + "\" style=\"margin: 0; padding: 5px 5px; color: #fff;cursor: pointer;\" value=\"" + item.value + "\">" + item.name + "</dd>";
}
});
if (!judge_1) {
legp(parentElement, ".cy_datalist dl").that[0].innerHTML = "<dd style=\"padding: 10px 20px; color: #fff;\">\u6682\u65E0\u6570\u636E</dd>";
legp(parentElement, ".cy_datalist dl").that[index].innerHTML = "<dd style=\"padding: 10px 20px; color: #fff;\">\u6682\u65E0\u6570\u636E</dd>";
}
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 += "<dd class=\"" + ((targetValue === item.value) ? 'active' : '') + "\" style=\"margin: 0; padding: 5px 5px; color: #fff;cursor: pointer;\" value=\"" + item.value + "\">" + item.name + "</dd>";
legp(parentElement, ".cy_datalist dl").that[num].innerHTML += "<dd class=\"" + ((targetValue === item.value) ? 'active' : '') + "\" style=\"margin: 0; padding: 5px 5px; color: #fff;cursor: pointer;\" value=\"" + item.value + "\">" + item.name + "</dd>";
});
myClick();
}

View File

@ -1,21 +1,27 @@
let fontData = [
{
name: '黑体',
value: '黑体',
font: 'SimHei',
key: '0'
},
{
name: '思源黑体',
value: '思源黑体',
font: 'SourceHanSansTi',
key: '0'
key: '1'
},
{
name: '庞门正道标题体',
value: '庞门正道标题体',
font: 'PMZDBTTi',
key: '1'
key: '2'
},
{
name: '数黑体',
value: '数黑体',
font: 'AlimamaShuHeiTi',
key: '2'
key: '3'
}
]

View File

@ -1,4 +1,4 @@
let list = ['icon-py', 'icon-edit', 'icon-add', 'icon-add2', 'icon-minus', 'icon-play', 'icon-pause', 'icon-updateheight', 'icon-draw', 'icon-positions', 'icon-reset', 'icon-xj', 'icon-yj', 'icon-zj', 'icon-close', 'icon-query', 'icon-route', 'icon-copy', 'icon-load', 'icon-rubric']
let list = ['icon-py', 'icon-edit', 'icon-add', 'icon-add2', 'icon-minus', 'icon-play', 'icon-pause', 'icon-updateheight', 'icon-draw', 'icon-positions', 'icon-reset', 'icon-xj', 'icon-yj', 'icon-zj', 'icon-close', 'icon-query', 'icon-route', 'icon-copy', 'icon-load', 'icon-rubric', 'icon-pen', 'icon-cross']
function setSvg() {
let svgElm = document.createElement('svg');
svgElm.xmlns = 'http://www.w3.org/2000/svg'

View File

@ -0,0 +1,328 @@
class YJColorPicker {
constructor(options = {}) {
let _this = this
let pickAlphaInput
let config = {
el: options.el,
size: "mini",
isLog: false,
disabled: options.disabled || false, //是否禁止打开颜色选择器
alpha: false, //是否开启透明度
clickDefineColor: clickDefineColor,
hasClear: true,
openPickerAni: 'opacity',
defaultColor: options.defaultColor || '#ffffff',
startMainCallback: (t) => {
customizeStyle()
}
}
this.el = options.el
if (options.sure) {
config.sure = (color) => {
this.colorPicker.config.defaultColor = this.colorPicker.pickerInput.value
let c = Cesium.Color.fromCssColorString(color)
if (pickAlphaInput) {
c = c.withAlpha(pickAlphaInput.value / 100)
this.pickAlphaInputValue = pickAlphaInput.value
}
color = c.toCssHexString()
if (typeof options.sure == 'function') {
options.sure(color)
}
customizeStyle()
}
}
if (options.clear) {
config.clear = () => {
if (pickAlphaInput) {
pickAlphaInput.value = this.pickAlphaInputValue = 100
}
customizeStyle()
if (typeof options.clear == 'function') {
options.clear()
}
// setTimeout(() => {
// this.pickAlphaInputValue = 100
// this.colorPicker.$Dom.pickerInput.value = ''
// if (options.clear && typeof options.clear == 'function') {
// options.clear()
// }
// customizeStyle()
// }, this.colorPicker.config.pickerAnimationTime);
}
}
let CesiumColor = Cesium.Color.fromCssColorString(config.defaultColor)
if (!CesiumColor) {
config.defaultColor = '#ffffff'
CesiumColor = Cesium.Color.fromCssColorString(config.defaultColor)
}
// if (options.predefineColor) {
// config.predefineColor = ['rgba(255, 255, 255, 1)', 'rgba(255, 0, 0, 1)', 'rgba(208, 132, 209, 1)', 'rgba(100, 182, 217, 1)', 'rgba(42, 130, 228, 1)', 'rgba(214, 36, 36, 1)', 'rgba(252, 222, 111, 1)', 'rgba(67, 207, 124, 1)', 'rgba(176, 243, 143, 1)', 'rgba(121, 72, 234, 1)', 'rgba(255, 195, 0, 1)', 'rgba(0, 186, 173, 1)', 'rgba(165, 214, 63, 1)', 'rgba(0, 0, 0, 1)', 'rgba(46, 47, 51, 1)', 'rgba(172, 51, 193, 1)', 'rgba(130, 21, 21, 1)', 'rgba(255, 87, 51, 1)', 'rgba(255, 140, 0, 1)', 'rgba(125, 191, 255, 1)']
// }
config.predefineColor = ['rgba(255, 255, 255, 1)', 'rgba(255, 0, 0, 1)', 'rgba(208, 132, 209, 1)', 'rgba(100, 182, 217, 1)', 'rgba(42, 130, 228, 1)', 'rgba(214, 36, 36, 1)', 'rgba(252, 222, 111, 1)', 'rgba(67, 207, 124, 1)', 'rgba(176, 243, 143, 1)', 'rgba(121, 72, 234, 1)', 'rgba(255, 195, 0, 1)', 'rgba(0, 186, 173, 1)', 'rgba(165, 214, 63, 1)', 'rgba(0, 0, 0, 1)', 'rgba(46, 47, 51, 1)', 'rgba(172, 51, 193, 1)', 'rgba(130, 21, 21, 1)', 'rgba(255, 87, 51, 1)', 'rgba(255, 140, 0, 1)', 'rgba(125, 191, 255, 1)']
this.colorPicker = new ewPlugins('colorpicker', config)
window.colorPicker = this.colorPicker
customizeStyle()
function customizeStyle() {
if (!_this.colorPicker) {
return
}
let isSubtract = false
let box = _this.colorPicker.box
let picker = _this.colorPicker.picker
picker.style.minWidth = '325px'
let pickerContent = picker.getElementsByClassName('ew-color-picker-content')[0]
let pickAlphaSliderBar = picker.getElementsByClassName('ew-alpha-slider-bar')[0]
if (pickAlphaSliderBar) {
pickAlphaSliderBar.parentNode.style.width = '16px'
pickAlphaSliderBar.parentNode.removeChild(pickAlphaSliderBar)
}
// let customDivider = document.createElement('span')
// customDivider.className = 'custom-divider'
// customDivider.style.margin = '10px 0'
// pickerContent.parentNode.insertBefore(customDivider, pickerContent.nextSibling)
let pickPen = document.createElement('div')
pickPen.className = 'icon-pen-box'
pickPen.innerHTML = '<svg class="icon-pen"><use xlink:href="#yj-icon-pen"></use></svg>'
let pickerInput = _this.colorPicker.pickerInput
pickerInput.parentNode.insertBefore(pickPen, pickerInput)
pickerInput.style.width = '188px'
if (options.alpha) {
let pickAlpha = document.createElement('div')
pickAlpha.className = 'input-number input-number-unit-1 color-alpha'
pickAlpha.innerHTML = `
<input class="input" type="number" title="" step="0.01" min="0" max="100">
<span class="unit">%</span>
<span class="arrow"></span>`
pickerInput.parentNode.insertBefore(pickAlpha, pickerInput.nextSibling)
pickerInput.style.width = '106px'
pickAlpha.style.width = '80px'
pickAlphaInput = pickAlpha.getElementsByClassName('input')[0]
pickAlphaInput.addEventListener('blur', (e) => {
let value = e.target.value
if (e.target.value || (e.target.dataset.null !== 'undefined' && e.target.dataset.null !== '' && !Boolean(e.target.dataset.null))) {
value = Number(value)
if ((e.target.max) && value > Number(e.target.max)) {
value = Number(e.target.max)
}
if ((e.target.min) && value < Number(e.target.min)) {
value = Number(e.target.min)
}
if ((e.target.dataset.min) && value < Number(e.target.dataset.min)) {
value = Number(e.target.dataset.min)
}
pickAlphaInput.value = value
}
})
if (_this.pickAlphaInputValue || _this.pickAlphaInputValue === 0 || _this.pickAlphaInputValue === '0') {
pickAlphaInput.value = Number(Number(_this.pickAlphaInputValue).toFixed(2))
}
else {
pickAlphaInput.value = Number((CesiumColor.alpha * 100).toFixed(2))
}
_this.pickAlphaInputValue = pickAlphaInput.value
box.style.background = Cesium.Color.fromCssColorString(_this.colorPicker.config.defaultColor || '#ffffff').withAlpha(pickAlphaInput.value / 100).toCssColorString()
}
else {
CesiumColor = CesiumColor.withAlpha(1)
box.style.background = Cesium.Color.fromCssColorString(_this.colorPicker.config.defaultColor || '#ffffff').toCssColorString()
}
let defineColorContainer = picker.getElementsByClassName('ew-pre-define-color-container')[0]
if (defineColorContainer) {
let colorList = localStorage.getItem('custom-color')
if (colorList) {
colorList = JSON.parse(colorList)
}
else {
colorList = {}
}
let customDivider2 = document.createElement('span')
customDivider2.className = 'custom-divider'
customDivider2.style.margin = '10px 0'
let customDivider3 = document.createElement('span')
customDivider3.className = 'custom-divider'
defineColorContainer.parentNode.insertBefore(customDivider2, defineColorContainer)
defineColorContainer.parentNode.insertBefore(customDivider3, defineColorContainer.nextSibling)
let collectColorContainer = document.createElement('div')
collectColorContainer.className = 'yj-pre-collect-color-container'
customDivider3.parentNode.insertBefore(collectColorContainer, customDivider3.nextSibling)
let addColorBtn = document.createElement('div')
addColorBtn.innerHTML = '<svg class="icon-add2"><use xlink:href="#yj-icon-add2"></use></svg>'
addColorBtn.className = 'yj-pre-collect-color add'
let subtractColorBtn = document.createElement('div')
subtractColorBtn.innerHTML = '<svg class="icon-minus"><use xlink:href="#yj-icon-minus"></use></svg>'
subtractColorBtn.className = 'yj-pre-collect-color subtract'
collectColorContainer.appendChild(addColorBtn)
collectColorContainer.appendChild(subtractColorBtn)
let subtractElmList = []
for (let key in colorList) {
let colorElm = document.createElement('div')
colorElm.className = 'yj-pre-collect-color'
colorElm.setAttribute('tabindex', '0')
colorElm.setAttribute('color-box-id', _this.colorPicker.uid)
let colorItemElm = document.createElement('div')
colorItemElm.className = 'yj-pre-define-color-item'
colorElm.appendChild(colorItemElm)
colorItemElm.className = 'yj-pre-define-color-item'
let c = Cesium.Color.fromCssColorString(colorList[key])
let colorString = c.toCssHexString()
colorItemElm.style.backgroundColor = colorString
colorItemElm.addEventListener('click', (e) => {
_this.colorPicker.updateColor(e)
colorElm.className = 'yj-pre-collect-color yj-pre-collect-color-active'
clickDefineColor(colorString)
})
colorElm.addEventListener("blur", function (e) {
colorElm.className = 'yj-pre-collect-color'
})
let subtractElm = document.createElement('div')
subtractElm.className = 'yj-pre-define-color-item subtract-btn'
subtractElm.innerHTML = '<svg class="icon-cross"><use xlink:href="#yj-icon-cross"></use></svg>'
subtractElm.style.display = 'none'
colorElm.appendChild(subtractElm)
collectColorContainer.appendChild(colorElm)
subtractElm.addEventListener('click', () => {
delete colorList[key]
localStorage.setItem('custom-color', JSON.stringify(colorList))
collectColorContainer.removeChild(colorElm)
})
subtractElmList.push(subtractElm)
}
addColorBtn.addEventListener('click', () => {
if (isSubtract) {
isSubtract = false
for (let i = 0; i < subtractElmList.length; i++) {
subtractElmList[i].style.display = 'none'
}
}
let colorElm = document.createElement('div')
colorElm.className = 'yj-pre-collect-color'
colorElm.setAttribute('tabindex', '0')
colorElm.setAttribute('color-box-id', _this.colorPicker.uid)
let colorItemElm = document.createElement('div')
colorItemElm.className = 'yj-pre-define-color-item'
colorElm.appendChild(colorItemElm)
let color = colorRgbaToHex(colorHsbaToRgba(_this.colorPicker.hsba))
let c = Cesium.Color.fromCssColorString(color || '#ffffff')
if (pickAlphaInput) {
c = c.withAlpha(pickAlphaInput.value / 100)
}
let colorString = c.toCssHexString()
colorItemElm.style.backgroundColor = colorString
colorItemElm.addEventListener('click', (e) => {
_this.colorPicker.updateColor(e)
colorElm.className = 'yj-pre-collect-color yj-pre-collect-color-active'
clickDefineColor(colorString)
})
colorElm.addEventListener("blur", function (e) {
colorElm.className = 'yj-pre-collect-color'
})
collectColorContainer.appendChild(colorElm)
let subtractElm = document.createElement('div')
subtractElm.className = 'yj-pre-define-color-item subtract-btn'
subtractElm.innerHTML = '<svg class="icon-cross"><use xlink:href="#yj-icon-cross"></use></svg>'
subtractElm.style.display = 'none'
colorElm.appendChild(subtractElm)
subtractElmList.push(subtractElm)
let key = Cesium.createGuid()
colorList[key] = colorString
localStorage.setItem('custom-color', JSON.stringify(colorList))
subtractElm.addEventListener('click', () => {
delete colorList[key]
localStorage.setItem('custom-color', JSON.stringify(colorList))
collectColorContainer.removeChild(colorElm)
})
})
subtractColorBtn.addEventListener('click', () => {
isSubtract = !isSubtract
if (isSubtract) {
for (let i = 0; i < subtractElmList.length; i++) {
subtractElmList[i].style.display = 'block'
}
}
else {
for (let i = 0; i < subtractElmList.length; i++) {
subtractElmList[i].style.display = 'none'
}
}
})
}
}
function clickDefineColor(color) {
if (pickAlphaInput) {
let c = Cesium.Color.fromCssColorString(color)
pickAlphaInput.value = c.alpha * 100
}
}
function colorHsbaToRgba(e) {
var r, n, o, i = e.a, a = Math.round(e.h), s = Math.round(255 * e.s / 100), l = Math.round(255 * e.b / 100);
if (0 === s)
r = n = o = l;
else {
var c = (255 - s) * l / 255
, d = a % 60 * (l - c) / 60;
360 === a ? (r = l,
n = o = 0) : a < 60 ? (r = l,
n = c + d,
o = c) : a < 120 ? (r = l - d,
n = l,
o = c) : a < 180 ? (r = c,
n = l,
o = c + d) : a < 240 ? (r = c,
n = l - d,
o = l) : a < 300 ? (r = c + d,
n = c,
o = l) : a < 360 ? (r = l,
n = c,
o = l - d) : r = n = o = 0
}
return "rgba(" + Math.round(r) + "," + Math.round(n) + "," + Math.round(o) + "," + i + ")"
}
function colorRgbaToHex(e) {
var t = {
10: "A",
11: "B",
12: "C",
13: "D",
14: "E",
15: "F"
};
if (/rgba?/.test(e)) {
var r = e.replace(/rgba?\(/, "").replace(/\)/, "").replace(/[\s+]/g, "").split(",")
, n = "";
r[3];
return r.map(function (e, r) {
r <= 2 && (n += function (e) {
e = Math.min(Math.round(e), 255);
var r = Math.floor(e / 16)
, n = e % 16;
return "" + (t[r] || r) + (t[n] || n)
}(e))
}),
"#" + n
}
}
}
}
window.YJColorPicker = YJColorPicker
export default YJColorPicker

View File

@ -0,0 +1,159 @@
/*
* @Description: 流动线
*/
function FlowDashedLine() {
class FlowDashedLineFlowMaterialProperty {
constructor(options) {
this._definitionChanged = new Cesium.Event();
this._color = undefined;
this._speed = undefined;
this._uType = undefined;
this._space = undefined;
this._dashSize = undefined;
this._scale = undefined;
this.color = new Cesium.Color.fromCssColorString(options.color || "rgba(255,255,255,1)");
this.speed = options.speed != undefined ? options.speed : 1.0;//速度
this.space = options.space || 0.0;//速度
this.dashSize = options.dashSize || 0.03;//速度
this.uType = options.uType === undefined ? 1 : options.uType;//类型0普通流动线 1虚化虚线
this.lineBackAlpha = options.lineBackAlpha || 0.05;
this.scale = options.scale || 1.0;
}
get isConstant() {
return false;
}
get definitionChanged() {
return this._definitionChanged;
}
getType(time) {
return Cesium.Material.FlowDashedLineMaterialType;
}
getValue(time, result) {
if (!Cesium.defined(result)) {
result = {};
}
result.color = Cesium.Property.getValueOrDefault(
this._color,
time,
Cesium.Color.RED,
result.color
);
result.speed = Cesium.Property.getValueOrDefault(
this._speed,
time,
10,
result.speed
);
result.space = Cesium.Property.getValueOrDefault(
this._space,
time,
10,
result.space
);
result.dashSize = Cesium.Property.getValueOrDefault(
this._dashSize,
time,
10,
result.dashSize
);
result.uType = Cesium.Property.getValueOrDefault(
this._uType,
time,
1,
result.uType
);
result.scale = Cesium.Property.getValueOrDefault(
this._scale,
time,
1.0,
result.scale
);
result.lineBackAlpha = this.lineBackAlpha;
result.frameNumber = Cesium.getTimestamp();
return result;
}
equals(other) {
return (
this === other ||
(other instanceof FlowDashedLineFlowMaterialProperty &&
Cesium.Property.equals(this._color, other._color) &&
Cesium.Property.equals(this._speed, other.speed) &&
Cesium.Property.equals(this._uType, other.uType) &&
Cesium.Property.equals(this._lineBackAlpha, other.lineBackAlpha) &&
Cesium.Property.equals(this._scale, other.scale))
);
}
}
Object.defineProperties(FlowDashedLineFlowMaterialProperty.prototype, {
color: Cesium.createPropertyDescriptor("color"),
speed: Cesium.createPropertyDescriptor("speed"),
space: Cesium.createPropertyDescriptor("space"),
dashSize: Cesium.createPropertyDescriptor("dashSize"),
uType: Cesium.createPropertyDescriptor("uType"),
transparency: Cesium.createPropertyDescriptor("lineBackAlpha"),
scale: Cesium.createPropertyDescriptor("scale"),
});
Cesium.FlowDashedLineFlowMaterialProperty = FlowDashedLineFlowMaterialProperty;
Cesium.Material.FlowDashedLineFlowMaterialProperty = "FlowDashedLineFlowMaterialProperty";
Cesium.Material.FlowDashedLineMaterialType = "FlowDashedLineMaterialType";
Cesium.Material.FlowDashedLineMaterialSource = `
uniform vec4 color;
uniform float speed;
// uniform int uType;
uniform float lineBackAlpha;
czm_material czm_getMaterial(czm_materialInput materialInput)
{
czm_material material = czm_getDefaultMaterial(materialInput);
vec2 st = materialInput.st;
float dashSize = 0.1;
float gapSize = space;
// speed现在表示完成一次完整动画循环的秒数
float progress = speed==0.0 ? 0.0 : fract(frameNumber / 1000.0 / speed * scale);
float pattern = fract(st.x / dashSize * (1.0 + gapSize) + progress / dashSize * (1.0 + gapSize));
float dash1 = step(0.0, pattern) - step(1.0/(1.0 + gapSize), pattern);
float dash2 = smoothstep(0.0, 0.2, pattern) -
smoothstep(1.0/(1.0 + gapSize),
1.0/(1.0 + gapSize) + 0.2,
pattern);
float dash = (float(uType) != 1.0)?dash1:dash2;
material.alpha = dash;
material.diffuse = color.rgb;
return material;
}
`;
Cesium.Material._materialCache.addMaterial(
Cesium.Material.FlowDashedLineMaterialType,
{
fabric: {
type: Cesium.Material.FlowDashedLineMaterialType,
uniforms: {
color: new Cesium.Color(1.0, 1.0, 1.0, 1.0),
speed: 1,
space: 0.0,
scale: 1.0,
dashSize: 0.03,
frameNumber: Cesium.getTimestamp(),
uType: 1,
lineBackAlpha: 0.05,
},
source: Cesium.Material.FlowDashedLineMaterialSource,
},
translucent: function (material) {
return true;
},
}
);
}
export { FlowDashedLine }

View File

@ -0,0 +1,113 @@
/*
* @Description: 流动线
*/
function FlowLine() {
class FlowLineMaterialProperty {
constructor(options) {
this._definitionChanged = new Cesium.Event();
this._color = undefined;
this._duration = undefined;
this.color = new Cesium.Color.fromCssColorString(options.color || "rgba(255,255,255,1)");
this.duration = options.duration || 10.0;
this.lineBackAlpha = options.lineBackAlpha || 0.05;
}
get isConstant() {
return false;
}
get definitionChanged() {
return this._definitionChanged;
}
getType(time) {
return Cesium.Material.FlowLineMaterialType;
}
getValue(time, result) {
if (!Cesium.defined(result)) {
result = {};
}
result.color = Cesium.Property.getValueOrDefault(
this._color,
time,
Cesium.Color.RED,
result.color
);
result.duration = Cesium.Property.getValueOrDefault(
this._duration,
time,
10,
result.duration
);
result.lineBackAlpha = this.lineBackAlpha;
result.frameNumber = Cesium.getTimestamp();
return result;
}
equals(other) {
return (
this === other ||
(other instanceof FlowLineMaterialProperty &&
Cesium.Property.equals(this._color, other._color) &&
Cesium.Property.equals(this._duration, other.duration) &&
Cesium.Property.equals(this.lineBackAlpha, other.lineBackAlpha))
);
}
}
Object.defineProperties(FlowLineMaterialProperty.prototype, {
color: Cesium.createPropertyDescriptor("color"),
duration: Cesium.createPropertyDescriptor("duration"),
transparency: Cesium.createPropertyDescriptor("lineBackAlpha"),
});
Cesium.FlowLineMaterialProperty = FlowLineMaterialProperty;
Cesium.Material.FlowLineMaterialProperty = "FlowLineMaterialProperty";
Cesium.Material.FlowLineMaterialType = "FlowLineMaterialType";
Cesium.Material.FlowLineMaterialSource = `
uniform vec4 color;
uniform float duration;
uniform float lineBackAlpha;
czm_material czm_getMaterial(czm_materialInput materialInput)
{
//生成默认的基础材质
czm_material material = czm_getDefaultMaterial(materialInput);
//获取stuv
vec2 st = materialInput.st;
//获取当前帧数10秒内变化0-1
float time = fract(czm_frameNumber / (60.0*duration));
//长度1/10
time = time * (1.0 + 0.1);
//平滑过渡函数
float alpha = smoothstep(time-0.1,time,st.s) * step(-time,-st.s);
//光带轨迹(不会完全透明)
alpha += lineBackAlpha;
material.alpha = alpha;
material.diffuse = color.rgb;
return material;
}
`;
Cesium.Material._materialCache.addMaterial(
Cesium.Material.FlowLineMaterialType,
{
fabric: {
type: Cesium.Material.FlowLineMaterialType,
uniforms: {
color: new Cesium.Color(1.0, 1.0, 1.0, 1.0),
duration: 10.0,
lineBackAlpha: 0.05,
},
source: Cesium.Material.FlowLineMaterialSource,
},
translucent: function (material) {
return true;
},
}
);
}
export { FlowLine }

View File

@ -0,0 +1,123 @@
/*
* @Description: 流动线
*/
function LineTexture() {
class LineTextureMaterialProperty {
constructor(options) {
this._definitionChanged = new Cesium.Event();
this._image = undefined;
this._color = undefined;
this._speed = undefined;
this._repeat = undefined;
this.image = options.image || "";
this.color = new Cesium.Color.fromCssColorString(options.color || "rgba(255,255,255,1)");
this.speed = options.speed != undefined ? options.speed : 1.0;
this.repeat = options.repeat || new Cesium.Cartesian2(1.0, 1.0);
}
get isConstant() {
return false;
}
get definitionChanged() {
return this._definitionChanged;
}
getType(time) {
return Cesium.Material.LineTextureMaterialType;
}
getValue(time, result) {
if (!Cesium.defined(result)) {
result = {};
}
result.image = Cesium.Property.getValueOrDefault(
this._image,
time,
"",
result.image
);
result.color = Cesium.Property.getValueOrDefault(
this._color,
time,
Cesium.Color.RED,
result.color
);
result.speed = Cesium.Property.getValueOrDefault(
this._speed,
time,
1.0,
result.speed
);
result.repeat = Cesium.Property.getValueOrDefault(
this._repeat,
time,
new Cesium.Cartesian2(1.0, 1.0),
result.repeat
);
result.frameNumber = Cesium.getTimestamp();
return result;
}
equals(other) {
return (
this === other ||
(other instanceof LineTextureMaterialProperty &&
Cesium.Property.equals(this._image, other._image) &&
Cesium.Property.equals(this._color, other._color) &&
Cesium.Property.equals(this._imageW, other._imageW) &&
Cesium.Property.equals(this._speed, other._speed))
);
}
}
Object.defineProperties(LineTextureMaterialProperty.prototype, {
image: Cesium.createPropertyDescriptor("image"),
color: Cesium.createPropertyDescriptor("color"),
speed: Cesium.createPropertyDescriptor("speed"),
repeat: Cesium.createPropertyDescriptor("repeat"),
});
Cesium.LineTextureMaterialProperty = LineTextureMaterialProperty;
Cesium.Material.LineTextureMaterialProperty = "LineTextureMaterialProperty";
Cesium.Material.LineTextureMaterialType = "LineTextureMaterialType";
Cesium.Material.LineTextureMaterialSource = `
uniform vec4 color;
uniform sampler2D image;
uniform float speed;
// uniform float repeat;
czm_material czm_getMaterial(czm_materialInput materialInput)
{
czm_material material = czm_getDefaultMaterial(materialInput);
vec2 st = materialInput.st;
st.s *= repeat.x; // 关键通过repeat控制纹理密度
// vec4 colorImage = texture2D(image, vec2(fract(st.s + speed*czm_frameNumber* 0.01), st.t));
vec4 colorImage = speed==0.0?texture2D(image, vec2(fract(st.s), st.t)):texture2D(image, vec2(fract(st.s + frameNumber / 1000.0 / speed * repeat.x / repeat.y ), st.t));
material.alpha = colorImage.a * color.a;
material.diffuse = color.rgb;
return material;
}
`;
Cesium.Material._materialCache.addMaterial(
Cesium.Material.LineTextureMaterialType,
{
fabric: {
type: Cesium.Material.LineTextureMaterialType,
uniforms: {
color: new Cesium.Color(1.0, 1.0, 1.0, 1.0),
image: '',
repeat: new Cesium.Cartesian2(1.0, 1.0),
speed: 1.0,
frameNumber: Cesium.getTimestamp(),
uTime: 1
},
source: Cesium.Material.LineTextureMaterialSource,
},
translucent: function (material) {
return true;
},
}
);
}
export { LineTexture }

View File

@ -0,0 +1,131 @@
/*
* @Description: 流动线
*/
function PolylineFlow() {
class PolylineFlowMaterialProperty {
constructor(options) {
this._definitionChanged = new Cesium.Event();
this._color = undefined;
this._speed = undefined;
this._rotate = undefined;
this.color = new Cesium.Color.fromCssColorString(options.color || "rgba(255,255,255,1)");
this.speed = options.speed != undefined ? options.speed : 1.0;//速度
this.lineBackAlpha = options.lineBackAlpha || 0.05;
this.rotate = options.rotate;
}
get isConstant() {
return false;
}
get definitionChanged() {
return this._definitionChanged;
}
getType(time) {
return Cesium.Material.PolylineFlowMaterialType;
}
getValue(time, result) {
if (!Cesium.defined(result)) {
result = {};
}
result.color = Cesium.Property.getValueOrDefault(
this._color,
time,
Cesium.Color.RED,
result.color
);
result.speed = Cesium.Property.getValueOrDefault(
this._speed,
time,
10,
result.speed
);
result.rotate = Cesium.Property.getValueOrDefault(
this._rotate,
time,
true,
result.rotate
);
result.lineBackAlpha = this.lineBackAlpha;
result.frameTime = Cesium.getTimestamp();
// result.frameNumber = Cesium.getTimestamp();
return result;
}
equals(other) {
return (
this === other ||
(other instanceof PolylineFlowMaterialProperty &&
Cesium.Property.equals(this._color, other._color) &&
Cesium.Property.equals(this._speed, other.speed) &&
Cesium.Property.equals(this.lineBackAlpha, other.lineBackAlpha))
);
}
}
Object.defineProperties(PolylineFlowMaterialProperty.prototype, {
color: Cesium.createPropertyDescriptor("color"),
speed: Cesium.createPropertyDescriptor("speed"),
rotate: Cesium.createPropertyDescriptor("rotate"),
transparency: Cesium.createPropertyDescriptor("lineBackAlpha"),
});
Cesium.PolylineFlowMaterialProperty = PolylineFlowMaterialProperty;
Cesium.Material.PolylineFlowMaterialProperty = "PolylineFlowMaterialProperty";
Cesium.Material.PolylineFlowMaterialType = "PolylineFlowMaterialType";
Cesium.Material.PolylineFlowMaterialSource = `
uniform vec4 color;
uniform float speed;
uniform float lineBackAlpha;
czm_material czm_getMaterial(czm_materialInput materialInput)
{
//生成默认的基础材质
czm_material material = czm_getDefaultMaterial(materialInput);
//获取stuv
vec2 st = materialInput.st;
//获取当前帧数10秒内变化0-1
// float time = fract(czm_frameNumber * speed / 60.0);
// float time = fract(abs(speed) * czm_frameNumber * 0.01);
float time = fract(frameTime / 1000.0 / abs(speed));
//长度1/10
// time = time * (1.0 + 0.1);
float staticAlpha = rotate?smoothstep(0.0,1.0, 1.0-st.s) * step(-1.0,-(1.0-st.s)):smoothstep(0.0,1.0, st.s) * step(-1.0,-st.s);
//平滑过渡函数
float alpha1 = smoothstep(time-0.1,time,1.0-st.s) * step(-time,- (1.0-st.s));
float alpha2 = smoothstep(time-0.1,time,st.s) * step(-time,- st.s);
float alpha =(speed== 0.0)? staticAlpha:(speed < 0.0)?alpha2:alpha1;
//光带轨迹(不会完全透明)
alpha += lineBackAlpha;
material.alpha = alpha;
material.diffuse = color.rgb;
return material;
}
`;
Cesium.Material._materialCache.addMaterial(
Cesium.Material.PolylineFlowMaterialType,
{
fabric: {
type: Cesium.Material.PolylineFlowMaterialType,
uniforms: {
color: new Cesium.Color(1.0, 1.0, 1.0, 1.0),
speed: 0.1,
rotate: true,
frameTime: Cesium.getTimestamp(),
lineBackAlpha: 0.05,
},
source: Cesium.Material.PolylineFlowMaterialSource,
},
translucent: function (material) {
return true;
},
}
);
}
export { PolylineFlow }

View File

@ -0,0 +1,167 @@
/*
* @Description: 流动线
*/
function PolylineFlowMult() {
class PolylineFlowMultMaterialProperty {
constructor(options) {
this._definitionChanged = new Cesium.Event();
this._color = undefined;
this._speed = undefined;
this._rotate = undefined;
this.color = new Cesium.Color.fromCssColorString(options.color || "rgba(255,255,255,1)");
this.speed = options.speed != undefined ? options.speed : 1.0;//速度
this.lineBackAlpha = options.lineBackAlpha || 0.05;
this.rotate = options.rotate;
}
get isConstant() {
return false;
}
get definitionChanged() {
return this._definitionChanged;
}
getType(time) {
return Cesium.Material.PolylineFlowMultMaterialType;
}
getValue(time, result) {
if (!Cesium.defined(result)) {
result = {};
}
result.color = Cesium.Property.getValueOrDefault(
this._color,
time,
Cesium.Color.RED,
result.color
);
result.speed = Cesium.Property.getValueOrDefault(
this._speed,
time,
10,
result.speed
);
result.rotate = Cesium.Property.getValueOrDefault(
this._rotate,
time,
true,
result.rotate
);
result.lineBackAlpha = this.lineBackAlpha;
result.frameTime = Cesium.getTimestamp();
return result;
}
equals(other) {
return (
this === other ||
(other instanceof PolylineFlowMultMaterialProperty &&
Cesium.Property.equals(this._color, other._color) &&
Cesium.Property.equals(this._speed, other.speed) &&
Cesium.Property.equals(this._rotate, other.rotate) &&
Cesium.Property.equals(this.lineBackAlpha, other.lineBackAlpha))
);
}
}
Object.defineProperties(PolylineFlowMultMaterialProperty.prototype, {
color: Cesium.createPropertyDescriptor("color"),
speed: Cesium.createPropertyDescriptor("speed"),
rotate: Cesium.createPropertyDescriptor("rotate"),
transparency: Cesium.createPropertyDescriptor("lineBackAlpha"),
});
Cesium.PolylineFlowMultMaterialProperty = PolylineFlowMultMaterialProperty;
Cesium.Material.PolylineFlowMultMaterialProperty = "PolylineFlowMultMaterialProperty";
Cesium.Material.PolylineFlowMultMaterialType = "PolylineFlowMultMaterialType";
Cesium.Material.PolylineFlowMaterialSource = `
uniform vec4 color;
uniform float speed;
uniform float lineBackAlpha;
czm_material czm_getMaterial(czm_materialInput materialInput)
{
czm_material material = czm_getDefaultMaterial(materialInput);
vec2 st = materialInput.st;
// 基础时间轴(控制主光带)
float baseTime = fract(czm_frameNumber * speed / 60.0) * 1.1;
// 高频时间轴(控制高光点)
// float highlightTime = fract(czm_frameNumber * speed * 3.0 / 60.0);
// float highlightTime = fract(abs(speed) * czm_frameNumber * 0.01);
float highlightTime = fract(frameTime / 1000.0 / abs(speed));
float highlightSpacing = 0.3; // 高光点间隔
// 主光带透明度计算
float mainAlpha = smoothstep(baseTime-0.1, baseTime, st.s) * step(-baseTime, -st.s);
// 多高光点计算3个周期性光斑
float highlight11 = smoothstep(highlightTime-0.05, highlightTime, st.s) *
step(-highlightTime, -st.s) *
(1.0 - smoothstep(0.0, highlightSpacing, abs(st.s - highlightTime)));
float highlight21 = smoothstep(highlightTime+highlightSpacing-0.05,
highlightTime+highlightSpacing, st.s) *
step(-(highlightTime+highlightSpacing), -st.s) *
(1.0 - smoothstep(0.0, highlightSpacing, abs(st.s - (highlightTime+highlightSpacing))));
float highlight31 = smoothstep(highlightTime+2.0*highlightSpacing-0.05,
highlightTime+2.0*highlightSpacing, st.s) *
step(-(highlightTime+2.0*highlightSpacing), -st.s) *
(1.0 - smoothstep(0.0, highlightSpacing, abs(st.s - (highlightTime+2.0*highlightSpacing))));
float highlight12 = smoothstep(highlightTime-0.05, highlightTime, 1.0 - st.s) *
step(-highlightTime, -(1.0-st.s)) *
(1.0 - smoothstep(0.0, highlightSpacing, abs(1.0 - st.s - highlightTime)));
float highlight22 = smoothstep(highlightTime+highlightSpacing-0.05,
highlightTime+highlightSpacing, 1.0 - st.s) *
step(-(highlightTime+highlightSpacing),-(1.0 - st.s)) *
(1.0 - smoothstep(0.0, highlightSpacing, abs(1.0-st.s - (highlightTime+highlightSpacing))));
float highlight32 = smoothstep(highlightTime+2.0*highlightSpacing-0.05,
highlightTime+2.0*highlightSpacing, 1.0 - st.s) *
step(-(highlightTime+2.0*highlightSpacing), -(1.0-st.s)) *
(1.0 - smoothstep(0.0, highlightSpacing, abs(1.0 - st.s - (highlightTime+2.0*highlightSpacing))));
float highlight1 = !rotate?highlight11:highlight12;
float highlight2 = !rotate?highlight21:highlight22;
float highlight3 = !rotate?highlight31:highlight32;
// 合并效果
// material.alpha = mainAlpha * 0.7 +
// (highlight1 + highlight2 + highlight3) * 0.5 +
// lineBackAlpha;
material.alpha = (highlight1 + highlight2 + highlight3) * 0.5 +
lineBackAlpha;
material.diffuse = color.rgb; // 高光区变亮
return material;
}
`;
Cesium.Material._materialCache.addMaterial(
Cesium.Material.PolylineFlowMultMaterialType,
{
fabric: {
type: Cesium.Material.PolylineFlowMultMaterialType,
uniforms: {
color: new Cesium.Color(1.0, 1.0, 1.0, 1.0),
speed: 0.1,
rotate: true,
frameTime: Cesium.getTimestamp(),
lineBackAlpha: 0.05,
},
source: Cesium.Material.PolylineFlowMaterialSource,
},
translucent: function (material) {
return true;
},
}
);
}
export { PolylineFlowMult }

View File

@ -2,6 +2,11 @@ import { StreamWall1, StreamWall2 } from './WallMaterialProperty'
import { RadarScan } from './RadarScanMaterialProperty'
import { CustomColorMaterialSource } from './CustomColorMaterialSource'
import { CustomImageMaterialSource } from './CustomImageMaterialSource'
import { FlowLine } from './FlowLineMaterialProperty'
import { PolylineFlow } from './PolylineFlowMaterialProperty'
import { PolylineFlowMult } from './PolylineFlowMultMaterialProperty'
import { FlowDashedLine } from './FlowDashedLineFlowMaterialProperty'
import { LineTexture } from './LineTextureMaterialProperty'
function init_material() {
StreamWall1()
@ -9,6 +14,11 @@ function init_material() {
RadarScan()
CustomColorMaterialSource()
CustomImageMaterialSource()
FlowLine()
PolylineFlow()
PolylineFlowMult()
FlowDashedLine()
LineTexture()
}
export { init_material }
export { init_material }

View File

@ -10,6 +10,7 @@ import { Proj } from './proj'
import { open as projConvertOpen, close as projConvertClose } from './projConvert'
import { open as projectionConvertOpen, close as projectionConvertClose } from './projectionConvert'
import { setActiveViewer, closeRotateAround, closeViewFollow } from '../Global/global'
import FlowPictureMaterialProperty from '../Obj/Materail/FlowPictureMaterialProperty'
class Tools {
/**
@ -123,6 +124,7 @@ class Tools {
var lat = Cesium.Math.toDegrees(cartographic.latitude)
var lng = Cesium.Math.toDegrees(cartographic.longitude)
var alt = cartographic.height < 0 ? 0 : cartographic.height
// var alt = cartographic.height
return {
lng: lng,
lat: lat,
@ -138,7 +140,70 @@ class Tools {
* @param [fractionDigits=2] 保留小数点位数
* @param [ground=true] 是否贴地
* */
computeDistance(positions = [], fractionDigits = 2, ground = true) {
async computeDistance(positions = [], fractionDigits = 2, type = '空间长度') {
if (positions.length < 2) {
return 0
} else {
let length = 0
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
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;
}
return length.toFixed(fractionDigits)
}
}
computeDistance2(positions = [], fractionDigits = 2, ground = true) {
if (positions.length < 2) {
return 0
} else {
@ -163,6 +228,12 @@ class Tools {
}
}
async sampleHeight(p1, index) {
let p2 = await this.sampleHeightMostDetailed([p1])
p1.alt = p2[0].height
return { position: p1, index }
}
/**@description 计算多边形面积
* @method computeArea
* @memberOf Tools
@ -513,8 +584,20 @@ class Tools {
return res
}
getMaterial(color = '#2ab0c2', type = 0) {
getMaterial(color = '#2ab0c2', type = 0, entity = null, newParam = {}) {
let material = ''
let arr = {
'7': 10,
'8': 3,
'9': 4,
'10': 4,
'11': 4,
'12': 2
}
if (entity) {
arr[type + ''] ? (entity.polyline.width = entity.polyline.oriWidth + arr[type + '']) : (entity.polyline.width = entity.polyline.oriWidth)
}
switch (Number(type)) {
case 1: //虚线
@ -528,6 +611,82 @@ class Tools {
glowPower: 0.2,
color: Cesium.Color.fromCssColorString(color),
})
break
case 3: //尾迹光线
material = new Cesium.PolylineFlowMaterialProperty({
color: color,
speed: newParam.rotate ? newParam.speed : 0 - newParam.speed,
rotate: newParam.rotate
})
break
case 4: //多尾迹光线
material = new Cesium.PolylineFlowMultMaterialProperty({
color: color,
speed: newParam.rotate ? newParam.speed : 0 - newParam.speed,
rotate: newParam.rotate
})
break
case 5: //普通流动虚线
// material = new Cesium.FlowDashedLineFlowMaterialProperty({
// color: color,
// uType: 0,
// speed: newParam.rotate ? newParam.speed : 0 - newParam.speed,
// // dashSize: newParam.dashSize,
// space: newParam.space,
// scale: 1.0
// })
// break
case 6: //流动虚线2
let that = this
material = new Cesium.FlowDashedLineFlowMaterialProperty({
color: color,
uType: type == 5 ? 0 : 1,
speed: newParam.rotate ? newParam.speed : 0 - newParam.speed,
// dashSize: newParam.dashSize,
space: newParam.space,
scale: new Cesium.CallbackProperty(function () {
var oriPositions = entity.polyline.positions.getValue();
if (!Cesium.defined(oriPositions)) {
return 1.0;
}
var distance = 0;
for (var i = 0; i < oriPositions.length - 1; ++i) {
distance += Cesium.Cartesian3.distance(oriPositions[i], oriPositions[i + 1]);
}
//屏幕坐标
let point1 = new Cesium.Cartesian2(0, that.sdk.viewer.canvas.clientHeight)
let point2 = new Cesium.Cartesian2(that.sdk.viewer.canvas.clientWidth / 2, that.sdk.viewer.canvas.clientHeight)
var cartesian1 = that.sdk.viewer.scene.pickPosition(point1)
var cartesian2 = that.sdk.viewer.scene.pickPosition(point2)
var distance2 = Cesium.Cartesian3.distance(cartesian1, cartesian2);
let repeatX = distance2 * 2 / distance
return repeatX;
})
})
break
case 7: //流动箭头1
case 8: //流动箭头2
case 9: //流动箭头3
case 10: //流动箭头4
case 11: //流动箭头5
case 12: //流动箭头6
let param = {
color: color,
image: this.getSourceRootPath() + `/img/arrow/${type - 6}.png`,
space: newParam.space,
speed: newParam.speed
}
param.speed = newParam.rotate ? param.speed : 0 - param.speed
this.getFlowTexture(this, param, entity)
break
default:
material = Cesium.Color.fromCssColorString(color)
@ -536,6 +695,128 @@ class Tools {
return material
}
getFlowTexture(that, options, entity) {
const canvasEle = document.createElement('canvas');
const ctx = canvasEle.getContext('2d')
const myImg = new Image()
// myImg.src = that.getSourceRootPath() + '/img/arrow/1.png'
myImg.src = options.image
myImg.onload = function () {
options.space = Math.max(0.1, options.space);
if (options.speed > 0 || options.speed == 0) {
canvasEle.width = myImg.width * (options.space + 1)
canvasEle.height = myImg.height
ctx.drawImage(myImg, myImg.width * (options.space / 2), 0)
} else {
ctx.clearRect(0, 0, canvasEle.width, canvasEle.height);
canvasEle.width = myImg.width * (options.space + 1)
canvasEle.height = myImg.height
ctx.save(); // 保存当前状态
ctx.translate(canvasEle.width / 2, canvasEle.height / 2); // 移动原点至中心
ctx.rotate(Math.PI); // (弧度制)
ctx.translate(-canvasEle.width / 2, -canvasEle.height / 2); // 移回原点
ctx.drawImage(myImg, myImg.width * (options.space / 2), 0)
ctx.restore(); // 恢复状态
}
// let repeat = getRepeat()
// }, false)
// entity.polyline.material.oriRepeat = that.getSceenLine(entity, options, canvasEle)
// entity.polyline.material.oriSpeed = undefined
let beforeSpeed = 0, repeat = 0
entity.polyline.material = new Cesium.LineTextureMaterialProperty(
{
color: options.color,
image: canvasEle,
speed: options.speed,
repeat: new Cesium.CallbackProperty(function () {
var positionProperty = entity.polyline.positions;
var positions = positionProperty.getValue(that.sdk.viewer.clock.currentTime);
if (!Cesium.defined(positions)) {
return new Cesium.Cartesian2(1.0, 1.0);
// return 1.0;
}
var distance = 0;
for (var i = 0; i < positions.length - 1; ++i) {
distance += Cesium.Cartesian3.distance(positions[i], positions[i + 1]);
}
var repeatX = distance / entity.polyline.width.getValue();
// 根据地图缩放程度调整repeatX
var cameraHeight = that.sdk.viewer.camera.positionCartographic.height;
var boundingSphere = new Cesium.BoundingSphere(
new Cesium.Cartesian3(-1000000, 0, 0), // 中心点坐标
500000 // 半径(距离)
);
// 获取绘图缓冲区的宽度和高度(通常是屏幕的分辨率)
var drawingBufferWidth = that.sdk.viewer.canvas.clientWidth;
var drawingBufferHeight = that.sdk.viewer.canvas.clientHeight;
// 使用 getPixelSize 方法获取包围球在屏幕上的像素大小
var groundResolution = that.sdk.viewer.scene.camera.getPixelSize(boundingSphere, drawingBufferWidth, drawingBufferHeight)
let result
if (groundResolution > 700) {
repeatX *= groundResolution / cameraHeight / (options.space * (canvasEle.width / canvasEle.height * 5) + 1);
// if (entity.polyline.material.oriRepeat) {
let speed = repeatX / entity.polyline.oriRepeat
entity.polyline.oriSpeed = speed
entity.polyline.oriRepeatX = repeatX
// } else {
// entity.polyline.material.oriRepeat = repeatX
// }
beforeSpeed = speed
repeat = repeatX
result = new Cesium.Cartesian2(repeatX, speed || 1.0)
} else {
result = new Cesium.Cartesian2(repeat || entity.polyline.oriRepeatX, beforeSpeed || entity.polyline.oriSpeed)
}
return result;
// return repeatX;
})
}
)
let oriRepeat = that.getSceenLine(entity, options, canvasEle)
oriRepeat && (entity.polyline.oriRepeat = oriRepeat)
}
}
/**获取当前满屏横线速度 */
getSceenLine(entity, options, canvasEle) {
let point1 = new Cesium.Cartesian2(0, this.sdk.viewer.canvas.clientHeight)
let point2 = new Cesium.Cartesian2(this.sdk.viewer.canvas.clientWidth / 2, this.sdk.viewer.canvas.clientHeight)
var cartesian1 = this.sdk.viewer.scene.pickPosition(point1)
var cartesian2 = this.sdk.viewer.scene.pickPosition(point2)
var distance = Cesium.Cartesian3.distance(cartesian1, cartesian2);
var repeatX = distance / entity.polyline.width.getValue();
// 根据地图缩放程度调整repeatX
var cameraHeight = this.sdk.viewer.camera.positionCartographic.height;
var boundingSphere = new Cesium.BoundingSphere(
new Cesium.Cartesian3(-1000000, 0, 0), // 中心点坐标
500000 // 半径(距离)
);
// 获取绘图缓冲区的宽度和高度(通常是屏幕的分辨率)
var drawingBufferWidth = this.sdk.viewer.canvas.clientWidth;
var drawingBufferHeight = this.sdk.viewer.canvas.clientHeight;
// 使用 getPixelSize 方法获取包围球在屏幕上的像素大小
var groundResolution = this.sdk.viewer.scene.camera.getPixelSize(boundingSphere, drawingBufferWidth, drawingBufferHeight)
// repeatX *= groundResolution / cameraHeight / ((myImg.width / myImg.height * 5) + 1);
if (groundResolution > 700) {
repeatX *= groundResolution / cameraHeight / (options.space * (canvasEle.width / canvasEle.height * 5) + 1);
} else {
repeatX = undefined;
}
return repeatX
}
/*创建直箭头图片*/
create_arrow1_picture(color) {
let canvas = new fabric.Canvas('canvas')
@ -982,8 +1263,8 @@ class Tools {
/**
* @desc cmyk转rbg
* @param {*} color
* @returns
* @param {*} color
* @returns
*/
cmykToRgb(color) {
let { c, m, y, k } = color
@ -1067,6 +1348,55 @@ class Tools {
return `${year}${month}${day}${hours}${minutes}${seconds}${milliseconds}`;
}
replaceHost(url, host) {
let newUrl = url
if (!url || !host) {
return url
}
try {
if (!url.startsWith("http")) {
//说明是本地的json在磁盘中存在的
if (!url.includes(":")) {
if (this.options.host) {
let o = new URL(url, this.options.host)
newUrl = o.href
}
}
return newUrl
}
else {
// 移除可能的用户名:密码前缀
const authRegex = /^[^@]+@/;
if (authRegex.test(url)) {
url = url.replace(authRegex, '');
}
// 添加协议前缀(如果没有)
if (!/^[a-z]+:\/\//i.test(url)) {
url = 'http://' + url;
}
const parsedUrl = new URL(url);
const parsedUrl2 = new URL(host);
let hostname = parsedUrl.hostname;
let port = parsedUrl.port;
// 处理IPv6地址如果有括号
if (hostname.startsWith('[') && hostname.endsWith(']')) {
hostname = hostname.slice(1, -1);
}
if ((hostname === 'localhost' || hostname === '127.0.0.1') && parseInt(port, 10) !== 55110) {
parsedUrl.port = parsedUrl2.port
parsedUrl.protocol = parsedUrl2.protocol
newUrl = parsedUrl.toString()
}
return newUrl
}
} catch (error) {
return newUrl
}
}
}

View File

@ -25,6 +25,7 @@ import {
} from '../Global/global'
import { syncSplitData, setActiveId } from '../Global/SplitScreen'
import { apiQueryGoodsList } from '../Tools/getGoodsList'
import YJColorPicker from "../Obj/Element/yj-color-picker";
// window.check = check
class YJEarth {
@ -270,7 +271,7 @@ class YJEarth {
this.viewer.scene.screenSpaceCameraController.enableCollisionDetection = true //true 禁止 false 允许
createCluster(this.viewer)
keyboardMapRoamingInit(this.viewer)
Cesium.viewerCesiumNavigationMixin(this.viewer, {
let a = Cesium.viewerCesiumNavigationMixin(this.viewer, {
// 修改重置视图的tooltip
resetTooltip: '重置视图',
// 修改放大按钮的tooltip

File diff suppressed because one or more lines are too long

View File

@ -1029,21 +1029,152 @@
line-height: 18px;
}
.YJ-custom-base-dialog .ew-color-picker>.ew-color-dropbtns>.ew-color-input {
color: #000000;
width: 60%;
background-color: #00000000;
margin-top: 1px;
.YJ-custom-base-dialog .ew-color-picker {
background: linear-gradient(0deg, var(--color-sdk-bg-gradual)), rgba(0, 0, 0, 0.6);
border-image: linear-gradient(to bottom, var(--color-sdk-gradual)) 1;
padding: 5px;
}
.YJ-custom-base-dialog .ew-color-picker>.ew-color-dropbtns>.ew-color-dropbtngroup {
.YJ-custom-base-dialog .ew-color-picker>.ew-color-picker-content {
margin-bottom: 10px;
}
.YJ-custom-base-dialog .ew-color-picker>.ew-color-picker-content>.ew-color-panel {
width: 302px;
}
.YJ-custom-base-dialog .ew-color-picker> .ew-color-input {
margin-top: 1px;
font-size: 14px;
background-color: rgba(0, 0, 0, 0.5);
border: 1px solid rgba(var(--color-sdk-base-rgb), 0.5);
border-radius: 5px;
line-height: 32px;
height: 32px;
color: var(--color-sdk-auxiliary-public);
box-sizing: border-box;
padding: 0px 10px;
}
.YJ-custom-base-dialog .ew-color-picker .icon-pen-box {
display: inline-block;
/* cursor: pointer; */
cursor: no-drop;
width: 24px;
height: 24px;
text-align: center;
line-height: 24px;
}
.YJ-custom-base-dialog .ew-color-picker .icon-pen-box .icon-pen {
margin: 0;
}
.YJ-custom-base-dialog .ew-color-picker .icon-pen-box:hover .icon-pen {
fill: rgba(var(--color-sdk-base-rgb), 1);
margin: 0;
}
.YJ-custom-base-dialog .ew-color-picker .color-alpha {
margin-left: 6px;
display: inline-block;
}
.YJ-custom-base-dialog .ew-color-picker .color-alpha>input {
font-weight: 400;
font-family: Arial;
font-size: 14px;
}
.YJ-custom-base-dialog .ew-color-picker>.ew-pre-define-color-container {
width: 324px;
}
.YJ-custom-base-dialog .ew-color-picker>.ew-pre-define-color-container>.ew-pre-define-color {
width: 22px;
height: 22px;
margin: 0 0 8px 8px;
border: 1px solid #9b979b;
}
.YJ-custom-base-dialog .ew-color-picker>.ew-pre-define-color-container>.ew-pre-define-color:nth-child(11n+1) {
width: 22px;
height: 22px;
margin: 0 0 8px 0;
}
.YJ-custom-base-dialog .ew-color-picker>.ew-pre-define-color-container>.ew-pre-define-color-active {
border-color: #ffffff;
-webkit-box-shadow: unset !important;
box-shadow: unset !important;
}
.YJ-custom-base-dialog .ew-color-picker>.yj-pre-collect-color-container {
margin-top: 8px;
width: 324px;
}
.YJ-custom-base-dialog .ew-color-picker>.yj-pre-collect-color-container>.yj-pre-collect-color {
position: relative;
width: 22px;
height: 22px;
float: left;
margin: 0 0 8px 8px;
border-radius: 4px;
border: 1px solid #9b979b;
outline: none;
text-align: center;
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==");
}
.YJ-custom-base-dialog .ew-color-picker>.yj-pre-collect-color-container>.yj-pre-collect-color:nth-child(11n+1) {
margin: 0 0 8px 0;
}
.YJ-custom-base-dialog .ew-color-picker>.yj-pre-collect-color-container>.yj-pre-collect-color.add,
.YJ-custom-base-dialog .ew-color-picker>.yj-pre-collect-color-container>.yj-pre-collect-color.subtract {
border-color: rgba(var(--color-sdk-base-rgb), 0.2);
background: unset;
}
.YJ-custom-base-dialog .ew-color-picker>.yj-pre-collect-color-container>.yj-pre-collect-color.add:hover,
.YJ-custom-base-dialog .ew-color-picker>.yj-pre-collect-color-container>.yj-pre-collect-color.subtract:hover {
border-color: rgba(var(--color-sdk-base-rgb), 0.4);
}
.YJ-custom-base-dialog .ew-color-picker>.yj-pre-collect-color-container svg,
.YJ-custom-base-dialog .ew-color-picker>.yj-pre-collect-color-container> svg {
margin: 0;
}
.YJ-custom-base-dialog .ew-color-picker>.yj-pre-collect-color-container>.yj-pre-collect-color-active {
border-color: #ffffff !important;
-webkit-box-shadow: unset !important;
box-shadow: unset !important;
}
.YJ-custom-base-dialog .ew-color-picker>.yj-pre-collect-color-container>.yj-pre-collect-color>.yj-pre-define-color-item.subtract-btn,
.YJ-custom-base-dialog .ew-color-picker>.yj-pre-collect-color-container>.yj-pre-collect-color>.yj-pre-define-color-item {
width: 100%;
height: 100%;
border-radius: 3px;
cursor: pointer;
}
.YJ-custom-base-dialog .ew-color-picker>.yj-pre-collect-color-container>.yj-pre-collect-color>.yj-pre-define-color-item.subtract-btn {
position: absolute;
top: 0;
left: 0;
}
.YJ-custom-base-dialog .ew-color-picker>.yj-pre-collect-color-container>.yj-pre-collect-color:hover {
opacity: .8;
}
.YJ-custom-base-dialog .ew-color-picker .ew-color-dropbtngroup {
display: flex;
}
.YJ-custom-base-dialog .ew-color-picker>.ew-color-dropbtns>.ew-color-dropbtngroup button {
background: unset;
border: 1px solid #dcdfe6;
color: #000;
.YJ-custom-base-dialog .ew-color-picker .ew-color-dropbtngroup button {
padding: 5px 10px 4px 10px;
}
.YJ-custom-base-dialog .ew-color-picker .ew-color-dropbtngroup button.ew-color-clear {
margin-right: 8px;
}
.YJ-custom-base-dialog .ew-color-picker-box {
@ -1051,9 +1182,19 @@
border-color: #ffffff;
}
.YJ-custom-base-dialog .ew-color-picker-box>.ew-color-picker-no,
.YJ-custom-base-dialog .ew-color-picker-box>.ew-color-picker-arrow {
border: 1px solid rgba(var(--color-sdk-auxiliary), 0.5);
;
width: 21px !important;
height: 21px !important;
line-height: 18px !important;
font-size: 14px;
}
.YJ-custom-base-dialog .ew-color-picker-box>.ew-color-picker-no svg,
.YJ-custom-base-dialog .ew-color-picker-box>.ew-color-picker-arrow svg {
margin: 0;
fill: rgba(var(--color-sdk-auxiliary), 1)
}
.YJ-custom-base-dialog .ew-color-picker-box>.ew-color-picker-arrow>.ew-color-picker-arrow-right,
@ -1068,6 +1209,15 @@
transform: rotate(-45deg);
}
.YJ-custom-base-dialog .ew-color-picker .ew-color-dropbtns{
display: flex;
align-items: center;
}
.YJ-custom-base-dialog .ew-color-picker svg{
margin: 0;
}
/* 滑块样式 */
.DIV_cy_slider {
width: 100%;
@ -1524,7 +1674,7 @@
.YJ-custom-base-dialog>.content .cy_datalist dl dd.active {
color: rgba(var(--color-sdk-base-rgb)) !important;
background-color: rgba(var(--color-sdk-base-rgb), 0.2);
/* background-color: rgba(var(--color-sdk-base-rgb), 0.2); */
}
.YJ-custom-base-dialog>.content .cy_datalist dl dd.active svg {
@ -2564,6 +2714,122 @@
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: 13px;
margin-right: 7px;
}
.YJ-custom-base-dialog.polyline>.content>div .input-select-line-type-box .cy_datalist i.line {
border: 1px solid rgba(var(--color-sdk-base-rgb), 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(var(--color-sdk-base-rgb), 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(var(--color-sdk-base-rgb), 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(var(--color-sdk-base-rgb), 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(var(--color-sdk-base-rgb), 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);
background-size: cover;
background-position: center;
}
.YJ-custom-base-dialog.polyline>.content>div .input-select-line-type-box .cy_datalist i.pic-line2 {
background: url(../../img/arrow/2.png);
background-size: cover;
background-position: center;
}
.YJ-custom-base-dialog.polyline>.content>div .input-select-line-type-box .cy_datalist i.pic-line3 {
background: url(../../img/arrow/3.png);
background-size: cover;
background-position: center;
}
.YJ-custom-base-dialog.polyline>.content>div .input-select-line-type-box .cy_datalist i.pic-line4 {
background: url(../../img/arrow/4.png) ;
background-size: cover;
background-position: center;
}
.YJ-custom-base-dialog.polyline>.content>div .input-select-line-type-box .cy_datalist i.pic-line5 {
background: url(../../img/arrow/5.png);
background-size: cover;
background-position: center;
}
.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 {
width: 500px;
@ -2982,9 +3248,9 @@
/* 等高线 */
.YJ-custom-base-dialog.contour>.content {
width: 350px;
width: 525px;
}
.YJ-custom-base-dialog.contour>.content .label {
flex: 0 0 56px;
flex: unset;
}

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" >
<path d="M11.0843 0.555313L11.0843 0.555313C10.6784 0.149383 10.0203 0.149383 9.61434 0.555313L5.81934 4.35031L2.02434 0.555313C1.61841 0.149383 0.960265 0.149383 0.554336 0.555313L0.554336 0.555313C0.148407 0.961242 0.148407 1.61938 0.554336 2.02531L4.34934 5.82031L0.554336 9.61531C0.148407 10.0212 0.148407 10.6794 0.554336 11.0853L0.554336 11.0853C0.960265 11.4912 1.61841 11.4912 2.02434 11.0853L5.81934 7.29031L9.61434 11.0853C10.0203 11.4912 10.6784 11.4912 11.0843 11.0853L11.0843 11.0853C11.4903 10.6794 11.4903 10.0212 11.0843 9.61531L7.28934 5.82031L11.0843 2.02531C11.4903 1.61938 11.4903 0.961242 11.0843 0.555313Z">
</path>
<path fill="rgba(0, 0, 0, 0.5)" d="M10.9076 0.732089M10.9076 0.732089Q10.6763 0.500866 10.3493 0.500866Q10.0223 0.500866 9.79111 0.732089L5.81934 4.70387L1.84756 0.732089C1.53926 0.423791 1.03941 0.423791 0.731113 0.732089C0.422814 1.04039 0.422814 1.54024 0.731113 1.84854L4.70289 5.82031L0.731113 9.79209Q0.499889 10.0233 0.499889 10.3503Q0.499889 10.6773 0.731113 10.9085Q0.962336 11.1398 1.28934 11.1398Q1.61634 11.1398 1.84756 10.9085L5.81934 6.93676L9.79111 10.9085Q10.0223 11.1398 10.3493 11.1398Q10.6763 11.1398 10.9076 10.9085Q11.1388 10.6773 11.1388 10.3503Q11.1388 10.0233 10.9076 9.79209L6.93578 5.82031L10.9076 1.84854Q11.1388 1.61731 11.1388 1.29031Q11.1388 0.963312 10.9076 0.732089ZM11.2611 0.378536Q11.6388 0.756205 11.6388 1.29031Q11.6388 1.82442 11.2611 2.20209L7.46611 5.99709L7.28934 5.82031L7.46611 5.64354L11.2611 9.43854Q11.6388 9.8162 11.6388 10.3503Q11.6388 10.8844 11.2611 11.2621Q10.8834 11.6398 10.3493 11.6398Q9.81523 11.6398 9.43756 11.2621L5.64256 7.46709L5.81934 7.29031L5.99611 7.46709L2.20111 11.2621Q1.82344 11.6398 1.28934 11.6398Q0.755229 11.6398 0.377559 11.2621Q-0.000110999 10.8844 -0.000111014 10.3503Q-0.000110984 9.81621 0.377559 9.43854L4.17256 5.64354L4.34934 5.82031L4.17256 5.99709L0.377559 2.20209C-0.126001 1.69853 -0.126001 0.882096 0.377559 0.378536C0.88112 -0.125024 1.69755 -0.125025 2.20111 0.378536L5.99611 4.17354L5.81934 4.35031L5.64256 4.17354L9.43756 0.378536Q9.81523 0.000865549 10.3493 0.000865549Q10.8834 0.000865579 11.2611 0.378536L11.2611 0.378536Z">
</path>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 16 16" >
<path d="M15.5219 2.5188L13.4796 0.476487C13.1732 0.170059 12.7657 0 12.3309 0C11.8977 0 11.4886 0.168455 11.1822 0.476487L1.60273 10.0864L1.57866 10.1105L0 16L5.92801 14.4117L15.5219 4.81781C15.8299 4.50978 16 4.10228 16 3.66911C15.9984 3.23433 15.8299 2.82683 15.5219 2.5188ZM2.79154 14.2818L1.71824 13.2085L2.24125 11.2576L4.74401 13.7604L2.79154 14.2818ZM5.66169 13.3529L2.65998 10.3511L9.72546 3.2584L12.7416 6.27294L5.66169 13.3529ZM14.8593 4.15361L13.9208 5.09215L10.9046 2.07761L11.8448 1.13747C11.9667 1.01394 12.1448 0.943347 12.3293 0.943347C12.5154 0.943347 12.6935 1.01394 12.8154 1.13747L14.8577 3.18139C14.9877 3.31134 15.0599 3.48461 15.0599 3.6675C15.0615 3.8504 14.9909 4.02366 14.8593 4.15361Z" >
</path>
</svg>

After

Width:  |  Height:  |  Size: 837 B

BIN
static/img/arrow/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
static/img/arrow/2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
static/img/arrow/3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

BIN
static/img/arrow/333.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
static/img/arrow/4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
static/img/arrow/444.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
static/img/arrow/5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
static/img/arrow/555.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

BIN
static/img/arrow/6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Some files were not shown because too many files have changed in this diff Show More