///////////////////////////////////////////////////////////////////////////
|
// Copyright © 2019 zhongsong. All Rights Reserved.
|
// 模块描述:显示坐标
|
///////////////////////////////////////////////////////////////////////////
|
define([
|
'dojo/_base/declare',
|
'dojo/_base/lang',
|
'dojo/_base/array',
|
'dojo/_base/html',
|
'dojo/topic',
|
'jimu/BaseWidget',
|
'jimu/utils',
|
'jimu/css!libs/zTree_v3/css/zTreeStyle/zTreeStyle.css',
|
'libs/zTree_v3/js/jquery.ztree.all'
|
],
|
function (declare,
|
lang,
|
array,
|
html,
|
topic,
|
BaseWidget,
|
aspect,
|
string,
|
utils
|
) {
|
return declare([BaseWidget], {
|
baseClass: 'jimu-widget-spatialAnalysis',
|
name: 'spatialAnalysis',
|
layers: {},
|
startup: function () {
|
var that = this;
|
// 暴露在外的接口
|
|
topic.subscribe("closeOnceUse", lang.hitch(this, this.closeOnceUse));
|
|
|
|
var domHtmls = [//默认
|
{
|
name: '可视分析',
|
classs: 'visibleArea-tool',
|
img: './images/addL/ksy.png'
|
}, {
|
name: '剖面分析',
|
classs: 'profileAnalysis-tool',
|
img: './images/addL/剖面分析.png'
|
}
|
, {//做好静态,
|
name: '建造实体',
|
classs: 'modelDiagram-tool',
|
img: './images/addL/实体.png'
|
}
|
// , {//https://blog.csdn.net/supermapsupport/article/details/100134590
|
// //需要iServer发布成三维服务
|
// name: '坡度分析',
|
// classs: 'slope-tool',
|
// img: './images/addL/pdpx.png'
|
// }
|
// , {//SQL查询,//做好
|
// name: 'SQL查询',
|
// classs: 'SQLQuery-tool',
|
// img: './images/addL/pdpx.png'
|
// }
|
, {//地形开挖,//做好
|
name: '地形开挖',
|
classs: 'digTheEarth-tool',
|
img: './images/addL/地形开挖.png'
|
}
|
, {//方量分析//做好
|
name: '方量分析',
|
classs: 'volumeAnalysis-tool',
|
img: './images/addL/方量分析.png'
|
},
|
{//通视分析
|
name: '通视分析',
|
classs: 'throughSee-tool',
|
img: './images/addL/通视分析.png'
|
},
|
{//平面裁剪
|
name: '平面裁剪',
|
classs: 'clippingPlanes-tool',
|
img: './images/addL/pingmian.png'
|
},
|
{//BOX裁剪
|
name: 'BOX裁剪',
|
classs: 'BOXTailoring-tool',
|
img: './images/addL/BOX裁剪.png'
|
}
|
,
|
{//Cross裁剪
|
name: 'Cross裁剪',
|
classs: 'crossTailoring-tool',
|
img: './images/addL/BOX裁剪.png'
|
}
|
];
|
|
that.beginSpatialAnalysis(domHtmls);
|
var isit = false;
|
$('.ccslius').click(() => {
|
isit = false;
|
})
|
$('.ccsliu').dblclick(() => {//测试开关 点击图例其他的图片
|
|
if (isit) {
|
var domHtmls2 = [
|
{
|
name: '可视分析',
|
classs: 'visibleArea-tool',
|
img: './images/addL/ksy.png'
|
}, {
|
name: '剖面分析',
|
classs: 'profileAnalysis-tool',
|
img: './images/addL/剖面分析.png'
|
}
|
, {//https://blog.csdn.net/supermapsupport/article/details/100134590
|
//需要iServer发布成三维服务
|
name: '坡度分析',
|
classs: 'slope-tool',
|
img: './images/addL/pdpx.png'
|
}
|
, {//做好静态,
|
name: '建造实体',
|
classs: 'modelDiagram-tool',
|
img: './images/addL/pdpx.png'
|
}
|
, {//SQL查询,//做好
|
name: 'SQL查询',
|
classs: 'SQLQuery-tool',
|
img: './images/addL/pdpx.png'
|
}
|
, {//地形开挖,//做好
|
name: '地形开挖',
|
classs: 'digTheEarth-tool',
|
img: './images/addL/pdpx.png'
|
}, {//方量分析//做好
|
name: '方量分析',
|
classs: 'volumeAnalysis-tool',
|
img: './images/addL/pdpx.png'
|
}
|
, {//空间查询
|
name: '空间查询',
|
classs: 'spatialQuery-tool',
|
img: './images/addL/pdpx.png'
|
}
|
, {//多边形裁剪
|
name: '多边形裁剪',
|
classs: 'polygonClipping-tool',
|
img: './images/addL/pdpx.png'
|
},
|
{//通视分析
|
name: '通视分析',
|
classs: 'throughSee-tool',
|
img: './images/addL/pdpx.png'
|
},
|
{//平面裁剪
|
name: '平面裁剪',
|
classs: 'clippingPlanes-tool',
|
img: './images/addL/pdpx.png'
|
},
|
{//BOX裁剪
|
name: 'BOX裁剪',
|
classs: 'BOXTailoring-tool',
|
img: './images/addL/BOX裁剪.png'
|
}
|
,
|
{//建造模型
|
name: '建造模型',
|
classs: 'modesssssllll',
|
img: './images/addL/pdpx.png'
|
}
|
,
|
{//清除模型
|
name: '清除模型',
|
classs: 'modesssss2222',
|
img: './images/addL/pdpx.png'
|
}
|
];
|
that.beginSpatialAnalysis(domHtmls2);
|
var promise = false;
|
$('.modesssssllll').click(() => {
|
var URL_CONFIG = {
|
SCENE_CBD: 'http://www.supermapol.com/realspace/services/3D-niaochao/rest/realspace',
|
}
|
promise = this.map.scene.open(URL_CONFIG.SCENE_CBD);
|
})
|
$('.modesssss2222').click(() => {
|
if (promise) {
|
Cesium.when(promise, function (layer) {
|
for (var i = 0; i < layer.length; i++) {
|
that.map.scene.layers.remove(layer[i].name)
|
}
|
})
|
}
|
})
|
} else {
|
that.beginSpatialAnalysis(domHtmls);
|
}
|
isit = !isit;
|
})
|
|
},
|
promise: 'NODATA',
|
beginSpatialAnalysis: function (domHtmls) {
|
var that = this;
|
var domHtmls = domHtmls;
|
var dom = $('#spatialAnalysis-mains');
|
dom.empty();
|
var str = '<ul>';
|
for (var k in domHtmls) {
|
str += `<li class="${domHtmls[k].classs}">
|
<i class="imgs">
|
<img src="${domHtmls[k].img}" alt="">
|
</i>
|
<span>${domHtmls[k].name}</span>
|
</li>`
|
}
|
str += '</ul>';
|
dom.append(str);
|
// console.log(dom, str)
|
// dom.replaceWith(str);
|
|
$('.closesspatialAnalysis').click(() => {
|
that.closeOnceUse();
|
$('.jimu-widget-spatialAnalysis').hide();
|
|
})
|
// 可视分析
|
$('.visibleArea-tool').click(function () {
|
that.closeOnceUse();
|
|
$(".jimu-widget-visibleArea").show();
|
})
|
// 剖面分析
|
$('.profileAnalysis-tool').click(function () {
|
that.closeOnceUse();
|
|
$(".jimu-widget-profileAnalysis").show();
|
})
|
//坡度分析
|
$('.slope-tool').click(function () {
|
that.closeOnceUse();
|
|
$(".jimu-widget-slope").show();
|
topic.publish('getbeginSlope', 'this.beginSlope');
|
})
|
//模型
|
$('.modelDiagram-tool').click(function () {
|
that.closeOnceUse();
|
$('.jimu-widget-modelDiagram').show();
|
})
|
//sql查询
|
$('.SQLQuery-tool').click(function () {
|
that.closeOnceUse();
|
$(".jimu-widget-SQLQuery").show();
|
topic.publish('beginSQL', 'this.beginSQL');
|
|
})
|
//地形开挖
|
$('.digTheEarth-tool').click(function () {
|
that.closeOnceUse('digTheEarth');
|
$(".jimu-widget-digTheEarth").show();
|
// topic.publish('beginDigTheEarth', 'beginDigTheEarth');
|
|
})
|
|
//方量分析
|
$('.volumeAnalysis-tool').click(function () {
|
that.closeOnceUse('volumeAnalysis');
|
$(".jimu-widget-volumeAnalysis").show();
|
topic.publish('beginVolumeAnalysis', 'beginVolumeAnalysis');
|
})
|
|
//空间查询
|
$('.spatialQuery-tool').click(function () {
|
that.closeOnceUse();
|
$(".jimu-widget-spatialQuery").show();
|
topic.publish('beginSpatialQuery', 'beginSpatialQuery');
|
})
|
|
//多边形裁剪
|
$('.polygonClipping-tool').click(function () {
|
that.closeOnceUse();
|
$(".jimu-widget-polygonClipping").show();
|
topic.publish('beginpolygonClipping', 'beginpolygonClipping');
|
})
|
|
//通视分析
|
$('.throughSee-tool').click(function () {
|
that.closeOnceUse();
|
$(".jimu-widget-throughSee").show();
|
topic.publish('beginthroughSee', 'beginthroughSee');
|
})
|
|
//平面裁剪
|
$('.clippingPlanes-tool').click(function () {
|
that.closeOnceUse();
|
// console.log(that.promise, 22222222222)
|
if (that.promise == 'NODATA') {
|
layer.tips('请选择三维倾斜数据中的图层支持!', '.SelectLayerTool', {
|
tips: [3, 'red']
|
});
|
} else {
|
$(".jimu-widget-clippingPlanes").show();
|
topic.publish('beginclippingPlanes', that.promise);
|
}
|
})
|
|
//BOX裁剪
|
$('.BOXTailoring-tool').click(function () {
|
that.closeOnceUse();
|
|
if (that.promise == 'NODATA') {
|
layer.tips('请选择三维倾斜数据中的图层支持!', '.SelectLayerTool', {
|
tips: [3, 'red']
|
});
|
} else {
|
$(".jimu-widget-BOXTailoring").show();
|
topic.publish('beginBOXTailoring', that.promise);
|
}
|
})
|
|
//Cross裁剪
|
$('.crossTailoring-tool').click(function () {
|
that.closeOnceUse();
|
|
if (that.promise == 'NODATA') {
|
layer.tips('请选择三维倾斜数据中的图层支持!', '.SelectLayerTool', {
|
tips: [3, 'red']
|
});
|
} else {
|
$(".jimu-widget-crossTailoring").show();
|
topic.publish('begincrossTailoring', that.promise);
|
}
|
})
|
|
$('.SelectLayerTool').click(() => {
|
$('#SelectLayerToolItem').toggle();
|
})
|
//参照Layemanagement
|
topic.subscribe("appendItemS", lang.hitch(this, this.appendItemS));
|
topic.subscribe("removeItemS", lang.hitch(this, this.removeItemS));
|
|
topic.subscribe("appendTiltS", lang.hitch(this, this.appendTiltS));
|
topic.subscribe("removeTiltS", lang.hitch(this, this.removeTiltS));
|
this.liClick('默认:天地图影像', '默认:天地图影像');
|
|
},
|
morenliClick: function (itemid, name) {
|
var dom = $('.SelectLayerTool');
|
dom.empty();
|
var str = `${name} <i class="layui-icon layui-icon-down layui-font-12"></i>`
|
dom.append(str);
|
// console.log('数据错误默认')
|
this.promise = 'NODATA';
|
this.SelectClose();//关闭需要三维数据的窗口
|
|
},
|
SelectClose: function () {
|
//关闭平面裁剪
|
if ($(".jimu-widget-clippingPlanes").is(":visible")) {//判断是否隐藏
|
$(".jimu-widget-clippingPlanes").hide();
|
topic.publish('closesclippingPlanes');
|
}
|
|
//关闭BOX裁剪
|
if ($(".jimu-widget-BOXTailoring").is(":visible")) {//判断是否隐藏
|
$(".jimu-widget-BOXTailoring").hide();
|
topic.publish('closesBOXTailoring');
|
}
|
|
//关闭Cross裁剪
|
if ($(".jimu-widget-crossTailoring").is(":visible")) {//判断是否隐藏
|
$(".jimu-widget-crossTailoring").hide();
|
topic.publish('closescrossTailoring');
|
}
|
},
|
liClick: function (itemid, name, ourdata = 1) {//点击事件
|
var that = this;
|
var liList = $(`[itemid='${itemid}s']`);
|
// console.log(liList);
|
liList.click(() => {
|
// console.log(itemid)
|
var dom = $('.SelectLayerTool');
|
layer.tips('选择了:' + name, dom, { tips: [1, '#5FB878'] });
|
dom.empty();
|
var str = `${name} <i class="layui-icon layui-icon-down layui-font-12"></i>`
|
dom.append(str);
|
dom.attr("title", name);
|
$('#SelectLayerToolItem').hide();
|
// console.log(ourdata);
|
// 定位
|
// console.log(name)
|
if (ourdata != 1) {
|
// console.log('data')
|
if (ourdata.lon) {
|
//设置相机位置、视角,便于观察场景
|
that.map.scene.camera.setView({
|
destination: new Cesium.Cartesian3.fromDegrees(Number(ourdata.lon), Number(ourdata.lat), Number(ourdata.height)),
|
orientation: {
|
heading: Cesium.Math.toRadians(Number(ourdata.yawAngle)),
|
pitch: Cesium.Math.toRadians(Number(ourdata.pitchAngle)),
|
roll: Cesium.Math.toRadians(Number(ourdata.rollAngle))
|
}
|
});
|
// console.log(ourdata.lon)
|
// console.log(ourdata.lat)
|
// console.log(ourdata.height)
|
// console.log(ourdata.yawAngle)
|
// console.log(ourdata.pitchAngle)
|
// console.log(ourdata.rollAngle)
|
//115.996858
|
//29.170348
|
//232.99
|
//84.10
|
//-22.98
|
//360.00
|
}
|
if (ourdata.src.indexOf('.openrealspace') != -1) {
|
// console.log('数据正确');
|
this.SelectClose();//关闭需要三维数据的窗口
|
that.promise = {
|
src: ourdata.src,
|
ZName: ourdata.title,
|
name: ourdata.serviceName,
|
id: ourdata.id
|
};
|
|
} else {
|
// console.log('数据错误');
|
that.promise = 'NODATA';
|
this.SelectClose();//关闭需要三维数据的窗口
|
}
|
} else {
|
// console.log('数据错误没有data');
|
that.promise = 'NODATA';
|
//关闭平面裁剪
|
this.SelectClose();//关闭需要三维数据的窗口
|
}
|
|
})
|
},
|
appendItemS: function (item, obj, layer) {
|
// console.log('a1')
|
var that = this;
|
if (item == this.name) {
|
|
// $("#SelectLayerToolItemTitle .no-data").stop().hide();
|
var flag = true;
|
var liList = $("#SelectLayerToolItemTitle li");
|
// console.log(liList)
|
// console.log($('#SelectLayerToolItemTitle'))
|
for (var i = 0; i < liList.length; i++) {
|
if ($(liList[i]).attr('itemid') && $(liList[i]).attr('itemid') == obj.id + 's') {
|
flag = false
|
}
|
}
|
|
if (flag == true) {
|
var liItem = $("<li itemid='" + obj.id + "s' itemtitle='" + obj.title + "'> <div>" +
|
"<span title='" + obj.title + "'>" +
|
obj.title +
|
"</span>" +
|
"</div> </li>");
|
|
that[obj.id] = layer;
|
|
$("#SelectLayerToolItemTitle").append(liItem);
|
}
|
that.liClick(obj.id, obj.title, obj);
|
}
|
},
|
removeItemS: function (item, obj) {
|
// console.log(obj, 'r1')
|
var that = this;
|
if (item == this.name) {
|
var liList = $("#SelectLayerToolItemTitle li");
|
for (var i = 0; i < liList.length; i++) {
|
if ($(liList[i]).attr('itemid') && $(liList[i]).attr('itemid') == obj.id + 's') {
|
$(liList[i]).remove();
|
var dom = $('.SelectLayerTool').attr("title");
|
// console.log(dom == obj.title, this.liClick)
|
if (dom == obj.title) {
|
that.morenliClick('默认:天地图影像', '默认:天地图影像');
|
that.promise = 'NODATA';
|
}
|
}
|
}
|
|
if ($("#SelectLayerToolItemTitle li").length == 1 && $("#SelectLayerToolItemTitle li").length == 0) {
|
$("#SelectLayerToolItemTitle .no-data").stop().show();
|
$(".jimu-widget-spatialAnalysis .tree-layer-opcity").stop().hide();
|
}
|
|
}
|
|
// this.liClick();
|
},
|
appendTiltS: function (item, obj, layer) {
|
// console.log('a2')
|
var that = this;
|
if (item == this.name) {
|
|
// $("#SelectLayerToolItemTitle .no-data").stop().hide();
|
|
var flag = true;
|
|
var liList = $("#SelectLayerToolItemTitle li");
|
|
for (var i = 0; i < liList.length; i++) {
|
|
if ($(liList[i]).attr('itemid') && $(liList[i]).attr('itemid') == obj.id + 's') {
|
|
flag = false
|
}
|
}
|
if (flag == true) {
|
var liItem = $("<li itemid='" + obj.id + "s' itemtitle='" + obj.title + "'> <div>" +
|
"<span title='" + obj.title + "'>" +
|
obj.title +
|
"</span>" +
|
"</div> </li>");
|
|
$("#SelectLayerToolItemTitle").append(liItem);
|
}
|
that.liClick(obj.id, obj.title, obj);
|
}
|
},
|
removeTiltS: function (item, obj) {
|
// console.log(obj, 'r2')
|
// console.log('r2')
|
var that = this;
|
if (item == this.name) {
|
var liList = $("#SelectLayerToolItemTitle li");
|
for (var i = 0; i < liList.length; i++) {
|
if ($(liList[i]).attr('itemid') && $(liList[i]).attr('itemid') == obj.id + 's') {
|
$(liList[i]).remove();
|
var dom = $('.SelectLayerTool').attr("title");
|
if (dom == obj.title) {
|
that.morenliClick('默认:天地图影像', '默认:天地图影像');
|
that.promise = 'NODATA';
|
}
|
}
|
}
|
|
if ($("#SelectLayerToolItemTitle li").length == 1 && $("#SelectLayerToolItemTitle li").length == 0) {
|
// $("#SelectLayerToolItemTitle .no-data").stop().show();
|
// $(".jimu-widget-spatialAnalysis .tree-layer-opcity").stop().hide();
|
}
|
}
|
},
|
closeToolBox: function (item) {
|
if (item != this.name) {
|
$('.tool-y-box').hide();
|
}
|
},
|
closeOnceUse: function (who) {
|
var that = this;
|
that.map.scene.globe.depthTestAgainstTerrain = true;
|
// 关闭量算
|
topic.publish('closeMeasurement', 'Measurement');
|
// 关闭卷帘
|
topic.publish('closeRolling', 'Rolling');
|
// 关闭分屏
|
topic.publish('closeSplitScreen', 'SplitScreen');
|
// 关闭标记
|
topic.publish('closeSign', 'Sign');
|
topic.publish('closeFlyRoute', 'FlyRoute');
|
$('.jimu-widget-CoorPosition').hide();
|
$('.jimu-widget-MapPrinting').hide();
|
// 关闭可视
|
topic.publish('closev', '');
|
// 关闭剖面
|
topic.publish('closep', '');
|
// 关闭坡度
|
topic.publish('closes', '');
|
$(".jimu-widget-visibleArea").hide();
|
$(".jimu-widget-profileAnalysis").hide();
|
$(".jimu-widget-slope").hide();
|
$('.tool-y-box').stop().hide();
|
//关闭飞行
|
$('.jimu-widget-visualAngle').find('.v-a-Two').removeClass('on');//清楚样式
|
topic.publish('closeFly', 'closeFly');
|
//清除实体
|
this.map.entities.removeAll();
|
$(".jimu-widget-modelDiagram").hide();
|
//清除SQL查询
|
$(".jimu-widget-SQLQuery").hide();
|
topic.publish('closesSQL', 'closesSQL');
|
//关闭地形开挖
|
if ($(".jimu-widget-digTheEarth").is(":visible")) {//判断是否隐藏
|
$(".jimu-widget-digTheEarth").hide();
|
topic.publish('closesDigTheEarth');
|
}
|
//关闭方量贩分析
|
if ($(".jimu-widget-volumeAnalysis").is(":visible")) {//判断是否隐藏
|
$(".jimu-widget-volumeAnalysis").hide();
|
topic.publish('closesVolumeAnalysis');
|
}
|
//关闭空间查询
|
if ($(".jimu-widget-spatialQuery").is(":visible")) {//判断是否隐藏
|
$(".jimu-widget-spatialQuery").hide();
|
topic.publish('closesSpatialQuery');
|
}
|
//关闭多边形裁剪
|
if ($(".jimu-widget-polygonClipping").is(":visible")) {//判断是否隐藏
|
$(".jimu-widget-polygonClipping").hide();
|
topic.publish('closespolygonClipping');
|
}
|
//关闭通视分析
|
if ($(".jimu-widget-throughSee").is(":visible")) {//判断是否隐藏
|
$(".jimu-widget-throughSee").hide();
|
topic.publish('closesthroughSee');
|
}
|
//关闭平面裁剪
|
if ($(".jimu-widget-clippingPlanes").is(":visible")) {//判断是否隐藏
|
$(".jimu-widget-clippingPlanes").hide();
|
topic.publish('closesclippingPlanes');
|
}
|
|
//关闭BOX裁剪
|
if ($(".jimu-widget-BOXTailoring").is(":visible")) {//判断是否隐藏
|
$(".jimu-widget-BOXTailoring").hide();
|
topic.publish('closesBOXTailoring');
|
}
|
|
//关闭Cross裁剪
|
if ($(".jimu-widget-crossTailoring").is(":visible")) {//判断是否隐藏
|
$(".jimu-widget-crossTailoring").hide();
|
topic.publish('closescrossTailoring');
|
}
|
|
},
|
onOpen: function () {
|
},
|
|
onClose: function () {
|
//面板关闭的时候触发 (when this panel is closed trigger)
|
},
|
|
onMinimize: function () {
|
this.resize();
|
},
|
|
onMaximize: function () {
|
this.resize();
|
},
|
|
resize: function () {
|
|
},
|
|
|
destroy: function () {
|
//销毁的时候触发
|
//todo
|
//do something before this func
|
this.inherited(arguments);
|
}
|
|
});
|
});
|