Merge branch 'master' of http://xny.yj-3d.com:3000/zh/sdk4.0_new
This commit is contained in:
@ -15,7 +15,7 @@ let activeHeightElm = null;
|
|||||||
let tools
|
let tools
|
||||||
let _sdk
|
let _sdk
|
||||||
let secondaryLinesCount = 19
|
let secondaryLinesCount = 19
|
||||||
let show = false
|
let show = true
|
||||||
let equalHeightDistance = 10
|
let equalHeightDistance = 10
|
||||||
let activeColor = '#ffd000'
|
let activeColor = '#ffd000'
|
||||||
let indexContourShow = true
|
let indexContourShow = true
|
||||||
@ -86,20 +86,21 @@ async function dialog(sdk) {
|
|||||||
tools = new Tools(sdk)
|
tools = new Tools(sdk)
|
||||||
}
|
}
|
||||||
|
|
||||||
_DialogObject = await new Dialog(sdk, {}, {
|
// _DialogObject = await new Dialog(sdk, {}, {
|
||||||
title: "全局等高线", left: '180px',
|
// title: "全局等高线", left: '180px',
|
||||||
top: '100px',
|
// top: '100px',
|
||||||
closeCallBack: () => {
|
// closeCallBack: () => {
|
||||||
_DialogObject = null
|
// _DialogObject = null
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
|
|
||||||
_DialogObject._element.body.className =
|
// _DialogObject._element.body.className =
|
||||||
_DialogObject._element.body.className + ' contour'
|
// _DialogObject._element.body.className + ' contour'
|
||||||
let contentElm = document.createElement('div')
|
// let contentElm = document.createElement('div')
|
||||||
contentElm.innerHTML = html(this)
|
// contentElm.innerHTML = html(this)
|
||||||
|
|
||||||
_DialogObject.contentAppChild(contentElm)
|
// _DialogObject.contentAppChild(contentElm)
|
||||||
|
let contentElm = document.getElementsByClassName('contour')[0]
|
||||||
|
|
||||||
sdk.viewer.scene.postRender.removeEventListener(accordingToCameraHeight)
|
sdk.viewer.scene.postRender.removeEventListener(accordingToCameraHeight)
|
||||||
sdk.viewer.scene.postRender.addEventListener(accordingToCameraHeight)
|
sdk.viewer.scene.postRender.addEventListener(accordingToCameraHeight)
|
||||||
@ -107,6 +108,21 @@ async function dialog(sdk) {
|
|||||||
// 显示
|
// 显示
|
||||||
let showBtn = contentElm.getElementsByClassName('show')[0]
|
let showBtn = contentElm.getElementsByClassName('show')[0]
|
||||||
showBtn.checked = show
|
showBtn.checked = show
|
||||||
|
if (showBtn.checked) {
|
||||||
|
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,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
flyTo(sdk, options, 0.5)
|
||||||
|
}
|
||||||
|
showContour(sdk)
|
||||||
|
}
|
||||||
showBtn.addEventListener('change', (e) => {
|
showBtn.addEventListener('change', (e) => {
|
||||||
if (e.target.checked) {
|
if (e.target.checked) {
|
||||||
show = true
|
show = true
|
||||||
@ -473,7 +489,7 @@ czm_material czm_getMaterial(czm_materialInput materialInput)
|
|||||||
|
|
||||||
// 主等高线计算
|
// 主等高线计算
|
||||||
float distanceToMainContour = mod(materialInput.height, spacing);
|
float distanceToMainContour = mod(materialInput.height, spacing);
|
||||||
|
|
||||||
// 抗锯齿计算
|
// 抗锯齿计算
|
||||||
#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives))
|
#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives))
|
||||||
float dxc = abs(dFdx(materialInput.height));
|
float dxc = abs(dFdx(materialInput.height));
|
||||||
@ -493,11 +509,11 @@ czm_material czm_getMaterial(czm_materialInput materialInput)
|
|||||||
// 计算当前高度所属的等高线高度
|
// 计算当前高度所属的等高线高度
|
||||||
float mainContourHeight = floor(materialInput.height / spacing) * spacing;
|
float mainContourHeight = floor(materialInput.height / spacing) * spacing;
|
||||||
float secondaryContourHeight = floor(materialInput.height / spacing * (secondaryLinesCount + 1.0)) * spacing / (secondaryLinesCount + 1.0);
|
float secondaryContourHeight = floor(materialInput.height / spacing * (secondaryLinesCount + 1.0)) * spacing / (secondaryLinesCount + 1.0);
|
||||||
|
|
||||||
// 计算次线在两条主等高线之间的相对位置
|
// 计算次线在两条主等高线之间的相对位置
|
||||||
float relativeHeight = materialInput.height - mainContourHeight;
|
float relativeHeight = materialInput.height - mainContourHeight;
|
||||||
float normalizedPosition = relativeHeight / spacing;
|
float normalizedPosition = relativeHeight / spacing;
|
||||||
|
|
||||||
// 计算次线索引(从主等高线开始计数)
|
// 计算次线索引(从主等高线开始计数)
|
||||||
float lineIndex = floor(normalizedPosition * (secondaryLinesCount + 1.0));
|
float lineIndex = floor(normalizedPosition * (secondaryLinesCount + 1.0));
|
||||||
|
|
||||||
@ -506,7 +522,7 @@ czm_material czm_getMaterial(czm_materialInput materialInput)
|
|||||||
float secondaryLinesWidth = supplementaryContourWidth;
|
float secondaryLinesWidth = supplementaryContourWidth;
|
||||||
secondarySpacing = spacing / (secondaryLinesCount + 1.0);
|
secondarySpacing = spacing / (secondaryLinesCount + 1.0);
|
||||||
float distanceToSecondaryContour = mod(materialInput.height, secondarySpacing);
|
float distanceToSecondaryContour = mod(materialInput.height, secondarySpacing);
|
||||||
|
|
||||||
// 确保次线不会与主线重叠
|
// 确保次线不会与主线重叠
|
||||||
float minDistanceToMain = min(distanceToMainContour, spacing - distanceToMainContour);
|
float minDistanceToMain = min(distanceToMainContour, spacing - distanceToMainContour);
|
||||||
bool notCloseToMain = minDistanceToMain > dFMain * 2.0; // 2倍线宽缓冲
|
bool notCloseToMain = minDistanceToMain > dFMain * 2.0; // 2倍线宽缓冲
|
||||||
@ -532,7 +548,7 @@ czm_material czm_getMaterial(czm_materialInput materialInput)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives))
|
#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives))
|
||||||
dFSecondary = max(dxc, dyc) * czm_pixelRatio * secondaryLinesWidth;
|
dFSecondary = max(dxc, dyc) * czm_pixelRatio * secondaryLinesWidth;
|
||||||
#else
|
#else
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
import Dialog from '../../BaseDialog';
|
import Dialog from '../../BaseDialog';
|
||||||
import { html } from "./_element";
|
import { html } from "./_element";
|
||||||
import Tools from "../../Tools";
|
import Tools from "../../Tools";
|
||||||
import { closeRotateAround, closeViewFollow} from '../../Global/global'
|
import { closeRotateAround, closeViewFollow } from '../../Global/global'
|
||||||
let _DialogObject = null
|
let _DialogObject = null
|
||||||
let clickHandler
|
let clickHandler
|
||||||
let repeat = 0
|
let repeat = 0
|
||||||
@ -13,32 +13,33 @@ let currentRepeat = 0
|
|||||||
|
|
||||||
|
|
||||||
const open = async (sdk, options = {}, _Dialog = {}) => {
|
const open = async (sdk, options = {}, _Dialog = {}) => {
|
||||||
let name = options.name || '漫游路径'
|
let name = options.name || '飞线漫游'
|
||||||
options.points || (options.points = [])
|
options.points || (options.points = [])
|
||||||
if(options.repeat) {
|
if (options.repeat) {
|
||||||
repeat = Number(options.repeat)
|
repeat = Number(options.repeat)
|
||||||
}
|
}
|
||||||
let viewer = sdk.viewer
|
let viewer = sdk.viewer
|
||||||
let tools = new Tools(sdk)
|
let tools = new Tools(sdk)
|
||||||
let active = 0
|
let active = 0
|
||||||
|
|
||||||
if (_DialogObject && _DialogObject.close) {
|
// if (_DialogObject && _DialogObject.close) {
|
||||||
_DialogObject.close()
|
// _DialogObject.close()
|
||||||
_DialogObject = null
|
// _DialogObject = null
|
||||||
}
|
// }
|
||||||
|
|
||||||
_DialogObject = await new Dialog(viewer._container, {
|
// _DialogObject = await new Dialog(viewer._container, {
|
||||||
title: '飞行漫游', left: '180px', top: '100px',
|
// title: '飞行漫游', left: '180px', top: '100px',
|
||||||
closeCallBack: () => {
|
// closeCallBack: () => {
|
||||||
cease({ viewer })
|
// cease({ viewer })
|
||||||
},
|
// },
|
||||||
})
|
// })
|
||||||
await _DialogObject.init()
|
// await _DialogObject.init()
|
||||||
let contentElm = document.createElement('div');
|
// let contentElm = document.createElement('div');
|
||||||
contentElm.className = 'fly-roam'
|
// contentElm.className = 'fly-roam'
|
||||||
contentElm.innerHTML = html()
|
// contentElm.innerHTML = html()
|
||||||
_DialogObject.contentAppChild(contentElm)
|
// _DialogObject.contentAppChild(contentElm)
|
||||||
|
|
||||||
|
let contentElm = document.getElementsByClassName('fly-roam')[0]
|
||||||
let all_elm = contentElm.getElementsByTagName("*")
|
let all_elm = contentElm.getElementsByTagName("*")
|
||||||
// EventBinding(all_elm)
|
// EventBinding(all_elm)
|
||||||
|
|
||||||
@ -84,15 +85,15 @@ const open = async (sdk, options = {}, _Dialog = {}) => {
|
|||||||
points.map((item) => {
|
points.map((item) => {
|
||||||
newPoints.push(item)
|
newPoints.push(item)
|
||||||
})
|
})
|
||||||
_Dialog.clickSavePath && _Dialog.clickSavePath(
|
// _Dialog.clickSavePath && _Dialog.clickSavePath(
|
||||||
{
|
// {
|
||||||
name: name,
|
// name: name,
|
||||||
points: newPoints,
|
// points: newPoints,
|
||||||
repeat: repeat+''
|
// repeat: repeat + ''
|
||||||
}
|
// }
|
||||||
)
|
// )
|
||||||
})
|
})
|
||||||
_DialogObject.footAppChild(addListBtn)
|
// _DialogObject.footAppChild(addListBtn)
|
||||||
|
|
||||||
let endBtn = contentElm.getElementsByClassName('cease')[0]
|
let endBtn = contentElm.getElementsByClassName('cease')[0]
|
||||||
endBtn.addEventListener('click', () => {
|
endBtn.addEventListener('click', () => {
|
||||||
@ -135,7 +136,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: '操作成功'})
|
tools.message({ text: '操作成功' })
|
||||||
})
|
})
|
||||||
|
|
||||||
let totalTimeElm = contentElm.querySelector("input[name='totalTime']")
|
let totalTimeElm = contentElm.querySelector("input[name='totalTime']")
|
||||||
@ -248,7 +249,7 @@ const open = async (sdk, options = {}, _Dialog = {}) => {
|
|||||||
for (let m = 0; m < trList.length; m++) {
|
for (let m = 0; m < trList.length; m++) {
|
||||||
if (trList[m] === e_delete.parentNode.parentNode) {
|
if (trList[m] === e_delete.parentNode.parentNode) {
|
||||||
points.splice(m, 1)
|
points.splice(m, 1)
|
||||||
points[points.length-1] && (points[points.length-1].duration = 0)
|
points[points.length - 1] && (points[points.length - 1].duration = 0)
|
||||||
tableBody.removeChild(tr)
|
tableBody.removeChild(tr)
|
||||||
if (active > m + 1) {
|
if (active > m + 1) {
|
||||||
active--
|
active--
|
||||||
@ -307,10 +308,20 @@ const open = async (sdk, options = {}, _Dialog = {}) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const close = () => {
|
const close = () => {
|
||||||
if (_DialogObject && _DialogObject.close) {
|
// if (_DialogObject && _DialogObject.close) {
|
||||||
_DialogObject.close()
|
// _DialogObject.close()
|
||||||
_DialogObject = null
|
// _DialogObject = null
|
||||||
|
// }
|
||||||
|
let contentElm = document.getElementsByClassName('fly-roam')[0]
|
||||||
|
|
||||||
|
let tableBody = contentElm.getElementsByClassName('table-body')[0];
|
||||||
|
let trList = tableBody.getElementsByClassName('tr')
|
||||||
|
for (let i = trList.length - 1; i >= 0; i--) {
|
||||||
|
tableBody.removeChild(trList[i])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
repeat = 0
|
||||||
|
currentRepeat = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
const executeFlyTo = (sdk, points = [], index = 0, noStart) => {
|
const executeFlyTo = (sdk, points = [], index = 0, noStart) => {
|
||||||
@ -387,4 +398,4 @@ const cease = (sdk) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export { open, close, flyTo, setRepeat, cease }
|
export { open, close, flyTo, setRepeat, cease }
|
||||||
|
@ -35,12 +35,12 @@ class CircleViewShed extends Tools {
|
|||||||
this.Dialog = _Dialog
|
this.Dialog = _Dialog
|
||||||
this._EventBinding = new EventBinding()
|
this._EventBinding = new EventBinding()
|
||||||
this.html = null
|
this.html = null
|
||||||
let tools = new Tools(sdk)
|
this.tools = new Tools(sdk)
|
||||||
YJ.Analysis.AnalysesResults.push(this)
|
YJ.Analysis.AnalysesResults.push(this)
|
||||||
// CircleViewShed.edit(this)
|
// CircleViewShed.edit(this)
|
||||||
let terrainAvailability = this.viewer.terrainProvider.availability;
|
let terrainAvailability = this.viewer.terrainProvider.availability;
|
||||||
if (!terrainAvailability) {
|
if (!terrainAvailability) {
|
||||||
tools.message({ type: 'warning', text: '未加载地形数据!' })
|
this.tools.message({ type: 'warning', text: '未加载地形数据!' })
|
||||||
// window.ELEMENT && window.ELEMENT.Message({
|
// window.ELEMENT && window.ELEMENT.Message({
|
||||||
// message: '未加载地形数据!',
|
// message: '未加载地形数据!',
|
||||||
// type: 'warning',
|
// type: 'warning',
|
||||||
@ -48,6 +48,9 @@ class CircleViewShed extends Tools {
|
|||||||
// });
|
// });
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
// CircleViewShed.create(this)
|
||||||
|
}
|
||||||
|
draw() {
|
||||||
CircleViewShed.create(this)
|
CircleViewShed.create(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -69,6 +72,20 @@ class CircleViewShed extends Tools {
|
|||||||
item.value = viewPointHeight
|
item.value = viewPointHeight
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
get viewPointHeights() {
|
||||||
|
return this.viewPointHeight
|
||||||
|
}
|
||||||
|
|
||||||
|
set viewPointHeights(v) {
|
||||||
|
let viewPointHeight = Math.floor(Number(v) * 10) / 10
|
||||||
|
if (isNaN(viewPointHeight)) {
|
||||||
|
viewPointHeight = 1.8
|
||||||
|
}
|
||||||
|
if (viewPointHeight < 0) {
|
||||||
|
viewPointHeight = 0
|
||||||
|
}
|
||||||
|
this.viewPointHeight = viewPointHeight
|
||||||
|
}
|
||||||
|
|
||||||
get precision() {
|
get precision() {
|
||||||
return this.options.precision
|
return this.options.precision
|
||||||
@ -87,8 +104,25 @@ class CircleViewShed extends Tools {
|
|||||||
item.value = precision
|
item.value = precision
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
get precisions() {
|
||||||
|
return this.precision
|
||||||
|
}
|
||||||
|
|
||||||
|
set precisions(val) {
|
||||||
|
this.precision = val
|
||||||
|
}
|
||||||
|
|
||||||
static create(that) {
|
static create(that) {
|
||||||
|
let terrainAvailability = that.viewer.terrainProvider.availability;
|
||||||
|
if (!terrainAvailability) {
|
||||||
|
that.tools.message({ type: 'warning', text: '未加载地形数据!' })
|
||||||
|
// window.ELEMENT && window.ELEMENT.Message({
|
||||||
|
// message: '未加载地形数据!',
|
||||||
|
// type: 'warning',
|
||||||
|
// duration: 1500
|
||||||
|
// });
|
||||||
|
return
|
||||||
|
}
|
||||||
let count = 0
|
let count = 0
|
||||||
if (!YJ.Measure.GetMeasureStatus()) {
|
if (!YJ.Measure.GetMeasureStatus()) {
|
||||||
if (that._DialogObject && that._DialogObject.close) {
|
if (that._DialogObject && that._DialogObject.close) {
|
||||||
|
@ -4,19 +4,15 @@ import Tools from '../../../Tools';
|
|||||||
class ContourAnalysis {
|
class ContourAnalysis {
|
||||||
/**
|
/**
|
||||||
* @constructor 等高线分析
|
* @constructor 等高线分析
|
||||||
* @param sdk
|
* @param sdk
|
||||||
* **/
|
* **/
|
||||||
constructor(sdk, options = {}) {
|
constructor(sdk, options = {}) {
|
||||||
this.viewer = sdk.viewer
|
this.viewer = sdk.viewer
|
||||||
|
this.tools = new Tools(sdk)
|
||||||
let terrainAvailability = this.viewer.terrainProvider.availability;
|
let terrainAvailability = this.viewer.terrainProvider.availability;
|
||||||
if (!terrainAvailability) {
|
if (!terrainAvailability) {
|
||||||
this.error = '未加载地形数据!'
|
this.error = '未加载地形数据!'
|
||||||
window.ELEMENT && window.ELEMENT.Message({
|
this.tools.message({ type: 'warning', text: this.error })
|
||||||
message: '未加载地形数据!',
|
|
||||||
type: 'warning',
|
|
||||||
duration: 1500
|
|
||||||
});
|
|
||||||
console.warn(this.error)
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
this.positions = options.positions
|
this.positions = options.positions
|
||||||
@ -153,7 +149,7 @@ class ContourAnalysis {
|
|||||||
// },
|
// },
|
||||||
// }))
|
// }))
|
||||||
// element.label = new Cesium.LabelGraphics({
|
// element.label = new Cesium.LabelGraphics({
|
||||||
|
|
||||||
// })
|
// })
|
||||||
let cur_index = that.getObjectIndex(
|
let cur_index = that.getObjectIndex(
|
||||||
breaks,
|
breaks,
|
||||||
@ -178,7 +174,7 @@ class ContourAnalysis {
|
|||||||
}
|
}
|
||||||
let line = turf.lineString(array);
|
let line = turf.lineString(array);
|
||||||
let distance = turf.length(line, { units: "kilometers" });
|
let distance = turf.length(line, { units: "kilometers" });
|
||||||
let along = turf.along(line, distance/2, { units: "kilometers" });
|
let along = turf.along(line, distance / 2, { units: "kilometers" });
|
||||||
return Cesium.Cartesian3.fromDegrees(along.geometry.coordinates[0], along.geometry.coordinates[1], 0);
|
return Cesium.Cartesian3.fromDegrees(along.geometry.coordinates[0], along.geometry.coordinates[1], 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -210,4 +206,4 @@ class ContourAnalysis {
|
|||||||
this.countorLineList = [];
|
this.countorLineList = [];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
export default ContourAnalysis;
|
export default ContourAnalysis;
|
||||||
|
@ -1,12 +1,13 @@
|
|||||||
import Dialog from '../../../BaseDialog';
|
import Dialog from '../../../BaseDialog';
|
||||||
import { html } from "./_element";
|
import { html } from "./_element";
|
||||||
|
import Tools from "../../../Tools";
|
||||||
// import CreatePolygon from "./CreatePolygon";
|
// import CreatePolygon from "./CreatePolygon";
|
||||||
import DrawPolygon from "../../../Draw/drawPolygon"
|
import DrawPolygon from "../../../Draw/drawPolygon"
|
||||||
|
|
||||||
class CutFillAnalysis {
|
class CutFillAnalysis {
|
||||||
/**
|
/**
|
||||||
* @constructor 填挖方分析
|
* @constructor 填挖方分析
|
||||||
* @param sdk
|
* @param sdk
|
||||||
* **/
|
* **/
|
||||||
constructor(sdk, options = {}, _Dialog = {}) {
|
constructor(sdk, options = {}, _Dialog = {}) {
|
||||||
this.sdk = sdk;
|
this.sdk = sdk;
|
||||||
@ -26,21 +27,20 @@ class CutFillAnalysis {
|
|||||||
noArea: "",
|
noArea: "",
|
||||||
}
|
}
|
||||||
this.entities = []
|
this.entities = []
|
||||||
|
this.tools = new Tools(this.sdk)
|
||||||
this.Draw = new DrawPolygon(this.sdk)
|
this.Draw = new DrawPolygon(this.sdk)
|
||||||
YJ.Analysis.AnalysesResults.push(this)
|
YJ.Analysis.AnalysesResults.push(this)
|
||||||
CutFillAnalysis.EditBox(this)
|
// CutFillAnalysis.EditBox(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
create() {
|
create() {
|
||||||
this.clean()
|
this.clean()
|
||||||
this.Draw.start((a, positions) => {
|
this.Draw.start((a, positions) => {
|
||||||
if(!positions || positions.length<3) {
|
if (!positions || positions.length < 3) {
|
||||||
let _error = '最少需要三个坐标!'
|
let _error = '最少需要三个坐标!'
|
||||||
console.warn(_error)
|
this.tools.message({
|
||||||
window.ELEMENT && window.ELEMENT.Message({
|
text: _error,
|
||||||
message: _error,
|
|
||||||
type: 'warning',
|
type: 'warning',
|
||||||
duration: 1500
|
|
||||||
});
|
});
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -52,6 +52,7 @@ class CutFillAnalysis {
|
|||||||
this.createPolygonGeo(this.positions);
|
this.createPolygonGeo(this.positions);
|
||||||
this.result = this.VolumeAnalysis();
|
this.result = this.VolumeAnalysis();
|
||||||
this.viewer.scene.screenSpaceCameraController.enableCollisionDetection = false; //允许相机进入地下
|
this.viewer.scene.screenSpaceCameraController.enableCollisionDetection = false; //允许相机进入地下
|
||||||
|
this.clickCallBack()
|
||||||
})
|
})
|
||||||
// const $this = this;
|
// const $this = this;
|
||||||
// if (!this.cp) {
|
// if (!this.cp) {
|
||||||
@ -336,6 +337,65 @@ class CutFillAnalysis {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get heights() {
|
||||||
|
return this.height
|
||||||
|
}
|
||||||
|
set heights(val) {
|
||||||
|
this.height = val
|
||||||
|
}
|
||||||
|
get precisions() {
|
||||||
|
return this.precision
|
||||||
|
}
|
||||||
|
set precisions(val) {
|
||||||
|
this.precision = val
|
||||||
|
}
|
||||||
|
get allArea() {
|
||||||
|
return Number(this.result.allArea.toFixed(4))
|
||||||
|
}
|
||||||
|
set allArea(val) {
|
||||||
|
this.result.allArea = val
|
||||||
|
}
|
||||||
|
get fillArea() {
|
||||||
|
return Number(this.result.fillArea.toFixed(4))
|
||||||
|
}
|
||||||
|
set fillArea(val) {
|
||||||
|
this.result.fillArea = val
|
||||||
|
}
|
||||||
|
get fillVolume() {
|
||||||
|
return Number(this.result.fillVolume.toFixed(4))
|
||||||
|
}
|
||||||
|
set fillVolume(val) {
|
||||||
|
this.result.fillVolume = val
|
||||||
|
}
|
||||||
|
get cutArea() {
|
||||||
|
return Number(this.result.cutArea.toFixed(4))
|
||||||
|
}
|
||||||
|
set cutArea(val) {
|
||||||
|
this.result.cutArea = val
|
||||||
|
}
|
||||||
|
get cutVolume() {
|
||||||
|
return Number(this.result.cutVolume.toFixed(4))
|
||||||
|
}
|
||||||
|
set cutVolume(val) {
|
||||||
|
this.result.cutVolume = val
|
||||||
|
}
|
||||||
|
get noArea() {
|
||||||
|
return Number(this.result.noArea.toFixed(4))
|
||||||
|
}
|
||||||
|
set noArea(val) {
|
||||||
|
this.result.noArea = val
|
||||||
|
}
|
||||||
|
get onEnd() {
|
||||||
|
return this.clickCallBack
|
||||||
|
}
|
||||||
|
set onEnd(val) {
|
||||||
|
if (val && typeof val !== 'function') {
|
||||||
|
console.error('val:', val, '不是一个function')
|
||||||
|
} else {
|
||||||
|
this.clickCallBack = val
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
clean() {
|
clean() {
|
||||||
this.Draw && this.Draw.end()
|
this.Draw && this.Draw.end()
|
||||||
for (let i = 0; i < this.entities.length; i++) {
|
for (let i = 0; i < this.entities.length; i++) {
|
||||||
@ -351,4 +411,4 @@ class CutFillAnalysis {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
export default CutFillAnalysis;
|
export default CutFillAnalysis;
|
||||||
|
@ -172,26 +172,29 @@ class Profile extends Draw {
|
|||||||
return positions_Inter
|
return positions_Inter
|
||||||
}
|
}
|
||||||
formatter(xy, tipData) {
|
formatter(xy, tipData) {
|
||||||
const pointOption = {
|
if (this.polyline) {
|
||||||
show: true,
|
const pointOption = {
|
||||||
pixelSize: 10,
|
show: true,
|
||||||
color: Cesium.Color.GREEN,
|
pixelSize: 10,
|
||||||
outlineColor: Cesium.Color.SKYBLUE,
|
color: Cesium.Color.GREEN,
|
||||||
outlineWidth: 3,
|
outlineColor: Cesium.Color.SKYBLUE,
|
||||||
disableDepthTestDistance: Number.POSITIVE_INFINITY
|
outlineWidth: 3,
|
||||||
}
|
disableDepthTestDistance: Number.POSITIVE_INFINITY
|
||||||
if (!this.tipEntity) {
|
}
|
||||||
this.tipEntity = this.sdk.viewer.entities.add({
|
if (!this.tipEntity) {
|
||||||
position: Cesium.Cartesian3.fromDegrees(xy[0], xy[1], Number(tipData[1])),
|
this.tipEntity = this.sdk.viewer.entities.add({
|
||||||
point: pointOption
|
position: Cesium.Cartesian3.fromDegrees(xy[0], xy[1], Number(tipData[1])),
|
||||||
})
|
point: pointOption
|
||||||
} else {
|
})
|
||||||
this.tipEntity.position = Cesium.Cartesian3.fromDegrees(
|
} else {
|
||||||
xy[0],
|
this.tipEntity.position = Cesium.Cartesian3.fromDegrees(
|
||||||
xy[1],
|
xy[0],
|
||||||
Number(tipData[1])
|
xy[1],
|
||||||
)
|
Number(tipData[1])
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static async edit(that, points) {
|
static async edit(that, points) {
|
||||||
|
@ -5,25 +5,23 @@ import MouseEvent from '../../../Event/index'
|
|||||||
class SlopeAspect extends Tools {
|
class SlopeAspect extends Tools {
|
||||||
/**
|
/**
|
||||||
* @constructor 坡度坡向分析
|
* @constructor 坡度坡向分析
|
||||||
* @param sdk
|
* @param sdk
|
||||||
* **/
|
* **/
|
||||||
constructor(sdk) {
|
constructor(sdk) {
|
||||||
super(sdk)
|
super(sdk)
|
||||||
this.viewer = sdk.viewer;
|
this.viewer = sdk.viewer;
|
||||||
let terrainAvailability = this.viewer.terrainProvider.availability;
|
|
||||||
if (!terrainAvailability) {
|
|
||||||
this.error = '未加载地形数据!'
|
|
||||||
window.ELEMENT && window.ELEMENT.Message({
|
|
||||||
message: '未加载地形数据!',
|
|
||||||
type: 'warning',
|
|
||||||
duration: 1500
|
|
||||||
});
|
|
||||||
return
|
|
||||||
}
|
|
||||||
this.event
|
this.event
|
||||||
this.result = []; //存储创建的坡度分析结果,primitive集合
|
this.result = []; //存储创建的坡度分析结果,primitive集合
|
||||||
this.handler = undefined;
|
this.handler = undefined;
|
||||||
this.toolTip = "";
|
this.toolTip = "";
|
||||||
|
this.tools = new Tools(sdk)
|
||||||
|
let terrainAvailability = this.viewer.terrainProvider.availability;
|
||||||
|
if (!terrainAvailability) {
|
||||||
|
this.error = '未加载地形数据!'
|
||||||
|
this.tools.message({ type: 'warning', text: this.error })
|
||||||
|
return
|
||||||
|
}
|
||||||
YJ.Analysis.AnalysesResults.push(this)
|
YJ.Analysis.AnalysesResults.push(this)
|
||||||
this.Draw = new DrawPolygon(this.sdk)
|
this.Draw = new DrawPolygon(this.sdk)
|
||||||
// this.createNew4Distance()
|
// this.createNew4Distance()
|
||||||
@ -39,11 +37,7 @@ class SlopeAspect extends Tools {
|
|||||||
const viewer = this.viewer;
|
const viewer = this.viewer;
|
||||||
this.Draw.start((e, positions) => {
|
this.Draw.start((e, positions) => {
|
||||||
if (!positions || positions.length <= 2) {
|
if (!positions || positions.length <= 2) {
|
||||||
window.ELEMENT && window.ELEMENT.Message({
|
this.tools.message({ type: 'warning', text: '至少拥有三个坐标位置!' })
|
||||||
message: '至少拥有三个坐标位置!',
|
|
||||||
type: 'warning',
|
|
||||||
duration: 1500
|
|
||||||
});
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let boundary = [];
|
let boundary = [];
|
||||||
@ -73,7 +67,7 @@ class SlopeAspect extends Tools {
|
|||||||
let num = n
|
let num = n
|
||||||
this.Draw.start((e, positions) => {
|
this.Draw.start((e, positions) => {
|
||||||
if (!positions || positions.length <= 2) {
|
if (!positions || positions.length <= 2) {
|
||||||
console.warn('至少拥有三个坐标位置!')
|
this.tools.message({ type: 'warning', text: '至少拥有三个坐标位置!' })
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let boundary = [];
|
let boundary = [];
|
||||||
@ -204,8 +198,8 @@ class SlopeAspect extends Tools {
|
|||||||
let _this = this
|
let _this = this
|
||||||
// 点位过多,分为三份计算
|
// 点位过多,分为三份计算
|
||||||
let num = (Math.floor(boxResults.length / 3) + '')
|
let num = (Math.floor(boxResults.length / 3) + '')
|
||||||
num = Number(num.substring(0, num.length - 1))*10
|
num = Number(num.substring(0, num.length - 1)) * 10
|
||||||
let i=0
|
let i = 0
|
||||||
let points = boxResults.slice(i * num, (i + 1) * num)
|
let points = boxResults.slice(i * num, (i + 1) * num)
|
||||||
if (points.length > 0) {
|
if (points.length > 0) {
|
||||||
sampleTerrainMostDetailed(points)
|
sampleTerrainMostDetailed(points)
|
||||||
@ -239,7 +233,7 @@ class SlopeAspect extends Tools {
|
|||||||
_this.calculateSlope(ellipseResults);
|
_this.calculateSlope(ellipseResults);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
createPolygonInsrance(points, color, curSlope) {
|
createPolygonInsrance(points, color, curSlope) {
|
||||||
@ -514,4 +508,4 @@ class SlopeAspect extends Tools {
|
|||||||
this.sdk.viewer.scene.preRender.removeEventListener(this._watchEvent, this)
|
this.sdk.viewer.scene.preRender.removeEventListener(this._watchEvent, this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
export default SlopeAspect;
|
export default SlopeAspect;
|
||||||
|
@ -36,13 +36,13 @@ class Submerge extends Tools {
|
|||||||
that.Draw.start((a, positions) => {
|
that.Draw.start((a, positions) => {
|
||||||
if (!positions || positions.length < 3) {
|
if (!positions || positions.length < 3) {
|
||||||
let _error = '至少需要三个坐标!'
|
let _error = '至少需要三个坐标!'
|
||||||
this.tools.message({
|
that.tools.message({
|
||||||
message: _error,
|
text: _error,
|
||||||
type: 'warning',
|
type: 'warning',
|
||||||
});
|
});
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
Submerge.destroy()
|
that.destroy()
|
||||||
if (!positions || positions.length == 0) {
|
if (!positions || positions.length == 0) {
|
||||||
that.positions = []
|
that.positions = []
|
||||||
that._positions = []
|
that._positions = []
|
||||||
@ -62,6 +62,18 @@ class Submerge extends Tools {
|
|||||||
}
|
}
|
||||||
fromDegreesArray.push(positions[i].lng, positions[i].lat)
|
fromDegreesArray.push(positions[i].lng, positions[i].lat)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
that.options.maxWaterLevel = positions[0].alt
|
||||||
|
for (let i = 0; i < positions.length; i++) {
|
||||||
|
if (that.options.minWaterLevel < positions[i].alt) {
|
||||||
|
that.options.maxWaterLevel = positions[i].alt
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// for (let i = 0; i < positions.length; i++) {
|
// for (let i = 0; i < positions.length; i++) {
|
||||||
// fromDegreesArray.push(positions[i].lng, positions[i].lat, that.options.minWaterLevel)
|
// fromDegreesArray.push(positions[i].lng, positions[i].lat, that.options.minWaterLevel)
|
||||||
// }
|
// }
|
||||||
@ -84,11 +96,16 @@ class Submerge extends Tools {
|
|||||||
TWEEN.remove(that.TweenAnimate)
|
TWEEN.remove(that.TweenAnimate)
|
||||||
that.TweenAnimate = null
|
that.TweenAnimate = null
|
||||||
}
|
}
|
||||||
let contentElm = that._DialogObject._element.body
|
|
||||||
let pauseBtn = contentElm.getElementsByClassName('pause')[0];
|
that.waterLevel = that.options.maxWaterLevel - that.options.minWaterLevel
|
||||||
let startBtn = contentElm.getElementsByClassName('start')[0];
|
that.options.waterVolume = Number((that.waterLevel * that.area).toFixed(4))
|
||||||
startBtn.style.display = 'flex'
|
|
||||||
pauseBtn.style.display = 'none'
|
that.clickCallBack(that.area, that._positions)
|
||||||
|
// let contentElm = that._DialogObject._element.body
|
||||||
|
// let pauseBtn = contentElm.getElementsByClassName('pause')[0];
|
||||||
|
// let startBtn = contentElm.getElementsByClassName('start')[0];
|
||||||
|
// startBtn.style.display = 'flex'
|
||||||
|
// pauseBtn.style.display = 'none'
|
||||||
// that.move()
|
// that.move()
|
||||||
// Submerge.EditBox(that)
|
// Submerge.EditBox(that)
|
||||||
})
|
})
|
||||||
@ -105,7 +122,7 @@ class Submerge extends Tools {
|
|||||||
that._DialogObject = await new Dialog(that.sdk.viewer._container, {
|
that._DialogObject = await new Dialog(that.sdk.viewer._container, {
|
||||||
title: '淹没分析', left: '180px', top: '100px',
|
title: '淹没分析', left: '180px', top: '100px',
|
||||||
closeCallBack: () => {
|
closeCallBack: () => {
|
||||||
Submerge.destroy()
|
that.destroy()
|
||||||
that.Dialog.closeCallBack && that.Dialog.closeCallBack()
|
that.Dialog.closeCallBack && that.Dialog.closeCallBack()
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@ -316,6 +333,22 @@ class Submerge extends Tools {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get onEnd() {
|
||||||
|
return this.clickCallBack
|
||||||
|
}
|
||||||
|
set onEnd(val) {
|
||||||
|
if (val && typeof val !== 'function') {
|
||||||
|
console.error('val:', val, '不是一个function')
|
||||||
|
} else {
|
||||||
|
this.clickCallBack = val
|
||||||
|
}
|
||||||
|
}
|
||||||
|
get waterLevels() {
|
||||||
|
return this.waterLevel
|
||||||
|
}
|
||||||
|
set waterLevels(val) {
|
||||||
|
this.waterLevel = val
|
||||||
|
}
|
||||||
get waterVolume() {
|
get waterVolume() {
|
||||||
return this.options.waterVolume
|
return this.options.waterVolume
|
||||||
}
|
}
|
||||||
@ -327,6 +360,7 @@ class Submerge extends Tools {
|
|||||||
}
|
}
|
||||||
set minWaterLevel(val) {
|
set minWaterLevel(val) {
|
||||||
this.options.minWaterLevel = val
|
this.options.minWaterLevel = val
|
||||||
|
this.currentWaterLaver = this.options.minWaterLevel
|
||||||
}
|
}
|
||||||
get maxWaterLevel() {
|
get maxWaterLevel() {
|
||||||
return this.options.maxWaterLevel
|
return this.options.maxWaterLevel
|
||||||
@ -340,10 +374,10 @@ class Submerge extends Tools {
|
|||||||
set risingSpeed(val) {
|
set risingSpeed(val) {
|
||||||
this.options.risingSpeed = val
|
this.options.risingSpeed = val
|
||||||
}
|
}
|
||||||
get area() {
|
get areas() {
|
||||||
return this.area
|
return this.area
|
||||||
}
|
}
|
||||||
set area(val) {
|
set areas(val) {
|
||||||
this.area = val
|
this.area = val
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -357,11 +391,11 @@ class Submerge extends Tools {
|
|||||||
this.TweenAnimate = new TWEEN.Tween({ waterLevel: this.options.minWaterLevel }).to({ waterLevel: this.options.maxWaterLevel }, totalTime).delay(this.delay).easing(TWEEN.Easing.Linear.None).onUpdate(async (r, a) => {
|
this.TweenAnimate = new TWEEN.Tween({ waterLevel: this.options.minWaterLevel }).to({ waterLevel: this.options.maxWaterLevel }, totalTime).delay(this.delay).easing(TWEEN.Easing.Linear.None).onUpdate(async (r, a) => {
|
||||||
this.currentWaterLaver = r.waterLevel
|
this.currentWaterLaver = r.waterLevel
|
||||||
}).start()
|
}).start()
|
||||||
let contentElm = this._DialogObject._element.body
|
// let contentElm = this._DialogObject._element.body
|
||||||
let pauseBtn = contentElm.getElementsByClassName('pause')[0];
|
// let pauseBtn = contentElm.getElementsByClassName('pause')[0];
|
||||||
let startBtn = contentElm.getElementsByClassName('start')[0];
|
// let startBtn = contentElm.getElementsByClassName('start')[0];
|
||||||
startBtn.style.display = 'none'
|
// startBtn.style.display = 'none'
|
||||||
pauseBtn.style.display = 'flex'
|
// pauseBtn.style.display = 'flex'
|
||||||
}
|
}
|
||||||
|
|
||||||
restart() {
|
restart() {
|
||||||
@ -420,11 +454,11 @@ class Submerge extends Tools {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
static destroy() {
|
destroy() {
|
||||||
if (this.TweenAnimate) {
|
if (this.TweenAnimate) {
|
||||||
TWEEN.remove(this.TweenAnimate)
|
TWEEN.remove(this.TweenAnimate)
|
||||||
}
|
}
|
||||||
this.Draw.end()
|
this.Draw && this.Draw.end()
|
||||||
this.sdk.viewer.entities.remove(this.entity)
|
this.sdk.viewer.entities.remove(this.entity)
|
||||||
this.entity = null
|
this.entity = null
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,7 @@ class TerrainExcavation extends Tools {
|
|||||||
this.wallMaterial = Cesium.Material.fromType('Color', {
|
this.wallMaterial = Cesium.Material.fromType('Color', {
|
||||||
color: Cesium.Color.fromAlpha(Cesium.Color.fromCssColorString('#976b4e'))
|
color: Cesium.Color.fromAlpha(Cesium.Color.fromCssColorString('#976b4e'))
|
||||||
})
|
})
|
||||||
|
this.tools = new Tools(this.sdk)
|
||||||
let imageBottom = new Image();
|
let imageBottom = new Image();
|
||||||
let wallBottom = new Image();
|
let wallBottom = new Image();
|
||||||
imageBottom.src = this.bottomImg;
|
imageBottom.src = this.bottomImg;
|
||||||
@ -71,7 +72,7 @@ class TerrainExcavation extends Tools {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.init();
|
// this.init();
|
||||||
}
|
}
|
||||||
get show() {
|
get show() {
|
||||||
return this.options.show
|
return this.options.show
|
||||||
@ -153,19 +154,11 @@ class TerrainExcavation extends Tools {
|
|||||||
startCreate() {
|
startCreate() {
|
||||||
this.Draw.start((e, positions) => {
|
this.Draw.start((e, positions) => {
|
||||||
if (!positions || positions.length <= 2) {
|
if (!positions || positions.length <= 2) {
|
||||||
window.ELEMENT && window.ELEMENT.Message({
|
this.tools.message({ type: 'warning', text: '至少拥有三个坐标位置!' })
|
||||||
message: '至少拥有三个坐标位置!',
|
|
||||||
type: 'warning',
|
|
||||||
duration: 1500
|
|
||||||
});
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if(!this.isConvex(positions)) {
|
if (!this.isConvex(positions)) {
|
||||||
window.ELEMENT && window.ELEMENT.Message({
|
this.tools.message({ type: 'warning', text: '至少拥有三个坐标位置!' })
|
||||||
message: '不支持凹多边形',
|
|
||||||
type: 'warning',
|
|
||||||
duration: 1500
|
|
||||||
});
|
|
||||||
console.log('不支持凹多边形')
|
console.log('不支持凹多边形')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -27,9 +27,11 @@ class VisibilityAnalysis extends Tools {
|
|||||||
this.viewPointHeight = options.viewPointHeight
|
this.viewPointHeight = options.viewPointHeight
|
||||||
this.Dialog = _Dialog
|
this.Dialog = _Dialog
|
||||||
this._EventBinding = new EventBinding()
|
this._EventBinding = new EventBinding()
|
||||||
|
this.tools = new Tools(this.sdk)
|
||||||
YJ.Analysis.AnalysesResults.push(this)
|
YJ.Analysis.AnalysesResults.push(this)
|
||||||
// VisibilityAnalysis.edit(this)
|
// VisibilityAnalysis.edit(this)
|
||||||
VisibilityAnalysis.create(this)
|
VisibilityAnalysis.create(this)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
get viewPointHeight() {
|
get viewPointHeight() {
|
||||||
@ -182,29 +184,33 @@ class VisibilityAnalysis extends Tools {
|
|||||||
that.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y)
|
that.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y)
|
||||||
})
|
})
|
||||||
that.event.mouse_right((movement, cartesian) => {
|
that.event.mouse_right((movement, cartesian) => {
|
||||||
end()
|
that.end()
|
||||||
})
|
})
|
||||||
that.event.gesture_pinck_start((movement, cartesian) => {
|
that.event.gesture_pinck_start((movement, cartesian) => {
|
||||||
let startTime = new Date()
|
let startTime = new Date()
|
||||||
that.event.gesture_pinck_end(() => {
|
that.event.gesture_pinck_end(() => {
|
||||||
let endTime = new Date()
|
let endTime = new Date()
|
||||||
if (endTime - startTime >= 500) {
|
if (endTime - startTime >= 500) {
|
||||||
end()
|
that.end()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
console.log('上一次测量未结束')
|
that.tools.message({
|
||||||
|
text: '上一次测量未结束',
|
||||||
|
type: 'warning',
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function end() {
|
|
||||||
YJ.Measure.SetMeasureStatus(false)
|
}
|
||||||
that.tip.destroy()
|
end() {
|
||||||
that.event.destroy()
|
YJ.Measure.SetMeasureStatus(false)
|
||||||
that.tip = null
|
this.tip && this.tip.destroy()
|
||||||
that.event = null
|
this.event && this.event.destroy()
|
||||||
}
|
this.tip = null
|
||||||
|
this.event = null
|
||||||
}
|
}
|
||||||
|
|
||||||
// static update(that) {
|
// static update(that) {
|
||||||
|
@ -5,6 +5,7 @@ import Draw from '../../../Draw/draw'
|
|||||||
import MouseTip from '../../../MouseTip'
|
import MouseTip from '../../../MouseTip'
|
||||||
import MouseEvent from '../../../Event'
|
import MouseEvent from '../../../Event'
|
||||||
import Dialog from '../../../BaseDialog';
|
import Dialog from '../../../BaseDialog';
|
||||||
|
import Tools from "../../../Tools";
|
||||||
import EventBinding from '../../Element/Dialog/eventBinding';
|
import EventBinding from '../../Element/Dialog/eventBinding';
|
||||||
import { html } from "./_element";
|
import { html } from "./_element";
|
||||||
import { CameraController } from '../../../Global/global'
|
import { CameraController } from '../../../Global/global'
|
||||||
@ -12,7 +13,7 @@ import { CameraController } from '../../../Global/global'
|
|||||||
class Graffiti extends Draw {
|
class Graffiti extends Draw {
|
||||||
/**
|
/**
|
||||||
* @constructor
|
* @constructor
|
||||||
* @param sdk
|
* @param sdk
|
||||||
* @description 涂鸦
|
* @description 涂鸦
|
||||||
* @param options {object} 线属性
|
* @param options {object} 线属性
|
||||||
* @param options.width=10{number} 宽度
|
* @param options.width=10{number} 宽度
|
||||||
@ -23,6 +24,7 @@ class Graffiti extends Draw {
|
|||||||
this.options.width = options.width || 1
|
this.options.width = options.width || 1
|
||||||
this.options.color = options.color || '#ff0000'
|
this.options.color = options.color || '#ff0000'
|
||||||
this._elms = {};
|
this._elms = {};
|
||||||
|
this.tools = new Tools(sdk)
|
||||||
this._EventBinding = new EventBinding()
|
this._EventBinding = new EventBinding()
|
||||||
Graffiti.edit(this, true)
|
Graffiti.edit(this, true)
|
||||||
}
|
}
|
||||||
@ -31,7 +33,7 @@ class Graffiti extends Draw {
|
|||||||
return this.options.color
|
return this.options.color
|
||||||
}
|
}
|
||||||
set color(v) {
|
set color(v) {
|
||||||
if(!this.options.color) {
|
if (!this.options.color) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
this.options.color = v
|
this.options.color = v
|
||||||
@ -69,14 +71,15 @@ class Graffiti extends Draw {
|
|||||||
// 编辑框
|
// 编辑框
|
||||||
static async edit(that, state) {
|
static async edit(that, state) {
|
||||||
if (state) {
|
if (state) {
|
||||||
that._DialogObject = await new Dialog(that.sdk.viewer._container, {
|
// that._DialogObject = await new Dialog(that.sdk.viewer._container, {
|
||||||
title: '涂鸦参数',
|
// title: '涂鸦参数',
|
||||||
})
|
// })
|
||||||
await that._DialogObject.init()
|
// await that._DialogObject.init()
|
||||||
let contentElm = document.createElement('div');
|
// let contentElm = document.createElement('div');
|
||||||
contentElm.innerHTML = html()
|
// contentElm.innerHTML = html()
|
||||||
that._DialogObject.contentAppChild(contentElm)
|
// that._DialogObject.contentAppChild(contentElm)
|
||||||
// 颜色组件
|
// 颜色组件
|
||||||
|
let contentElm = document.getElementsByClassName('graffiti')[0]
|
||||||
let colorPicker = new YJColorPicker({
|
let colorPicker = new YJColorPicker({
|
||||||
el: contentElm.getElementsByClassName("color")[0],
|
el: contentElm.getElementsByClassName("color")[0],
|
||||||
size: 'mini',//颜色box类型
|
size: 'mini',//颜色box类型
|
||||||
@ -91,20 +94,20 @@ class Graffiti extends Draw {
|
|||||||
that.color = 'rgba(255,255,255,1)'
|
that.color = 'rgba(255,255,255,1)'
|
||||||
},//点击清空按钮事件回调
|
},//点击清空按钮事件回调
|
||||||
})
|
})
|
||||||
that._DialogObject._element.body.className = that._DialogObject._element.body.className + ' graffiti'
|
// that._DialogObject._element.body.className = that._DialogObject._element.body.className + ' graffiti'
|
||||||
let all_elm = contentElm.getElementsByTagName("*")
|
let all_elm = contentElm.getElementsByTagName("*")
|
||||||
that._EventBinding.on(that, all_elm)
|
that._EventBinding.on(that, all_elm)
|
||||||
that._elms = that._EventBinding.element
|
that._elms = that._EventBinding.element
|
||||||
that._elms.color = [colorPicker]
|
that._elms.color = [colorPicker]
|
||||||
|
|
||||||
let confirmBtn = document.createElement('button');
|
// let confirmBtn = document.createElement('button');
|
||||||
confirmBtn.className = 'confirm';
|
// confirmBtn.className = 'confirm';
|
||||||
confirmBtn.innerHTML = '确认'
|
// confirmBtn.innerHTML = '确认'
|
||||||
that._DialogObject.footAppChild(confirmBtn)
|
// that._DialogObject.footAppChild(confirmBtn)
|
||||||
confirmBtn.addEventListener('click', () => {
|
// confirmBtn.addEventListener('click', () => {
|
||||||
that.start()
|
// that.start()
|
||||||
Graffiti.edit(that, false)
|
// Graffiti.edit(that, false)
|
||||||
});
|
// });
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (that._DialogObject && that._DialogObject.close) {
|
if (that._DialogObject && that._DialogObject.close) {
|
||||||
@ -122,7 +125,7 @@ class Graffiti extends Draw {
|
|||||||
start() {
|
start() {
|
||||||
let _this = this
|
let _this = this
|
||||||
if (YJ.Measure.GetMeasureStatus()) {
|
if (YJ.Measure.GetMeasureStatus()) {
|
||||||
console.log('上一次测量未结束')
|
this.tools.message({ type: 'warning', text: '上一次测量未结束' })
|
||||||
} else {
|
} else {
|
||||||
let viewer = this.sdk.viewer
|
let viewer = this.sdk.viewer
|
||||||
CameraController(this.sdk, false)
|
CameraController(this.sdk, false)
|
||||||
@ -160,7 +163,7 @@ class Graffiti extends Draw {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
this.event.mouse_left_up((movement, cartesian) => {
|
this.event.mouse_left_up((movement, cartesian) => {
|
||||||
polylineArray[polylineArray.length-1].polyline.positions = positions
|
polylineArray[polylineArray.length - 1].polyline.positions = positions
|
||||||
this.event.mouse_move((movement, cartesian) => {
|
this.event.mouse_move((movement, cartesian) => {
|
||||||
this.tip.setPosition(
|
this.tip.setPosition(
|
||||||
cartesian,
|
cartesian,
|
||||||
@ -221,7 +224,7 @@ class Graffiti extends Draw {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
flicker() {}
|
flicker() { }
|
||||||
}
|
}
|
||||||
|
|
||||||
export default Graffiti
|
export default Graffiti
|
||||||
|
@ -4,6 +4,7 @@ import Dialog from '../../../BaseDialog'
|
|||||||
import MouseEvent from '../../../Event/index'
|
import MouseEvent from '../../../Event/index'
|
||||||
import MouseTip from '../../../MouseTip'
|
import MouseTip from '../../../MouseTip'
|
||||||
import { html, css } from './_element'
|
import { html, css } from './_element'
|
||||||
|
import Tools from "../../../Tools";
|
||||||
|
|
||||||
class RoutePlanning extends Base {
|
class RoutePlanning extends Base {
|
||||||
/**
|
/**
|
||||||
@ -27,6 +28,7 @@ class RoutePlanning extends Base {
|
|||||||
lng: null,
|
lng: null,
|
||||||
lat: null
|
lat: null
|
||||||
}
|
}
|
||||||
|
this.tools = new Tools(sdk)
|
||||||
this.init()
|
this.init()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,11 +45,12 @@ class RoutePlanning extends Base {
|
|||||||
} else {
|
} else {
|
||||||
this.startEntity.show = false
|
this.startEntity.show = false
|
||||||
}
|
}
|
||||||
|
|
||||||
this.startEntity.position = new Cesium.CallbackProperty(() => {
|
this.startEntity.position = new Cesium.CallbackProperty(() => {
|
||||||
let pos = this.sdk.viewer.scene.clampToHeight(
|
let pos = this.sdk.viewer.scene.clampToHeight(
|
||||||
new Cesium.Cartesian3.fromDegrees(this.startLng, this.startLat)
|
new Cesium.Cartesian3.fromDegrees(this.startLng, this.startLat)
|
||||||
)
|
)
|
||||||
|
this.clickCallBack({ start: pos, end: this.endEntity.position })
|
||||||
return pos
|
return pos
|
||||||
}, false)
|
}, false)
|
||||||
this.startEntity.billboard = {
|
this.startEntity.billboard = {
|
||||||
@ -73,6 +76,7 @@ class RoutePlanning extends Base {
|
|||||||
let pos = this.sdk.viewer.scene.clampToHeight(
|
let pos = this.sdk.viewer.scene.clampToHeight(
|
||||||
new Cesium.Cartesian3.fromDegrees(this.endLng, this.endLat)
|
new Cesium.Cartesian3.fromDegrees(this.endLng, this.endLat)
|
||||||
)
|
)
|
||||||
|
this.clickCallBack({ start: this.startEntity.position, end: pos })
|
||||||
return pos
|
return pos
|
||||||
}, false)
|
}, false)
|
||||||
this.endEntity.billboard = {
|
this.endEntity.billboard = {
|
||||||
@ -82,10 +86,21 @@ class RoutePlanning extends Base {
|
|||||||
width: 32,
|
width: 32,
|
||||||
height: 32
|
height: 32
|
||||||
}
|
}
|
||||||
this.edit(true)
|
// this.edit(true)
|
||||||
this.clear()
|
this.clear()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get onEnd() {
|
||||||
|
return this.clickCallBack
|
||||||
|
}
|
||||||
|
set onEnd(val) {
|
||||||
|
if (val && typeof val !== 'function') {
|
||||||
|
console.error('val:', val, '不是一个function')
|
||||||
|
} else {
|
||||||
|
this.clickCallBack = val
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
get startLng() {
|
get startLng() {
|
||||||
return this.start.lng
|
return this.start.lng
|
||||||
}
|
}
|
||||||
@ -253,7 +268,7 @@ class RoutePlanning extends Base {
|
|||||||
end: [this.endLng, this.endLat]
|
end: [this.endLng, this.endLat]
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
console.error('请先设置起点和终点坐标!')
|
this.tools.message({ type: 'warning', text: '请先设置起点和终点坐标!' })
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
div.appendChild(queryBtn)
|
div.appendChild(queryBtn)
|
||||||
@ -696,6 +711,6 @@ class RoutePlanning extends Base {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
flicker() {}
|
flicker() { }
|
||||||
}
|
}
|
||||||
export default RoutePlanning
|
export default RoutePlanning
|
||||||
|
@ -881,51 +881,51 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* 飞行漫游 */
|
/* 飞行漫游 */
|
||||||
.YJ-custom-base-dialog>.content .fly-roam {
|
.fly-roam>.content .fly-roam {
|
||||||
width: 474px;
|
width: 474px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.YJ-custom-base-dialog>.content .fly-roam .total-time {
|
.fly-roam>.content .total-time {
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.YJ-custom-base-dialog>.content .fly-roam .table {
|
.fly-roam>.content .table {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.YJ-custom-base-dialog>.content .fly-roam .table .table-body {
|
.fly-roam>.content .table .table-body {
|
||||||
height: 220px;
|
height: 220px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.YJ-custom-base-dialog>.content .fly-roam .table .tr .th:first-child,
|
.fly-roam>.content .table .tr .th:first-child,
|
||||||
.YJ-custom-base-dialog>.content .fly-roam .table .tr .td:first-child {
|
.fly-roam>.content .table .tr .td:first-child {
|
||||||
flex: 0 0 95px;
|
flex: 0 0 95px;
|
||||||
width: 95px;
|
width: 95px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.YJ-custom-base-dialog>.content .fly-roam .table .tr .th:nth-child(2),
|
.fly-roam>.content .table .tr .th:nth-child(2),
|
||||||
.YJ-custom-base-dialog>.content .fly-roam .table .tr .td:nth-child(2) {
|
.fly-roam>.content .table .tr .td:nth-child(2) {
|
||||||
flex: 0 0 240px;
|
flex: 0 0 240px;
|
||||||
width: 240px;
|
width: 240px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.YJ-custom-base-dialog>.content .fly-roam .table .tr .th:last-child,
|
.fly-roam>.content .table .tr .th:last-child,
|
||||||
.YJ-custom-base-dialog>.content .fly-roam .table .tr .td:last-child {
|
.fly-roam>.content .table .tr .td:last-child {
|
||||||
flex: 0 0 140px;
|
flex: 0 0 140px;
|
||||||
width: 140px;
|
width: 140px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.YJ-custom-base-dialog>.content .fly-roam .table .table-body .tr.active {
|
.fly-roam>.content .table .table-body .tr.active {
|
||||||
background: rgba(var(--color-sdk-base-rgb), 0.15);
|
background: rgba(var(--color-sdk-base-rgb), 0.15);
|
||||||
}
|
}
|
||||||
|
|
||||||
.YJ-custom-base-dialog>.content .fly-roam .table .table-body .tr:last-child {
|
.fly-roam>.content .table .table-body .tr:last-child {
|
||||||
border: 1px solid rgba(var(--color-sdk-base-rgb), 0.5);
|
border: 1px solid rgba(var(--color-sdk-base-rgb), 0.5);
|
||||||
border-left: none;
|
border-left: none;
|
||||||
border-right: none;
|
border-right: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.YJ-custom-base-dialog>.content .fly-roam .table .table-body .tr:last-child .input {
|
.fly-roam>.content .table .table-body .tr:last-child .input {
|
||||||
color: #808080;
|
color: #808080;
|
||||||
cursor: no-drop;
|
cursor: no-drop;
|
||||||
}
|
}
|
||||||
@ -938,26 +938,26 @@
|
|||||||
border-color: rgba(var(--color-sdk-base-rgb), 0.5) !important;
|
border-color: rgba(var(--color-sdk-base-rgb), 0.5) !important;
|
||||||
} */
|
} */
|
||||||
|
|
||||||
.YJ-custom-base-dialog>.content .fly-roam .table .action {
|
.fly-roam>.content .table .action {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-around;
|
justify-content: space-around;
|
||||||
}
|
}
|
||||||
|
|
||||||
.YJ-custom-base-dialog>.content .fly-roam .table i {
|
.fly-roam>.content .table i {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
color: #409eff;
|
color: #409eff;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.YJ-custom-base-dialog>.content .fly-roam .table i:hover {
|
.fly-roam>.content .table i:hover {
|
||||||
color: #6bb4ff;
|
color: #6bb4ff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.YJ-custom-base-dialog>.content .fly-roam .table i:active {
|
.fly-roam>.content .table i:active {
|
||||||
color: #409eff;
|
color: #409eff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.YJ-custom-base-dialog>.content .fly-roam button {
|
.fly-roam>.content button {
|
||||||
padding: 6px 14px;
|
padding: 6px 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2212,33 +2212,16 @@
|
|||||||
.YJ-custom-base-dialog.cut-fill>.content>div .div-item:last-child .row .unit {
|
.YJ-custom-base-dialog.cut-fill>.content>div .div-item:last-child .row .unit {
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
}
|
}
|
||||||
.YJ-custom-base-dialog.cut-fill>.content>div .el-slider__button {
|
.YJ-custom-base-dialog.cut-fill>.content .firstTip {
|
||||||
width: 16px;
|
|
||||||
height: 16px;
|
|
||||||
border: 2px solid rgba(var(--color-sdk-base-rgb), 1);
|
|
||||||
}
|
|
||||||
.YJ-custom-base-dialog.cut-fill>.content>div .el-slider__bar {
|
|
||||||
background-color: rgba(var(--color-sdk-base-rgb), 1);
|
|
||||||
}
|
|
||||||
.YJ-custom-base-dialog.cut-fill>.content>div .firstTip {
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: 700;
|
|
||||||
letter-spacing: 0px;
|
|
||||||
line-height: 0px;
|
|
||||||
color: rgba(255, 255, 255, 1);
|
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 157px;
|
|
||||||
left: 340px;
|
left: 340px;
|
||||||
|
top: 145px
|
||||||
}
|
}
|
||||||
.YJ-custom-base-dialog.cut-fill>.content>div .endTip {
|
|
||||||
font-size: 14px;
|
.YJ-custom-base-dialog.cut-fill>.content .endTip {
|
||||||
font-weight: 700;
|
|
||||||
letter-spacing: 0px;
|
|
||||||
line-height: 0px;
|
|
||||||
color: rgba(255, 255, 255, 1);
|
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 157px;
|
top: 145px;
|
||||||
left: 515px;
|
left: 515px
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 淹没分析 */
|
/* 淹没分析 */
|
||||||
@ -2293,6 +2276,17 @@
|
|||||||
flex: 0 0 60px;
|
flex: 0 0 60px;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
.YJ-custom-base-dialog.submerge>.content .rangeWords {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
letter-spacing: 0px;
|
||||||
|
line-height: 24px;
|
||||||
|
color: rgba(230, 247, 255, 1);
|
||||||
|
text-align: right;
|
||||||
|
vertical-align: top;
|
||||||
|
width: 42px;
|
||||||
|
margin-left: 10px
|
||||||
|
}
|
||||||
|
|
||||||
/* 地形分析 */
|
/* 地形分析 */
|
||||||
.YJ-custom-base-dialog.terrain-excavation>.content {
|
.YJ-custom-base-dialog.terrain-excavation>.content {
|
||||||
@ -2443,40 +2437,43 @@
|
|||||||
.YJ-custom-base-dialog.circle-view-shed>.content {
|
.YJ-custom-base-dialog.circle-view-shed>.content {
|
||||||
width: 290px;
|
width: 290px;
|
||||||
}
|
}
|
||||||
.YJ-custom-base-dialog.circle-view-shed>.content>div .el-slider__button {
|
.YJ-custom-base-dialog.circle-view-shed>.content .firstTip {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 700;
|
||||||
|
letter-spacing: 0px;
|
||||||
|
line-height: 0px;
|
||||||
|
color: rgba(255, 255, 255, 1);
|
||||||
|
text-align: left;
|
||||||
|
vertical-align: top;
|
||||||
|
position: absolute;
|
||||||
|
left: 88px;
|
||||||
|
top: 145px
|
||||||
|
}
|
||||||
|
|
||||||
|
.YJ-custom-base-dialog.circle-view-shed>.content .endTip {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 700;
|
||||||
|
letter-spacing: 0px;
|
||||||
|
line-height: 0px;
|
||||||
|
color: rgba(255, 255, 255, 1);
|
||||||
|
text-align: left;
|
||||||
|
vertical-align: top;
|
||||||
|
position: absolute;
|
||||||
|
left: 240px;
|
||||||
|
top: 145px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-popper.is-dark {
|
||||||
|
z-index: 1000000 !important
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-slider__button {
|
||||||
width: 16px;
|
width: 16px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
border: 2px solid rgba(var(--color-sdk-base-rgb), 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.YJ-custom-base-dialog.circle-view-shed>.content>div .el-slider__bar {
|
.el-slider {
|
||||||
background-color: rgba(var(--color-sdk-base-rgb), 1);
|
--el-slider-main-bg-color: rgba(var(--color-sdk-base-rgb), 1)
|
||||||
}
|
|
||||||
|
|
||||||
.YJ-custom-base-dialog.circle-view-shed>.content>div .firstTip {
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: 700;
|
|
||||||
letter-spacing: 0px;
|
|
||||||
line-height: 0px;
|
|
||||||
color: rgba(255, 255, 255, 1);
|
|
||||||
position: absolute;
|
|
||||||
top: 150px;
|
|
||||||
left: 88px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.YJ-custom-base-dialog.circle-view-shed>.content>div .endTip {
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: 700;
|
|
||||||
letter-spacing: 0px;
|
|
||||||
line-height: 0px;
|
|
||||||
color: rgba(255, 255, 255, 1);
|
|
||||||
position: absolute;
|
|
||||||
top: 150px;
|
|
||||||
left: 240px;
|
|
||||||
}
|
|
||||||
.el-popper.is-dark {
|
|
||||||
z-index: 100000000 !important;
|
|
||||||
/* 确保这个值足够高 */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 地形可视域分析 */
|
/* 地形可视域分析 */
|
||||||
|
Reference in New Issue
Block a user