Compare commits

...

11 Commits

17 changed files with 1724 additions and 176 deletions

View File

@ -135,6 +135,7 @@ const open = async (sdk, options = {}, _Dialog = {}) => {
pitch: viewer.camera.pitch, pitch: viewer.camera.pitch,
roll: viewer.camera.roll roll: viewer.camera.roll
} }
tools.message({text: '操作成功'})
}) })
let totalTimeElm = contentElm.querySelector("input[name='totalTime']") let totalTimeElm = contentElm.querySelector("input[name='totalTime']")

View File

@ -100,14 +100,14 @@ function MouseRightMenu(sdk, status, callBack) {
that = sdk.entityMap.get(entityId) that = sdk.entityMap.get(entityId)
} }
if (that && that.picking) { // if (that && that.picking) {
addedMenu = ` // addedMenu = `
<span class="divider" style="display: block;border-top: 1px solid #ddd;margin: 5px;"></span> // <span class="divider" style="display: block;border-top: 1px solid #ddd;margin: 5px;"></span>
<ul class="added" style="list-style: none;padding: 0;margin: 0;font-size: 12px;"> // <ul class="added" style="list-style: none;padding: 0;margin: 0;font-size: 12px;">
<li style="padding: 3px 10px;cursor: pointer;">属性</li> // <li style="padding: 3px 10px;cursor: pointer;">属性</li>
</ul> // </ul>
` // `
} // }
let position = tools.cartesian3Towgs84(cartesian, sdk.viewer) let position = tools.cartesian3Towgs84(cartesian, sdk.viewer)
menuElm = document.createElement('div') menuElm = document.createElement('div')
menuElm.id = 'custom-menu' menuElm.id = 'custom-menu'
@ -121,9 +121,6 @@ function MouseRightMenu(sdk, status, callBack) {
<ul class="base" style="list-style: none;padding: 0;margin: 0;font-size: 12px;"> <ul class="base" style="list-style: none;padding: 0;margin: 0;font-size: 12px;">
<li style="padding: 3px 10px;cursor: pointer;">绕鼠标点旋转</li> <li style="padding: 3px 10px;cursor: pointer;">绕鼠标点旋转</li>
</ul> </ul>
<ul class="base" style="list-style: none;padding: 0;margin: 0;font-size: 12px;">
<li style="padding: 3px 10px;cursor: pointer;">文本框</li>
</ul>
${addedMenu} ${addedMenu}
` `
_element.appendChild(menuElm) _element.appendChild(menuElm)

View File

@ -186,7 +186,7 @@ import Frustum from '../Obj/AirLine/frustum'
import DrawTakeOff from '../Obj/AirLine/DrawTakeOff' import DrawTakeOff from '../Obj/AirLine/DrawTakeOff'
import FlowLine from '../Obj/Base/FlowLine' import FlowLine from '../Obj/Base/FlowLine'
import Sunshine from '../Global/efflect/Sunshine' import Sunshine from '../Global/efflect/Sunshine'
import Road2 from '../Obj/Base/RoadObject' // import Road2 from '../Obj/Base/RoadObject'
import TextBox from '../Obj/Base/TextBox' import TextBox from '../Obj/Base/TextBox'
import BatchModel from '../Obj/Base/BatchModel' import BatchModel from '../Obj/Base/BatchModel'
@ -261,7 +261,7 @@ if (!window.YJ) {
// GenerateRoute // GenerateRoute
Dialog, Dialog,
FlowLine, FlowLine,
Road2, // Road2,
TextBox, TextBox,
BatchModel BatchModel
}, },

View File

@ -550,7 +550,7 @@ class Model2 extends BaseModel {
set labelShow(v) { set labelShow(v) {
this.options.label.show = v this.options.label.show = v
if (this.show) { if (this.show && !this.showView || this.showView == 3) {
this.label.show = v this.label.show = v
} }
else { else {

View File

@ -552,31 +552,31 @@ class BillboardObject extends Base {
value: '链接', value: '链接',
key: 'link' key: 'link'
}, },
{
name: 'IP摄像头',
value: 'IP摄像头',
key: 'camera'
},
// { // {
// name: 'ISC摄像头', // name: 'IP摄像头',
// value: 'ISC摄像头', // value: 'IP摄像头',
// key: 'isc' // key: 'camera'
// },
// // {
// // name: 'ISC摄像头',
// // value: 'ISC摄像头',
// // key: 'isc'
// // },
// // {
// // name: '传感器',
// // value: '传感器',
// // key: 'sensor'
// // },
// {
// name: '全景图',
// value: '全景图',
// key: 'vr'
// }, // },
// { // {
// name: '传感器', // name: '物资',
// value: '传感器', // value: '物资',
// key: 'sensor' // key: 'goods'
// }, // }
{
name: '全景图',
value: '全景图',
key: 'vr'
},
{
name: '物资',
value: '物资',
key: 'goods'
}
] ]
} }

View File

@ -181,7 +181,7 @@ class CircleDiffuse extends Base {
} }
that.sdk._entityZIndex++ that.sdk._entityZIndex++
if (that.sdk.viewer._element.className === 'cesium-viewer 2d') { if (that.sdk.viewer._element.className === 'cesium-viewer 2d') {
that.entity.ellipse.height = 1000000 that.entity.ellipse.height = 1
} }
CircleDiffuse.createLabel(that) CircleDiffuse.createLabel(that)
syncData(that.sdk, that.options.id) syncData(that.sdk, that.options.id)

View File

@ -333,7 +333,7 @@ class CircleObject extends Base {
} }
set labelShow(v) { set labelShow(v) {
this.options.label.show = v this.options.label.show = v
if (this.show && (!this.showView || this.showView == 3)) { if (this.show && !this.showView || this.showView == 3) {
this.label.show = v this.label.show = v
} }
else { else {

View File

@ -1384,10 +1384,10 @@ class CurvelineObject extends Base {
that.options.lengthByMeter = res that.options.lengthByMeter = res
that.lengthUnit = that.options['length-unit'] that.lengthUnit = that.options['length-unit']
syncData(that.sdk, that.options.id) syncData(that.sdk, that.options.id)
if (that.options.show) {
setSplitDirection(0, that.options.id)
}
}) })
if (that.options.show) {
setSplitDirection(0, that.options.id)
}
// if (this.options['nose-to-tail']) { // if (this.options['nose-to-tail']) {
// let array = [] // let array = []

View File

@ -162,6 +162,7 @@ class FlyRoam extends Base {
pitch: viewer.camera.pitch, pitch: viewer.camera.pitch,
roll: viewer.camera.roll roll: viewer.camera.roll
} }
this.message({text: '操作成功'})
}) })
let totalTimeElm = contentElm.querySelector("input[name='totalTime']") let totalTimeElm = contentElm.querySelector("input[name='totalTime']")

View File

@ -17,6 +17,18 @@ function html(that) {
</div> </div>
<span class="custom-divider"></span> <span class="custom-divider"></span>
<div class="div-item"> <div class="div-item">
<div class="row">
<div class="col" mode="0">
<button class="anchor btn">调整锚点</button>
</div>
<div class="col mode-box">
<span class="label" style="flex: unset;">军标模式</span>
<div class="mode"></div>
</div>
</div>
</div>
<span class="custom-divider" mode="0"></span>
<div class="div-item" mode="0">
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<span class="label">旋转角度</span> <span class="label">旋转角度</span>
@ -50,11 +62,11 @@ function html(that) {
</div> </div>
</div> </div>
<span class="custom-divider"></span> <span class="custom-divider"></span>
<div class="div-item"> <div class="div-item" mode="0">
<div class="row"> <div class="row">
<div class="col" style="flex: 5;"> <div class="col" style="flex: 5;">
<span class="label">文字内容</span> <span class="label">文字内容</span>
<input class="input" type="text" @model="textValue" maxlength="30"> <input class="input" type="text" @model="textValue">
</div> </div>
<div class="col"> <div class="col">
<button class="btn" @click="textPosPick">设置位置</span> <button class="btn" @click="textPosPick">设置位置</span>
@ -70,9 +82,9 @@ function html(that) {
<div class="textColor"></div> <div class="textColor"></div>
</div> </div>
<div class="col"> <div class="col">
<span class="label">字大小</span> <span class="label">字大小</span>
<div class="input-number input-number-unit-2"> <div class="input-number input-number-unit-2">
<input class="input" type="number" title="" min="1" max="99" @model="textFontSize"> <input class="input" type="number" title="" min="1" max="99" step="1" @model="textFontSize">
<span class="unit">px</span> <span class="unit">px</span>
<span class="arrow"></span> <span class="arrow"></span>
</div> </div>
@ -101,6 +113,98 @@ function html(that) {
</div> </div>
</div> </div>
</div> </div>
<div class="div-item" mode="1">
<div class="row">
<div class="col height-mode-box" style="flex: 0 0 155px;margin-right: 10px;">
<span class="label" style="flex: 0 0 56px;">高度模式</span>
<div class="height-mode"></div>
</div>
<div class="col" style="margin: 0 10px;">
<div class="height-box" style="display: flex; align-items: center;">
<span class="label" style="flex: 0 0 56px;">高度</span>
<div class="input-number input-number-unit-1">
<input class="input height" type="number" title="" min="-9999999" max="999999999">
<span class="unit">m</span>
<span class="arrow"></span>
</div>
</div>
</div>
<div class="col" style="margin-left: 10px;">
<span class="label">图标倍数</span>
<div class="input-number input-number-unit-1">
<input class="input" type="number" title="" data-min="0.1" max="99" @model="billboardScale">
<span class="unit">倍</span>
<span class="arrow"></span>
</div>
</div>
</div>
<div class="row">
<div class="col" style="flex: 0 0 155px;margin-right: 10px;">
<span class="label">视野缩放</span>
<input class="btn-switch" type="checkbox" @model="billboardScaleByDistance">
</div>
<div class="col" style="margin: 0 10px;">
<span class="label">最近距离</span>
<div class="input-number input-number-unit-1">
<input class="input" type="number" title="" min="1" max="99999999" @model="billboardNear">
<span class="unit">m</span>
<span class="arrow"></span>
</div>
</div>
<div class="col" style="margin-left: 10px;">
<span class="label">最远距离</span>
<div class="input-number input-number-unit-1">
<input class="input" type="number" title="" min="1" max="99999999" @model="billboardFar">
<span class="unit">m</span>
<span class="arrow"></span>
</div>
</div>
</div>
<h4>文字设置</h4>
<div class="row">
<div class="col" style="flex: 0 0 80px;margin: 0 10px 0 0;;">
<span class="label" style="flex: none;">显隐</span>
<input class="btn-switch" type="checkbox" @model="labelShow">
</div>
<div class="col font-select-box" style="margin: 0 0px;flex: 0 0 160px;">
<span class="label" style="flex: none;">字体选择</span>
<div class="input input-select font-select"></div>
</div>
<div class="col" style="margin: 0 10px;">
<span class="label">文字大小</span>
<div class="input-number input-number-unit-2">
<input class="input label-font-size" type="number" title="" min="1" max="99" step="1" style="width: 70px;">
<span class="unit">px</span>
<span class="arrow"></span>
</div>
</div>
<div class="col" style="margin-left: 10px;">
<span class="label">文字颜色</span>
<div class="labelColor"></div>
</div>
</div>
<div class="row" style="justify-content: flex-start;">
<div class="col font-select-box" style="margin: 0 0px;flex: 0 0 70px;">
<span class="label" style="flex: none;">文字偏移</span>
</div>
<div class="col" style="margin: 0 10px;flex: 0 0 100px;">
<span class="label">x</span>
<div class="input-number input-number-unit-2">
<input class="input label-offset-x" type="number" title="" min="-999" max="999" step="1">
<span class="unit">px</span>
<span class="arrow"></span>
</div>
</div>
<div class="col" style="margin: 0 10px;flex: 0 0 100px;">
<span class="label">y</span>
<div class="input-number input-number-unit-2">
<input class="input label-offset-y" type="number" title="" min="-999" max="999" step="1">
<span class="unit">px</span>
<span class="arrow"></span>
</div>
</div>
</div>
</div>
<span class="custom-divider"></span> <span class="custom-divider"></span>
<div class="div-item attribute-info"> <div class="div-item attribute-info">
<div class="row"> <div class="row">

File diff suppressed because it is too large Load Diff

View File

@ -893,6 +893,7 @@ class PolylineObject extends Base {
}) })
} }
} }
get labelBackgroundColorEnd() { get labelBackgroundColorEnd() {
return this.options.label.backgroundColor[1] return this.options.label.backgroundColor[1]
} }
@ -1410,10 +1411,10 @@ class PolylineObject extends Base {
that.options.lengthByMeter = res that.options.lengthByMeter = res
that.lengthUnit = that.options['length-unit'] that.lengthUnit = that.options['length-unit']
syncData(that.sdk, that.options.id) syncData(that.sdk, that.options.id)
if (that.options.show) {
setSplitDirection(0, that.options.id)
}
}) })
if (that.options.show) {
setSplitDirection(0, that.options.id)
}
// if (this.options['nose-to-tail']) { // if (this.options['nose-to-tail']) {

View File

@ -138,7 +138,7 @@ class RadarScan extends Base {
}) })
that.sdk._entityZIndex++ that.sdk._entityZIndex++
if (that.sdk.viewer._element.className === 'cesium-viewer 2d') { if (that.sdk.viewer._element.className === 'cesium-viewer 2d') {
that.entity.ellipse.height = 1000000 that.entity.ellipse.height = 1
} }
RadarScan.createLabel(that) RadarScan.createLabel(that)
syncData(that.sdk, that.options.id) syncData(that.sdk, that.options.id)

View File

@ -78,6 +78,7 @@ class Dialog extends BaseDialog {
this.footAppChild(div) this.footAppChild(div)
if (this.options.updateHeightCallBack) { if (this.options.updateHeightCallBack) {
let heightBtn = document.createElement('button'); let heightBtn = document.createElement('button');
heightBtn.className = 'update-height'
heightBtn.innerHTML = '<svg class="icon-updateheigh"><use xlink:href="#yj-icon-updateheight"></use></svg>更新高程' heightBtn.innerHTML = '<svg class="icon-updateheigh"><use xlink:href="#yj-icon-updateheight"></use></svg>更新高程'
heightBtn.style.width = 'auto' heightBtn.style.width = 'auto'
heightBtn.addEventListener('click', () => { heightBtn.addEventListener('click', () => {

View File

@ -50,7 +50,8 @@ export default class CircleDiffuseMaterialProperty {
let color = this.colors[ratio[i]] let color = this.colors[ratio[i]]
_sourceColor = _sourceColor + ` _sourceColor = _sourceColor + `
if(dis < float(${Number(ratio[i]) / 2})) { if(dis < float(${Number(ratio[i]) / 2})) {
material.diffuse = 1.5 * vec4(${color.red},${color.green},${color.blue},${color.alpha}).rgb; material.diffuse = vec4(0.0,0.0,0.0,0.0).rgb;
material.emission = 1.0 * vec4(${color.red},${color.green},${color.blue},${color.alpha}).rgb;
} }
` `
} }

View File

@ -1493,6 +1493,23 @@ class Tools {
} }
} }
message(option={}) {
let type = option.type || 'success'
let text = option.text || ''
let duration = option.duration || 1500
let message = document.getElementById('YJ-custom-message');
if (message) {
document.body.removeChild(message)
}
message = document.createElement('div')
message.id = 'YJ-custom-message'
message.innerHTML = `
<i><?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1755929961282" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5064" width="16" height="16" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M874.119618 149.859922A510.816461 510.816461 0 0 0 511.997 0.00208a509.910462 509.910462 0 0 0-362.119618 149.857842c-199.817789 199.679789-199.817789 524.581447 0 724.260236a509.969462 509.969462 0 0 0 362.119618 149.857842A508.872463 508.872463 0 0 0 874.119618 874.120158c199.836789-199.679789 199.836789-524.581447 0-724.260236zM814.94268 378.210681L470.999043 744.132295a15.359984 15.359984 0 0 1-5.887994 4.095996c-1.751998 1.180999-2.913997 2.362998-5.276994 2.913997a34.499964 34.499964 0 0 1-13.469986 2.914997 45.547952 45.547952 0 0 1-12.897986-2.303998l-4.095996-2.363997a45.291952 45.291952 0 0 1-7.009992-4.095996l-196.902793-193.789796a34.126964 34.126964 0 0 1-10.555989-25.186973c0-9.37399 3.583996-18.74698 9.98399-25.186974a36.429962 36.429962 0 0 1 50.372947 0l169.98382 167.423824L763.389735 330.220732a37.059961 37.059961 0 0 1 50.371947-1.732998 33.647965 33.647965 0 0 1 11.165988 25.186973 35.544963 35.544963 0 0 1-9.98399 24.575974v-0.04z m0 0" fill="#52C41A" p-id="5065"></path></svg></i>${text}
`
document.body.appendChild(message)
message.classList.add(type)
}
} }

View File

@ -2743,7 +2743,7 @@
/* 贴地svg */ /* 贴地svg */
.YJ-custom-base-dialog.ground-svg>.content { .YJ-custom-base-dialog.ground-svg>.content {
width: 535px; width: 560px;
} }
.YJ-custom-base-dialog.ground-svg>.content>div .div-item:nth-of-type(2) .row .col .label { .YJ-custom-base-dialog.ground-svg>.content>div .div-item:nth-of-type(2) .row .col .label {
@ -3120,7 +3120,7 @@
} }
/* 文本框 */ /* 文本框 */
.popup-textarea{ .popup-textarea {
/* width: 212px; */ /* width: 212px; */
width: 161px; width: 161px;
/* height: 154px; */ /* height: 154px; */
@ -3140,21 +3140,22 @@
border: unset!important; border: unset!important;
color: #fff; color: #fff;
} }
.popup-textarea textarea::-webkit-scrollbar { .popup-textarea textarea::-webkit-scrollbar {
width: 8px!important; width: 8px !important;
/* height: 8px!important; */ /* height: 8px!important; */
} }
.popup-textarea textarea::-webkit-scrollbar-thumb { .popup-textarea textarea::-webkit-scrollbar-thumb {
border-radius: 5px!important; border-radius: 5px !important;
-webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2)!important; -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2) !important;
background-color: rgba(var(--color-sdk-base-rgb))!important; background-color: rgba(var(--color-sdk-base-rgb)) !important;
} }
.popup-textarea textarea::-webkit-scrollbar-track { .popup-textarea textarea::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2)!important; -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2) !important;
border-radius: 5px!important; border-radius: 5px !important;
background-color: rgba(var(--color-sdk-base-rgb), 0.1)!important; background-color: rgba(var(--color-sdk-base-rgb), 0.1) !important;
} }
/* 贴地图片 */ /* 贴地图片 */
@ -3762,4 +3763,56 @@
.billboard-attribute-box .table .table-body .tr:first-child { .billboard-attribute-box .table .table-body .tr:first-child {
border-top: none; border-top: none;
} }
#YJ-custom-message {
/* 固定在顶部中央 */
position: fixed;
top: 0;
left: 50%;
transform: translate(-50%, 0%);
/* 初始位置在屏幕顶部外 */
/* 样式美化 */
display: flex;
border-radius: 4px;
font-size: 14px;
padding: 15px 20px;
width: 380px;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
z-index: 9999999;
/* 动画定义 */
animation: YJ-custom-message-slideDown 0.5s forwards,
YJ-custom-message-fadeOut 0.5s 1500ms forwards;
}
#YJ-custom-message i {
margin: 2px 10px 0 0;
display: flex;
align-items: center;
width: 16px;
}
#YJ-custom-message.success {
background-color: #f0f9eb;
color: rgb(82, 196, 26);
}
/* 滑入动画 */
@keyframes YJ-custom-message-slideDown {
to {
top: 20px;
/* 移动到屏幕顶部 */
}
}
/* 淡出动画 - 1500ms后执行 */
@keyframes YJ-custom-message-fadeOut {
to {
opacity: 0;
top: -200px
/* 移回顶部外 */
}
}