<template>
|
<div class="bot"
|
v-if="showsituation">
|
<div class="top1">
|
<span class="botcon">
|
<span class="icon"></span>
|
<span class="text">资源目录</span>
|
</span>
|
<span class="close"
|
@click="close">x</span>
|
</div>
|
<div class="next">
|
<div class="layerTreeContainer">
|
<div class="layerTree">
|
<el-tree :data="treeData"
|
node-key="id"
|
ref="tree"
|
:default-checked-keys="arr"
|
show-checkbox
|
:render-content="renderContent"
|
:default-expanded-keys="defaultExpanded"
|
@node-click="setNodeClick"
|
@check="check">
|
</el-tree>
|
</div>
|
</div>
|
</div>
|
</div>
|
|
<!-- <div class="bot" v-if="showsituation">
|
<div class="top1">
|
<span class="botcon">
|
<span class="icon"></span>
|
<span class="text">资源目录</span>
|
</span>
|
<span class="close" @click="close">x</span>
|
</div>
|
|
</div> -->
|
</template>
|
|
<script>
|
import { createPic,freqBandAnalysis,showCQ } from "../../api/http";
|
|
import changePic from "../common/color.vue";
|
import bus from "../../utils/bus";
|
import axios from "axios";
|
|
import common from "@/components/common";
|
let projectTreeData=[];
|
|
//添加工程树数据
|
function addTreeData (data,layer) {
|
var d={};
|
for(var key in data) {
|
d[key]=data[key];
|
}
|
d.item=layer;
|
projectTreeData.push(d);
|
}
|
|
//通过id获取指定元素
|
function _getTreeData (id) {
|
for(var i=0;i<projectTreeData.length;i++) {
|
if(
|
projectTreeData[i].id===id||
|
(projectTreeData[i].datatype==="entity"&&
|
projectTreeData[i].item&&
|
projectTreeData[i].item.entity&&
|
projectTreeData[i].item.entity.id===id)||
|
(projectTreeData[i].datatype==="editEntity"&&
|
projectTreeData[i].item&&
|
projectTreeData[i].item[projectTreeData[i].type]&&
|
projectTreeData[i].item[projectTreeData[i].type].id===id)
|
) {
|
return projectTreeData[i];
|
}
|
}
|
}
|
|
//转换sg颜色
|
function getSGColor (color) {
|
let _color=parseInt(color).toString(16);
|
if(_color.length===2) {
|
_color="0000"+_color;
|
} else if(_color.length===4) {
|
_color="00"+_color;
|
}
|
_color="#"+_color.slice(4)+_color.slice(2,4)+_color.slice(0,2);
|
return _color;
|
}
|
|
//解析XML
|
function getXMLData (xml,isColor) {
|
let xml2json=$.xml2json($.parseXML(xml));
|
let data={
|
value: undefined,
|
defaultValue: isColor
|
? getSGColor(xml2json.DefaultValue)
|
:xml2json.DefaultValue,
|
};
|
|
if(xml2json&&!xml2json.Class.length) {
|
data.value=xml2json.Class.Value;
|
} else if(xml2json&&xml2json.Class.length) {
|
let Value={
|
Condition: undefined,
|
Value: {},
|
};
|
xml2json.Class.forEach((item) => {
|
let condition=item.Condition.replace(/\"/g,"");
|
let eli=condition.replace("<","").replace(">","").split("=");
|
if(!Value.Condition) {
|
eli[0]=eli[0].replace("[","").replace("]","");
|
Value.Condition=eli[0];
|
}
|
Value.Value[eli[1]]=isColor? getSGColor(item.Value):item.Value;
|
});
|
data.value=Value;
|
}
|
return data;
|
}
|
|
// 根据样式文件 转为样式
|
function GetStyleByStyleJson (json) {
|
if(json instanceof Array) {
|
json=json[0];
|
}
|
let entity={ label: {},billboard: {} };
|
//字体颜色
|
if(json.TextColor.indexOf("Classification")>-1) {
|
entity.label.fillColor=getXMLData(json.TextColor,true);
|
} else {
|
entity.label.fillColor=getSGColor(json.TextColor);
|
}
|
|
//字体大小
|
if(json.TextSize.indexOf&&json.TextSize.indexOf("Classification")>-1) {
|
json.TextSize=getXMLData(json.TextSize);
|
json.TextSize.defaultValue=
|
Math.abs(parseInt(json.TextSize.defaultValue))+"px "+json.Font;
|
for(let key in json.TextSize.value.Value) {
|
json.TextSize.value.Value[key]=
|
Math.abs(parseInt(json.TextSize.value.Value[key]))+"px "+json.Font;
|
}
|
entity.label.font=json.TextSize;
|
} else {
|
entity.label.font=json.TextSize+"px "+json.Font;
|
}
|
//字体风格
|
// if (json.Font.indexOf("Classification") > -1) {
|
// json.Font = getXMLData(json.Font);
|
// entity.label.fontFamily = json.Font;
|
// }
|
// entity.label.sacle = json.Scale;
|
|
entity.label.showBackground=!!parseInt(json.BackgroundOpacity);
|
if(entity.label.showBackground) {
|
if(json.BackgroundColor.indexOf("Classification")>-1) {
|
entity.label.backgroundColor=getXMLData(json.BackgroundColor,true);
|
} else {
|
entity.label.backgroundColor=getSGColor(json.BackgroundColor);
|
}
|
}
|
|
entity.near=json.MinVisibilityDistance;
|
entity.far=json.MaxVisibilityDistance;
|
|
if(json.Text&&json.Text.indexOf("Classification")>-1) {
|
entity.label.text=getXMLData(json.Text);
|
} else {
|
entity.label.text=json.Text;
|
}
|
|
if(json.Imagefile&&json.Imagefile.indexOf("Classification")>-1) {
|
entity.billboard.image=getXMLData(json.Imagefile);
|
} else {
|
entity.billboard.image=json.Imagefile;
|
}
|
|
if(entity.billboard.image&&entity.label.text) {
|
entity.imageData={
|
horizontalOrigin: Cesium.HorizontalOrigin.RIGHT,
|
};
|
entity.labelData={
|
horizontalOrigin: Cesium.HorizontalOrigin.LEFT,
|
};
|
}
|
|
return entity;
|
}
|
|
//获取矢量切片注记点样式
|
async function getVectorStyleFromSG (treeNode,json) {
|
let de;
|
|
await axios.get(json).then((res) => {
|
let entitystyle=GetStyleByStyleJson(res.data);
|
|
de={
|
id: treeNode.id,
|
level_min: defaultValue(treeNode.minimumLevel,10),
|
level_max: defaultValue(treeNode.maximumLevel,22),
|
fillColor: defaultValue(entitystyle.label.fillColor,"#ffffff"),
|
outlineColor: defaultValue(entitystyle.label.outlineColor,"#ffffff"),
|
backgroundColor: defaultValue(
|
entitystyle.label.backgroundColor,
|
"#ffffff"
|
),
|
heightReference: defaultValue(treeNode.heightReference,1),
|
pointHeight: defaultValue(treeNode.pointHeight,undefined),
|
showBackground: defaultValue(entitystyle.label.showBackground,false),
|
outlineWidth: defaultValue(entitystyle.label.outlineWidth,1),
|
text: entitystyle.label.text,
|
image: entitystyle.billboard.image,
|
font: entitystyle.label.font,
|
near: entitystyle.near,
|
far: entitystyle.far,
|
disableDepthTestDistance: Number.POSITIVE_INFINITY,
|
scale: entitystyle.label.scale,
|
labelData: entitystyle.labelData,
|
imageData: entitystyle.imageData,
|
};
|
});
|
return de;
|
}
|
|
function defaultValue (a,b) {
|
return a!==undefined? a:b;
|
}
|
let hander,divPoint3;
|
let Base64=require("js-base64").Base64;
|
export default {
|
components: {
|
changePic,
|
},
|
data () {
|
return {
|
alldisabled: [],
|
defaultExpanded: [],
|
arr: [], //用来保存资源目录中默认选中的节点id
|
SmartEarthToken: undefined,
|
treeData: [],
|
defaultCheck: [],
|
form: {
|
points: "",
|
startTime: new Date("2016-06-01"),
|
endTime: new Date("2016-06-30"),
|
radio: "调频广播",
|
freqStart: "87",
|
freqEnd: "108",
|
analysisType: "频点",
|
},
|
nowfile: "",
|
showsituation: false,
|
imageid: null,
|
showpic: false,
|
pickerOptions: {},
|
chooseplase: "",
|
options: [],
|
regions: [],
|
radios: [],
|
colorContainer: {},
|
innerbac: {
|
width: "30%",
|
height: "70%",
|
border: "1px solid #000",
|
transform: "translate(40px,90px)",
|
backgroundImage:
|
"url("+require("@/assets/image/botbtn/color.png")+")",
|
backgroundPosition: "center",
|
backgroundSize: ` 100% 100%`,
|
},
|
showdata1: true,
|
showdata2: true,
|
showDianci: false,
|
|
};
|
},
|
mounted () {
|
window.ProjectTree=this.$refs.tree;
|
//获取token并请求加载图层数据
|
this.SmartEarthToken=common.smartearthtoken;
|
|
this.$nextTick(() => {
|
bus.$on("clearEve",(e) => {
|
this.reset();
|
});
|
bus.$on("radioData",(e) => {
|
this.radios=e;
|
});
|
bus.$on("guanzhou",(e) => {
|
this.form.startTime=e.fromdate;
|
this.form.endTime=e.todate;
|
});
|
bus.$on("areaData",(e) => {
|
this.regions=e;
|
});
|
bus.$on("showdio",(e) => {
|
this.showsituation=e=="7-1";
|
this.showdata1=true;
|
this.showdata2=true;
|
});
|
axios.get("./static/layers.json").then(
|
(response) => {
|
console.log(response);
|
// // 得到默认选中的数据的id
|
this.parseJson(response.data.children);
|
|
// //场景配置
|
this.treeData=response.data&&response.data.children;
|
this.setDefaultCheck(response.data);
|
},
|
(response) => {
|
console.log("获取场景配置失败!");
|
}
|
);
|
});
|
},
|
methods: {
|
// yhadd
|
closeJm () {
|
this.$parent.$parent.$parent.isShowResMenu=false;
|
},
|
|
// 递归遍历json,得到checked:true的数据的id,添加到arr中
|
parseJson (jsonObj) {
|
// 声明变量count,记录disabled存在的节点的全部数据
|
var count=0;
|
for(var v in jsonObj) {
|
var element=jsonObj[v];
|
if(element.expanded) {
|
this.defaultExpanded.push(element.id);
|
}
|
if(element.children==undefined||element.children.length==0) {
|
if(element._children==undefined||element._children.length==0) {
|
if(element.checked) {
|
this.arr.push(element.id);
|
}
|
if(element.urls==undefined||element.urls=="") {
|
element.disabled=true;
|
count++;
|
}
|
} else {
|
this.parseJson(element._children);
|
}
|
} else {
|
this.parseJson(element.children);
|
}
|
}
|
if(count!==0) {
|
// 添加含有disabled属性的节点数组,
|
this.alldisabled.push(jsonObj);
|
}
|
},
|
|
async setDefaultCheck (node) {
|
this.ergodicNode(node);
|
// this.$refs.tree.setCheckedKeys(this.defaultCheck);
|
// setTimeout(()=>{
|
// this.$refs.tree.setCheckedKeys(['tc3857']);
|
// },1000)
|
},
|
ergodicNode (node) {
|
if(node.expanded) {
|
this.defaultExpanded.push(node.id);
|
}
|
if(node.checked&&!node.children) {
|
this.defaultCheck.push(node.id);
|
if(!node.isAdd) {
|
if(node._children) {
|
if(node.thisView) {
|
if(node._children[0].children) {
|
node._children[0].children.forEach((item) => {
|
this.addTreeData(item);
|
});
|
} else {
|
this.addTreeData(node._children[0]);
|
}
|
} else {
|
node._children.forEach((item) => {
|
this.addTreeData(item);
|
});
|
}
|
} else {
|
this.addTreeData(node);
|
}
|
}
|
}
|
if(node.children&&node.children.length) {
|
node.children.forEach((item) => {
|
this.ergodicNode(item);
|
});
|
}
|
},
|
checkChange (treeNode,b1,b2) {
|
if(!treeNode.children&&!treeNode._children) {
|
var checkedKeys=this.$refs.tree.getCheckedKeys();
|
let isCheck=checkedKeys.indexOf(treeNode.id)>-1;
|
this.setVisiable(treeNode,isCheck);
|
}
|
},
|
setChecked (id) {
|
var checkedKeys=this.$refs.tree.getCheckedKeys();
|
let isCheck=checkedKeys.indexOf(id)>-1;
|
let treeNode=this.$refs.tree.getNode(id);
|
if(treeNode&&treeNode.data) {
|
this.setVisiable(treeNode.data,isCheck);
|
}
|
},
|
setNodeClick (treeNode,data) {
|
if(treeNode.id=="1A49A755") {
|
var tlobj={
|
value: false,
|
value1: true,
|
value2: false,
|
show: true,
|
};
|
bus.$emit("ishowDemoAnimation",tlobj);
|
}
|
},
|
check (treeNode,data) {
|
let isCheck=data.checkedKeys.indexOf(treeNode.id)>-1;
|
this.setVisiable(treeNode,isCheck);
|
},
|
setVisiable (treeNode,checked) {
|
if(checked!==undefined) {
|
treeNode.checked=checked;
|
} else {
|
treeNode.checked=!treeNode.checked;
|
}
|
if(treeNode.children) {
|
treeNode.children.forEach((item) => {
|
this.setVisiable(item,treeNode.checked);
|
});
|
return;
|
} else if(treeNode._children) {
|
if(treeNode.thisView==="ewzj") {
|
treeNode._children[0].checked=treeNode.checked;
|
if(treeNode._children[0].children) {
|
treeNode._children[0].children.forEach((item) => {
|
item.checked=treeNode.checked;
|
this.addTreeData(item);
|
});
|
} else {
|
this.addTreeData(treeNode._children[0]);
|
}
|
} else if(treeNode.thisView==="swzj") {
|
for(let i=1;i<treeNode._children.length;i++) {
|
treeNode._children[i].checked=treeNode.checked;
|
}
|
treeNode._children.forEach((item,index) => {
|
index!==0&&this.addTreeData(item);
|
});
|
} else if(!treeNode.thisView) {
|
treeNode._children.forEach((item,index) => {
|
item.checked=treeNode.checked;
|
if(item.children) {
|
item.children.forEach((_item) => {
|
_item.checked=item.checked;
|
this.addTreeData(_item);
|
});
|
} else {
|
this.addTreeData(item);
|
}
|
});
|
}
|
return;
|
}
|
|
if(!treeNode.isAdd) {
|
this.addTreeData(treeNode);
|
return;
|
}
|
|
let data=_getTreeData(treeNode.id);
|
if(data) {
|
data.item&&
|
data.item.setVisibility&&
|
data.item.setVisibility(treeNode.checked);
|
data.item&&
|
data.item.setVisible&&
|
data.item.setVisible(treeNode.checked);
|
data.item&&
|
data.item.show!==undefined&&
|
(data.item.show=treeNode.checked);
|
if(data.datatype==="particle") {
|
data.item.forEach((item) => {
|
item.show=treeNode.checked;
|
});
|
}
|
} else {
|
if(
|
treeNode.id&&
|
treeNode.id.indexOf&&
|
treeNode.id.indexOf("---")>-1
|
) {
|
var ids=id.split("---");
|
ids.forEach((item) => {
|
sgworld.ProjectTree.setVisibility(item,treeNode.checked);
|
});
|
} else {
|
sgworld.ProjectTree.setVisibility(treeNode.id,treeNode.checked);
|
|
var dd=Viewer.dataSources._dataSources.filter((item) => {
|
return item.name==treeNode.id;
|
});
|
if(dd&&dd.length>0) {
|
dd[0].show=treeNode.checked;
|
}
|
}
|
}
|
},
|
props (data) {
|
if(data.class==="imageLayer") {
|
window.treeObj={
|
rightClickData: data,
|
};
|
layerOpen("影像",{
|
width: 320,
|
height: 310,
|
url: "./static/html/layerProp.html",
|
fn: {
|
end: function() { },
|
},
|
});
|
} else if(data._children) {
|
if(data.thisView==="ewzj") {
|
data.thisView="swzj";
|
data.name="三维注记";
|
data._children[0].checked=false;
|
for(let i=1;i<data._children.length;i++) {
|
data._children[i].checked=data.checked;
|
}
|
data._children.forEach((item) => {
|
if(item.children) {
|
item.children.forEach((_item) => {
|
_item.checked=item.checked;
|
this.addTreeData(_item);
|
});
|
} else {
|
this.addTreeData(item);
|
}
|
});
|
} else if(data.thisView==="swzj") {
|
data.thisView="ewzj";
|
data.name="二维注记";
|
data._children[0].checked=data.checked;
|
for(let i=1;i<data._children.length;i++) {
|
data._children[i].checked=false;
|
}
|
data._children.forEach((item) => {
|
if(item.children) {
|
item.children.forEach((_item) => {
|
_item.checked=item.checked;
|
this.addTreeData(_item);
|
});
|
} else {
|
this.addTreeData(item);
|
}
|
});
|
}
|
}
|
},
|
flyTo (treeNode) {
|
if(treeNode.children) return;
|
if(treeNode.animationDatas) {
|
// return this.$refs.animationEdit.start(treeNode.animationDatas);
|
}
|
if(treeNode._children&&treeNode._children[0]) {
|
this.flyTo(treeNode._children[0]);
|
return;
|
}
|
if(treeNode&&treeNode.flyTo) {
|
if(treeNode&&treeNode.flyTo.length===3) {
|
sgworld.Navigate.flyToPosition(
|
treeNode.flyTo[0],
|
treeNode.flyTo[1],
|
treeNode.flyTo[2]
|
);
|
} else if(treeNode&&treeNode.flyTo.length===4) {
|
sgworld.Navigate.flyToPointsInterest({
|
destination: Cesium.Rectangle.fromDegrees(
|
treeNode.flyTo[0],
|
treeNode.flyTo[1],
|
treeNode.flyTo[2],
|
treeNode.flyTo[3]
|
),
|
});
|
} else {
|
sgworld.Navigate.flyToPointsInterest({
|
destination: Cesium.Cartesian3.fromDegrees(
|
treeNode.flyTo[0],
|
treeNode.flyTo[1],
|
treeNode.flyTo[2]
|
),
|
orientation: {
|
heading: treeNode.flyTo[3],
|
pitch: treeNode.flyTo[4],
|
roll: treeNode.flyTo[5],
|
},
|
});
|
}
|
return;
|
}
|
let data=sgworld.ProjectTree.getObject(treeNode.id);
|
data&&data.item
|
? sgworld.Navigate.flyToObj(data.item)
|
:sgworld.Navigate.flyToObj(data);
|
if(data&&data.datatype==="editEntity") {
|
data&&data.item&&sgworld.Navigate.flyToObj(data.item[data.type]);
|
}
|
},
|
renderContent (h,{ node,data,store }) {
|
if(data.icon) {
|
return (
|
<span class="custom-tree-node" on-dblclick={() => this.flyTo(data)}>
|
<span class="typeIcon">
|
<img src={data.icon} />
|
</span>
|
<span class="treeName">{data.name}</span>
|
</span>
|
);
|
} else {
|
return (
|
<span class="custom-tree-node" on-dblclick={() => this.flyTo(data)}>
|
<span class="treeName">{data.name}</span>
|
</span>
|
);
|
}
|
},
|
async addTreeData (treeNode) {
|
// if (treeNode.disabled) return;
|
let _data=sgworld.ProjectTree.getObject(treeNode.id);
|
let pID=0;
|
|
if(_data) {
|
sgworld.ProjectTree.setVisibility(treeNode.id,treeNode.checked);
|
return;
|
} else {
|
_data=_getTreeData(treeNode.id);
|
if(_data) {
|
_data.item&&
|
_data.item.setVisibility&&
|
_data.item.setVisibility(treeNode.checked);
|
_data.item&&
|
_data.item.setVisible&&
|
_data.item.setVisible(treeNode.checked);
|
_data.item&&
|
_data.item.show!==undefined&&
|
(_data.item.show=treeNode.checked);
|
if(_data.datatype==="particle") {
|
_data.item.forEach((item) => {
|
item.show=treeNode.checked;
|
});
|
}
|
return;
|
}
|
}
|
if(!treeNode.urls||treeNode.isAdd) return;
|
treeNode.isAdd=true;
|
|
let layer;
|
treeNode.token&&
|
treeNode.token==="SmartEarthToken"&&
|
(treeNode.token=this.SmartEarthToken);
|
switch(treeNode.sourceType) {
|
case "tms":
|
layer=sgworld.Creator.createImageryProvider(
|
treeNode.name,
|
"tms",
|
{
|
id: treeNode.id,
|
url: treeNode.urls,
|
fileExtension: treeNode.img||"png",
|
enablePickFeatures: false,
|
alpha: treeNode.alpha,
|
},
|
"0",
|
undefined,
|
true,
|
""
|
);
|
|
break;
|
case "local-map":
|
// 添加本地地图
|
if(treeNode.tms) {
|
layer=sgworld.Creator.createImageryProvider(
|
treeNode.name,
|
"tms",
|
{
|
id: treeNode.id,
|
url: treeNode.urls,
|
fileExtension: treeNode.img||"png",
|
enablePickFeatures: false,
|
level: treeNode.Level,
|
minimumLevel: treeNode.minimumLevel,
|
maximumLevel: treeNode.maximumLevel,
|
tilingScheme:
|
treeNode.tileType==="Geo"
|
? new Cesium.GeographicTilingScheme()
|
:new Cesium.WebMercatorTilingScheme(),
|
alpha: treeNode.alpha,
|
},
|
"0",
|
treeNode.zIndex,
|
true,
|
""
|
);
|
} else {
|
layer=sgworld.Creator.createUrlTemplateImageryProvider(
|
treeNode.name,
|
{
|
id: treeNode.id,
|
url: `${treeNode.urls}/${treeNode.tile||"{z}/{x}/{y}"}.${
|
treeNode.img||"png"
|
}`,
|
enablePickFeatures: false,
|
level: treeNode.Level,
|
minimumLevel: treeNode.minimumLevel,
|
maximumLevel: treeNode.maximumLevel,
|
tilingScheme:
|
treeNode.tileType==="Geo"
|
? new Cesium.GeographicTilingScheme()
|
:new Cesium.WebMercatorTilingScheme(),
|
alpha: treeNode.alpha,
|
},
|
"0",
|
treeNode.zIndex,
|
true,
|
""
|
);
|
}
|
break;
|
case "kml":
|
// 添加kml数据
|
layer=sgworld.Creator.addKmlLayer(
|
treeNode.name,
|
{
|
id: treeNode.id,
|
url: treeNode.urls,
|
},
|
true
|
);
|
break;
|
case "google":
|
// 添加谷歌地图
|
layer=sgworld.Creator.createUrlTemplateImageryProvider(
|
treeNode.name,
|
{
|
id: treeNode.id,
|
url: treeNode.urls,
|
enablePickFeatures: false,
|
level: treeNode.Level,
|
minimumLevel: treeNode.minimumLevel,
|
maximumLevel: treeNode.maximumLevel,
|
alpha: treeNode.alpha,
|
},
|
"0",
|
treeNode.zIndex,
|
true,
|
""
|
);
|
break;
|
case "arcgis":
|
// arcgis地图
|
layer=sgworld.Creator.createArcGisImageryLayer(
|
treeNode.name,
|
{
|
id: treeNode.id,
|
url: treeNode.urls,
|
enablePickFeatures: false,
|
level: treeNode.Level,
|
usePreCachedTilesIfAvailable: treeNode.GCJ02? false:true, // 是否使用服务的内置的切片方案,偏移纠正需要使用如下自定义的方案
|
tilingScheme: treeNode.GCJ02
|
? sgworld.Core.getOffsetTilingScheme()
|
:undefined, // 偏移纠正
|
minimumLevel: treeNode.minimumLevel,
|
maximumLevel: treeNode.maximumLevel,
|
alpha: treeNode.alpha,
|
},
|
"0",
|
treeNode.zIndex,
|
true,
|
""
|
);
|
break;
|
case "mapbox":
|
// mapbox地图
|
layer=sgworld.Creator.createImageryProvider(
|
treeNode.name,
|
"MapBox",
|
{
|
id: treeNode.id,
|
name: treeNode.name,
|
level: treeNode.Level,
|
enablePickFeatures: false,
|
mapId: treeNode.mapId,
|
minimumLevel: treeNode.minimumLevel,
|
maximumLevel: treeNode.maximumLevel,
|
alpha: treeNode.alpha,
|
accessToken:
|
treeNode.token||
|
"pk.eyJ1IjoibWFyc2dpcyIsImEiOiJja2Fod2xlanIwNjJzMnhvMXBkMnNqcjVpIn0.WnxikCaN2KV_zn9tLZO77A",
|
},
|
"0",
|
treeNode.zIndex,
|
true,
|
""
|
);
|
break;
|
case "tdmap":
|
// 天地图
|
layer=sgworld.Creator.createWebMapTileServerImageLayer(
|
treeNode.name,
|
{
|
id: treeNode.id,
|
url: treeNode.urls,
|
level: treeNode.Level,
|
minimumLevel: treeNode.minimumLevel,
|
maximumLevel: 18,
|
style: treeNode.style,
|
layer: treeNode.layer,
|
format: treeNode.format,
|
enablePickFeatures: false,
|
tileMatrixSetID: "tiff",
|
show: true,
|
subdomains: ["t0","t1","t2","t3","t4","t5","t6","t7"],
|
alpha: treeNode.alpha,
|
},
|
"0",
|
treeNode.zIndex,
|
true,
|
""
|
);
|
break;
|
case "tdt_label":
|
// 天地图三维注记
|
layer=sgworld.Creator.GeoWTFS({
|
token: treeNode.token||"c53eb074c3fcba5ac86103d4d711bbe8",
|
url: treeNode.urls,
|
subdomains: ["0","1","2","3","4","5","6","7"],
|
});
|
break;
|
case "txmap":
|
// 腾讯地图
|
layer=sgworld.Creator.createUrlTemplateImageryProvider(
|
treeNode.name,
|
{
|
id: treeNode.id,
|
url: treeNode.urls,
|
level: treeNode.Level,
|
enablePickFeatures: false,
|
minimumLevel: treeNode.minimumLevel,
|
maximumLevel: 18,
|
alpha: treeNode.alpha,
|
tilingScheme: sgworld.Core.getOffsetTilingScheme(), // 偏移纠正
|
customTags: {
|
sx: (_imageryProvider,x) => {
|
return x>>4;
|
},
|
sy: (_imageryProvider,_x,y,level) => {
|
return ((1<<level)-y)>>4;
|
},
|
},
|
},
|
"0",
|
treeNode.zIndex,
|
true,
|
""
|
);
|
break;
|
case "gdmap":
|
// 高德地图
|
layer=sgworld.Creator.createUrlTemplateImageryProvider(
|
treeNode.name,
|
{
|
id: treeNode.id,
|
url: treeNode.urls,
|
enablePickFeatures: false,
|
level: treeNode.Level,
|
minimumLevel: treeNode.minimumLevel,
|
maximumLevel: 18,
|
tilingScheme: sgworld.Core.getOffsetTilingScheme(), // 偏移纠正
|
alpha: treeNode.alpha,
|
},
|
"0",
|
treeNode.zIndex,
|
true,
|
""
|
);
|
break;
|
case "bdmap":
|
// 百度地图
|
layer=sgworld.Creator.createImageryProvider(
|
treeNode.name,
|
"BaiduMap",
|
{
|
id: treeNode.id,
|
level: treeNode.Level,
|
enablePickFeatures: false,
|
style: treeNode.style,
|
minimumLevel: treeNode.minimumLevel,
|
maximumLevel: treeNode.maximumLevel,
|
alpha: treeNode.alpha,
|
},
|
"0",
|
treeNode.zIndex,
|
true,
|
""
|
);
|
break;
|
case "cesiumblack":
|
// cesiumIon黑夜地图
|
layer=sgworld.Creator.createImageryProvider(
|
treeNode.name,
|
"cesiumBlack",
|
{
|
id: treeNode.id,
|
url: treeNode.urls,
|
flipXY: true,
|
enablePickFeatures: false,
|
level: treeNode.Level,
|
minimumLevel: treeNode.minimumLevel,
|
maximumLevel: treeNode.maximumLevel,
|
alpha: treeNode.alpha,
|
},
|
"0",
|
treeNode.zIndex,
|
true,
|
""
|
);
|
break;
|
case "osm":
|
// osm地图
|
layer=sgworld.Creator.createImageryProvider(
|
treeNode.name,
|
"OpenStreetMap",
|
{
|
id: treeNode.id,
|
url: treeNode.urls,
|
enablePickFeatures: false,
|
level: treeNode.Level,
|
minimumLevel: treeNode.minimumLevel,
|
maximumLevel: treeNode.maximumLevel,
|
alpha: treeNode.alpha,
|
},
|
"0",
|
treeNode.zIndex,
|
true,
|
""
|
);
|
break;
|
case "wmts":
|
// wmts影像
|
layer=sgworld.Creator.createWebMapTileServerImageLayer(
|
treeNode.name,
|
{
|
id: treeNode.id,
|
url: treeNode.urls,
|
level: treeNode.Level,
|
style: treeNode.style,
|
layer: treeNode.layer,
|
enablePickFeatures: false,
|
format: treeNode.format,
|
tileMatrixSetID: treeNode.srs,
|
tilingScheme:
|
treeNode.tileType==="Geo"
|
? new Cesium.GeographicTilingScheme()
|
:new Cesium.WebMercatorTilingScheme(),
|
show: true,
|
minimumLevel: treeNode.minimumLevel,
|
maximumLevel: treeNode.maximumLevel,
|
alpha: treeNode.alpha,
|
},
|
"0",
|
treeNode.zIndex,
|
true,
|
""
|
);
|
break;
|
case "gis_wmts":
|
// gisserver wmst影像
|
layer=sgworld.Creator.createUrlTemplateImageryProvider(
|
treeNode.name,
|
{
|
id: treeNode.id,
|
url: Cesium.buildModuleUrl(
|
treeNode.urls+"/{z}/{x}/{reverseY}.png"
|
),
|
enablePickFeatures: false,
|
level: treeNode.Level,
|
minimumLevel: treeNode.minimumLevel,
|
maximumLevel: treeNode.maximumLevel,
|
alpha: treeNode.alpha,
|
},
|
"0",
|
treeNode.zIndex,
|
true,
|
""
|
);
|
break;
|
case "wmts_zj":
|
// 行列号差两倍的wmts
|
var geotil=new Cesium.GeographicTilingScheme({
|
rectangle: Cesium.Rectangle.MAX_VALUE,
|
});
|
if(treeNode.addLevel&&treeNode.addLevel===2) {
|
geotil.positionToTileXY=function(position,level,result) {
|
level>0&&level++;
|
var rectangle=this._rectangle;
|
if(!Cesium.Rectangle.contains(rectangle,position)) {
|
// outside the bounds of the tiling scheme
|
return undefined;
|
}
|
|
var xTiles=this.getNumberOfXTilesAtLevel(level);
|
var yTiles=this.getNumberOfYTilesAtLevel(level);
|
|
var xTileWidth=rectangle.width/xTiles;
|
var yTileHeight=rectangle.height/yTiles;
|
|
var longitude=position.longitude;
|
if(rectangle.east<rectangle.west) {
|
longitude+=Cesium.Math.TWO_PI;
|
}
|
|
var xTileCoordinate=
|
((longitude-rectangle.west)/xTileWidth)|0;
|
if(xTileCoordinate>=xTiles) {
|
xTileCoordinate=xTiles-1;
|
}
|
|
var yTileCoordinate=
|
((rectangle.north-position.latitude)/yTileHeight)|0;
|
if(yTileCoordinate>=yTiles) {
|
yTileCoordinate=yTiles-1;
|
}
|
|
if(!Cesium.defined(result)) {
|
return new Cesium.Cartesian2(xTileCoordinate,yTileCoordinate);
|
}
|
|
result.x=xTileCoordinate;
|
result.y=yTileCoordinate;
|
return result;
|
};
|
geotil.tileXYToRectangle=function(x,y,level,result) {
|
level>0&&level++;
|
var rectangle=this._rectangle;
|
|
var xTiles=this.getNumberOfXTilesAtLevel(level);
|
var yTiles=this.getNumberOfYTilesAtLevel(level);
|
|
var xTileWidth=rectangle.width/xTiles;
|
var west=x*xTileWidth+rectangle.west;
|
var east=(x+1)*xTileWidth+rectangle.west;
|
|
var yTileHeight=rectangle.height/yTiles;
|
var north=rectangle.north-y*yTileHeight;
|
var south=rectangle.north-(y+1)*yTileHeight;
|
|
if(!Cesium.defined(result)) {
|
result=new Cesium.Rectangle(west,south,east,north);
|
}
|
|
result.west=west;
|
result.south=south;
|
result.east=east;
|
result.north=north;
|
return result;
|
};
|
}
|
layer=sgworld.Creator.createWebMapTileServerImageLayer(
|
treeNode.name,
|
{
|
id: treeNode.id,
|
url: treeNode.urls,
|
layer: treeNode.layer,
|
level: treeNode.Level,
|
minimumLevel: treeNode.minimumLevel,
|
maximumLevel: treeNode.maximumLevel,
|
style: "default",
|
tileMatrixSetID: "esritilematirx",
|
format: "image/png",
|
tilingScheme: geotil,
|
addLevel: treeNode.addLevel||1, //层级加一
|
enablePickFeatures: false,
|
show: true,
|
alpha: treeNode.alpha,
|
},
|
"0",
|
treeNode.zIndex,
|
true,
|
""
|
);
|
break;
|
case "wms":
|
case "wmsc":
|
// wms数据
|
var parameters={
|
service: "WMS",
|
format: "image/png",
|
transparent: true,
|
};
|
if(treeNode.removeNullValue) {
|
if(treeNode.nullvalue) {
|
treeNode.nullvalue=treeNode.nullvalue.replace("rgb(","");
|
treeNode.nullvalue=treeNode.nullvalue.replace(")","");
|
}
|
parameters.nullvalue=sgworld.Core.defaultValue(
|
treeNode.nullvalue,
|
"0,0,0"
|
);
|
parameters.nulltolerance=sgworld.Core.defaultValue(
|
treeNode.nulltolerance,
|
0
|
);
|
}
|
treeNode.token&&(treeNode.urls+="?token="+treeNode.token);
|
if(treeNode.sourceType==="wmsc") {
|
layer=sgworld.Creator.createCacheImageryProvider(
|
treeNode.name,
|
{
|
id: treeNode.id,
|
url: treeNode.urls||"",
|
layers: treeNode.layer||"",
|
level: treeNode.Level,
|
enablePickFeatures: false,
|
cacheUrl: treeNode.cacheUrl||treeNode.urls,
|
fileExtension: treeNode.fileExtension,
|
cacheMaxLevel: treeNode.cacheMaxLevel||16,
|
alpha: treeNode.alpha,
|
},
|
"0",
|
treeNode.zIndex,
|
treeNode.checked,
|
""
|
);
|
} else {
|
layer=sgworld.Creator.createImageryProvider(
|
treeNode.name,
|
"wms",
|
{
|
id: treeNode.id,
|
url: treeNode.urls,
|
layers: treeNode.layer||"",
|
level: treeNode.Level,
|
minimumLevel: treeNode.minimumLevel,
|
maximumLevel: treeNode.maximumLevel,
|
enablePickFeatures: false,
|
parameters: parameters,
|
alpha: treeNode.alpha,
|
},
|
"0",
|
treeNode.zIndex,
|
true,
|
""
|
);
|
}
|
break;
|
|
case "wfs":
|
// wfs数据
|
layer=sgwfs.CreateWfs(treeNode.class,treeNode);
|
break;
|
case "geojson":
|
if(treeNode.class==="point") {
|
treeNode.disableDepthTestDistance==="Infinity"&&
|
(treeNode.disableDepthTestDistance=Number.POSITIVE_INFINITY);
|
|
de={
|
id: treeNode.id,
|
fillColor: sgworld.Core.defaultValue(treeNode.color,"#ffffff"),
|
color: sgworld.Core.defaultValue(treeNode.imageColor,undefined),
|
outlineColor: sgworld.Core.defaultValue(
|
treeNode.outlineColor,
|
"#ffffff"
|
),
|
backgroundColor: sgworld.Core.defaultValue(
|
treeNode.backgroundColor,
|
"#ffffff"
|
),
|
heightReference: sgworld.Core.defaultValue(
|
treeNode.heightReference,
|
0
|
),
|
pointHeight: sgworld.Core.defaultValue(
|
treeNode.pointHeight,
|
undefined
|
),
|
near: sgworld.Core.defaultValue(treeNode.near,0),
|
far: sgworld.Core.defaultValue(treeNode.far,99999999999),
|
bold: treeNode.bold,
|
italic: treeNode.italic,
|
showBackground: treeNode.showBackground,
|
outlineWidth: sgworld.Core.defaultValue(treeNode.outlineWidth,1),
|
text: treeNode.text,
|
image: treeNode.image,
|
font_size: treeNode.size,
|
font_family: sgworld.Core.defaultValue(
|
treeNode.font_family,
|
"微软雅黑"
|
),
|
disableDepthTestDistance: sgworld.Core.defaultValue(
|
treeNode.disableDepthTestDistance,
|
undefined
|
),
|
labelData: treeNode.labelData,
|
imageData: treeNode.imageData,
|
};
|
|
if(
|
treeNode.text&&
|
treeNode.image&&
|
!treeNode.labelData&&
|
!treeNode.imageData
|
) {
|
de.labelData={
|
horizontalOrigin: Cesium.HorizontalOrigin.LEFT,
|
pixelOffset: new Cesium.Cartesian2(20,0),
|
};
|
de.imageData={
|
horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
|
pixelOffset: new Cesium.Cartesian2(0,0),
|
};
|
}
|
layer=sgworld.Creator.createLabelPointGeoJsonFeatureLayer(
|
treeNode.name,
|
treeNode.urls,
|
de,
|
"0",
|
treeNode.checked
|
);
|
} else if(treeNode.class==="polyline") {
|
de={
|
id: treeNode.id,
|
layertype: "polylinelayer",
|
material: sgworld.Core.defaultValue(treeNode.color,"#ffffff"),
|
outlineColor: sgworld.Core.defaultValue(
|
treeNode.outlineColor,
|
"#ffffff"
|
),
|
outlineWidth: sgworld.Core.defaultValue(treeNode.outlineWidth,0),
|
height: sgworld.Core.defaultValue(treeNode.height,undefined),
|
width: sgworld.Core.defaultValue(treeNode.width,2),
|
clampToGround: sgworld.Core.defaultValue(
|
treeNode.clampToGround,
|
true
|
),
|
classificationType: treeNode.classificationType,
|
dash: sgworld.Core.defaultValue(treeNode.dash,false),
|
dashLength: sgworld.Core.defaultValue(treeNode.dashLength,20),
|
gapColor: sgworld.Core.defaultValue(
|
treeNode.gapColor,
|
"rgba(0,0,0,0)"
|
),
|
near: sgworld.Core.defaultValue(treeNode.near,0),
|
far: sgworld.Core.defaultValue(treeNode.far,Infinity),
|
};
|
|
layer=sgworld.Creator.createPolylineGeoJsonFeatureLayer(
|
treeNode.name,
|
treeNode.urls,
|
de,
|
"0",
|
treeNode.checked
|
);
|
} else if(treeNode.class==="polylineVolume") {
|
de={
|
id: treeNode.id,
|
material: sgworld.Core.defaultValue(treeNode.color,"#ff0000"),
|
slttype: "0",
|
number: "4",
|
exradius: "1",
|
inradius: "1",
|
orth_width: "2",
|
orth_height: "2",
|
radius: sgworld.Core.defaultValue(treeNode.radius,5),
|
cornerType: "0",
|
heightReference: "0",
|
height: sgworld.Core.defaultValue(treeNode.lineHeight,0),
|
near: "0",
|
far: "99999999999",
|
radiusScale: treeNode.radiusScale,
|
connect: true,
|
};
|
layer=sgworld.Creator.createpolylineVolumeGeojsonPrimitiveLayer(
|
treeNode.name,
|
treeNode.urls,
|
de,
|
"0",
|
true,
|
function(data) {
|
if(treeNode.flow) {
|
let lines=data.entities.values;
|
lines.forEach((line) => {
|
line.polylineVolume.material=
|
sgworld.Core.getTrailLinkMaterial(
|
sgworld.Core.defaultValue(treeNode.color,"#ff0000"),
|
"../static/images/smoke.png",
|
9000
|
);
|
});
|
}
|
}
|
);
|
} else if(treeNode.class==="model") {
|
de={
|
id: treeNode.id,
|
collect: 0,
|
uri: sgworld.Core.defaultValue(treeNode.model,""),
|
file: "",
|
color: sgworld.Core.defaultValue(treeNode.color,"#ffffff"),
|
scale: sgworld.Core.defaultValue(treeNode.scale,1),
|
heightReference: 0,
|
height: sgworld.Core.defaultValue(treeNode.height,0),
|
near: "0",
|
far: "99999999999",
|
};
|
layer=sgworld.Creator.createModelPointGeoJsonFeatureLayer(
|
treeNode.name,
|
treeNode.urls,
|
de,
|
"0",
|
true
|
);
|
} else if(treeNode.class==="polygon") {
|
treeNode.disableDepthTestDistance==="Infinity"&&
|
(treeNode.disableDepthTestDistance=Number.POSITIVE_INFINITY);
|
|
de={
|
id: treeNode.id,
|
material: sgworld.Core.defaultValue(treeNode.color,"#ff0000"),
|
height: sgworld.Core.defaultValue(treeNode.height,0),
|
outlineColor: sgworld.Core.defaultValue(
|
treeNode.outlineColor,
|
"#ff0000"
|
),
|
extrudedHeight: sgworld.Core.defaultValue(
|
treeNode.extrudedHeight,
|
0
|
),
|
outlineWidth: sgworld.Core.defaultValue(treeNode.outlineWidth,0),
|
outline: sgworld.Core.defaultValue(treeNode.outline,true),
|
clampToGround: sgworld.Core.defaultValue(
|
treeNode.clampToGround,
|
treeNode.extrudedHeight===undefined&&
|
treeNode.height===undefined
|
),
|
classificationType: treeNode.classificationType,
|
near: sgworld.Core.defaultValue(treeNode.near,0),
|
far: sgworld.Core.defaultValue(treeNode.far,Infinity),
|
|
text: treeNode.text,
|
font: sgworld.Core.defaultValue(treeNode.font,"微软雅黑"),
|
labelNear: treeNode.labelNear,
|
labelFar: treeNode.labelFar,
|
fontSize: sgworld.Core.defaultValue(treeNode.size,"18px"),
|
italic: treeNode.italic,
|
bold: treeNode.bold,
|
pixelOffset: new Cesium.Cartesian2(
|
sgworld.Core.defaultValue(treeNode.offsetX,0),
|
sgworld.Core.defaultValue(treeNode.offsetY,0)
|
),
|
labelOutlineWidth: 2,
|
disableDepthTestDistance: treeNode.disableDepthTestDistance,
|
|
water: treeNode.water,
|
};
|
layer=sgworld.Creator.createPolygonGeoJsonFeatureLayer(
|
treeNode.name,
|
treeNode.urls,
|
de,
|
"0",
|
treeNode.checked
|
);
|
}
|
break;
|
case "pathLayer":
|
layer=sgworld.Creator.createPathLayer({
|
id: treeNode.id,
|
url: treeNode.url,
|
color: treeNode.color||"#0033FF", //线的颜色
|
width: treeNode.width||4.0, //线的宽度
|
pointColor: treeNode.pointColor||"#FFFFFF", //移动点的颜色
|
speed: treeNode.speed||5,
|
far: treeNode.far||5000,
|
});
|
break;
|
case "vector": {
|
let urls={
|
url: treeNode.urls,
|
layer: treeNode.layer,
|
srs: treeNode.srs,
|
};
|
if(
|
treeNode.class==="point"||
|
treeNode.class==="label"||
|
treeNode.class==="image"
|
) {
|
treeNode.disableDepthTestDistance==="Infinity"&&
|
(treeNode.disableDepthTestDistance=Number.POSITIVE_INFINITY);
|
if(treeNode.style) {
|
// de = getVectorStyleFromSG(treeNode, treeNode.style);
|
} else {
|
de={
|
id: treeNode.id,
|
level_min: sgworld.Core.defaultValue(treeNode.minimumLevel,10),
|
level_max: sgworld.Core.defaultValue(treeNode.maximumLevel,22),
|
fillColor: sgworld.Core.defaultValue(treeNode.color,"#ffffff"),
|
color: sgworld.Core.defaultValue(
|
treeNode.imageColor,
|
undefined
|
),
|
outlineColor: sgworld.Core.defaultValue(
|
treeNode.outlineColor,
|
"#ffffff"
|
),
|
backgroundColor: sgworld.Core.defaultValue(
|
treeNode.backgroundColor,
|
"#ffffff"
|
),
|
heightReference: sgworld.Core.defaultValue(
|
treeNode.heightReference,
|
0
|
),
|
pointHeight: sgworld.Core.defaultValue(
|
treeNode.pointHeight,
|
undefined
|
),
|
near: sgworld.Core.defaultValue(treeNode.near,0),
|
far: sgworld.Core.defaultValue(treeNode.far,99999999999),
|
bold: treeNode.bold,
|
italic: treeNode.italic,
|
showBackground: treeNode.showBackground,
|
outlineWidth: sgworld.Core.defaultValue(
|
treeNode.outlineWidth,
|
1
|
),
|
text: treeNode.text,
|
image: treeNode.image,
|
font_size: treeNode.size,
|
font_family: sgworld.Core.defaultValue(
|
treeNode.font_family,
|
"微软雅黑"
|
),
|
disableDepthTestDistance: sgworld.Core.defaultValue(
|
treeNode.disableDepthTestDistance,
|
undefined
|
),
|
labelData: treeNode.labelData,
|
imageData: treeNode.imageData,
|
};
|
}
|
|
if(
|
treeNode.text&&
|
treeNode.image&&
|
!treeNode.labelData&&
|
!treeNode.imageData
|
) {
|
de.labelData={
|
horizontalOrigin: Cesium.HorizontalOrigin.LEFT,
|
pixelOffset: new Cesium.Cartesian2(20,0),
|
};
|
de.imageData={
|
horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
|
pixelOffset: new Cesium.Cartesian2(0,0),
|
};
|
}
|
urls.upperLevelLimit=de.level_max;
|
urls.lowerLevelLimit=de.level_min;
|
layer=sgworld.Creator.createLabelImageGeoJsonFeatureLayerProvider(
|
treeNode.name,
|
urls,
|
de,
|
"0",
|
treeNode.checked,
|
function() { }
|
);
|
} else if(treeNode.class==="polylineVolume") {
|
de={
|
id: treeNode.id,
|
level_min: sgworld.Core.defaultValue(treeNode.minimumLevel,10),
|
level_max: sgworld.Core.defaultValue(treeNode.maximumLevel,22),
|
material: sgworld.Core.defaultValue(treeNode.color,"#ff0000"),
|
slttype: "0",
|
number: "4",
|
exradius: "1",
|
inradius: "1",
|
orth_width: "2",
|
orth_height: "2",
|
radius: sgworld.Core.defaultValue(treeNode.radius,0.5),
|
cornerType: "0",
|
heightReference: "0",
|
height: sgworld.Core.defaultValue(treeNode.height,0),
|
near: sgworld.Core.defaultValue(treeNode.near,0),
|
far: sgworld.Core.defaultValue(treeNode.far,99999999999),
|
radiusScale: treeNode.radiusScale,
|
};
|
urls.upperLevelLimit=de.level_max;
|
urls.lowerLevelLimit=de.level_min;
|
layer=sgworld.Creator.createVolumeGeoJsonFeatureLayerProvider(
|
treeNode.name,
|
urls,
|
de,
|
"0",
|
treeNode.checked,
|
function() { }
|
);
|
} else if(treeNode.class==="polyline") {
|
de={
|
id: treeNode.id,
|
layertype: "polylinelayer",
|
level_min: sgworld.Core.defaultValue(treeNode.minimumLevel,10),
|
level_max: sgworld.Core.defaultValue(treeNode.maximumLevel,22),
|
material: sgworld.Core.defaultValue(treeNode.color,"#ffffff"),
|
outlineColor: sgworld.Core.defaultValue(
|
treeNode.outlineColor,
|
"#ffffff"
|
),
|
outlineWidth: sgworld.Core.defaultValue(treeNode.outlineWidth,0),
|
height: sgworld.Core.defaultValue(treeNode.height,undefined),
|
width: sgworld.Core.defaultValue(treeNode.width,2),
|
clampToGround: sgworld.Core.defaultValue(
|
treeNode.clampToGround,
|
true
|
),
|
classificationType: treeNode.classificationType,
|
dash: sgworld.Core.defaultValue(treeNode.dash,false),
|
dashLength: sgworld.Core.defaultValue(treeNode.dashLength,20),
|
gapColor: sgworld.Core.defaultValue(
|
treeNode.gapColor,
|
"rgba(0,0,0,0)"
|
),
|
near: sgworld.Core.defaultValue(treeNode.near,0),
|
far: sgworld.Core.defaultValue(treeNode.far,Infinity),
|
};
|
urls.upperLevelLimit=de.level_max;
|
urls.lowerLevelLimit=de.level_min;
|
|
layer=
|
sgworld.Creator.createPrimitivePolylineVectorGeoJsonFeatureLayerProvider(
|
treeNode.name,
|
urls,
|
de,
|
"0",
|
treeNode.checked,
|
function() { }
|
);
|
} else if(treeNode.class==="polygon") {
|
de={
|
id: treeNode.id,
|
layertype: "polygonlayer",
|
level_min: sgworld.Core.defaultValue(treeNode.minimumLevel,10),
|
level_max: sgworld.Core.defaultValue(treeNode.maximumLevel,22),
|
material: sgworld.Core.defaultValue(treeNode.color,"#ff0000"),
|
heightReference: "1",
|
height: sgworld.Core.defaultValue(treeNode.height,0),
|
extrudedHeight: sgworld.Core.defaultValue(
|
treeNode.extrudedHeight,
|
0
|
),
|
extrudedHeightReference: "1",
|
clampToGround: sgworld.Core.defaultValue(
|
treeNode.clampToGround,
|
false
|
),
|
classificationType: treeNode.classificationType,
|
near: sgworld.Core.defaultValue(treeNode.near,0),
|
far: sgworld.Core.defaultValue(treeNode.far,Infinity),
|
};
|
urls.upperLevelLimit=de.level_max;
|
urls.lowerLevelLimit=de.level_min;
|
layer=
|
sgworld.Creator.createGeoJsonFeatureLayerProviderOptimization(
|
treeNode.name,
|
urls,
|
de,
|
"0",
|
treeNode.checked,
|
function() { }
|
);
|
} else if(treeNode.class==="model") {
|
de={
|
id: treeNode.id,
|
level_min: sgworld.Core.defaultValue(treeNode.minimumLevel,10),
|
level_max: sgworld.Core.defaultValue(treeNode.maximumLevel,22),
|
collect: 0,
|
uri: sgworld.Core.defaultValue(treeNode.model,""),
|
file: "",
|
color: sgworld.Core.defaultValue(treeNode.color,"#ffffff"),
|
scale: sgworld.Core.defaultValue(treeNode.scale,1),
|
heightReference: 0,
|
height: sgworld.Core.defaultValue(treeNode.height,0),
|
near: "0",
|
far: "99999999999",
|
};
|
//模型点
|
urls.upperLevelLimit=de.level_max;
|
urls.lowerLevelLimit=de.level_min;
|
layer=sgworld.Creator.createModelGeoJsonFeatureLayerProvider(
|
treeNode.name,
|
urls,
|
de,
|
"0",
|
treeNode.checked,
|
function() { }
|
);
|
}
|
layer&&(treeNode.id=layer.treeobj.id);
|
break;
|
}
|
case "terrain":
|
layer=sgworld.Creator.createTerrain(
|
treeNode.name,
|
{
|
id: treeNode.id,
|
requestVertexNormals: true,
|
url: treeNode.urls,
|
},
|
"0",
|
true,
|
""
|
);
|
break;
|
case "sgsterrain":
|
layer=sgworld.Creator.sfsterrainprovider(
|
treeNode.name,
|
{
|
id: treeNode.id,
|
layerName: treeNode.layer,
|
requestVertexNormals: true,
|
url: treeNode.urls||"",
|
token: treeNode.token,
|
cacheUrl: treeNode.cacheUrl,
|
cacheLevel: treeNode.cacheLevel,
|
},
|
"0",
|
true,
|
""
|
);
|
break;
|
case "sgsterrain7.1":
|
layer=sgworld.Creator.sfsterrainprovider71(
|
treeNode.name,
|
{
|
id: treeNode.id,
|
layerName: treeNode.layer,
|
requestVertexNormals: true,
|
url: treeNode.urls,
|
token: treeNode.token,
|
cacheUrl: treeNode.cacheUrl,
|
cacheLevel: treeNode.cacheLevel,
|
},
|
"0",
|
true,
|
""
|
);
|
break;
|
case "arcgisterrain":
|
layer=sgworld.Creator.createArcGISTerrain(
|
treeNode.name,
|
{
|
id: treeNode.id,
|
requestVertexNormals: true,
|
url: treeNode.urls,
|
},
|
"0",
|
true,
|
""
|
);
|
break;
|
case "CesiumGlobeTerrain":
|
layer=sgworld.Creator.createCesiumTerrain(
|
treeNode.name,
|
{
|
id: treeNode.id,
|
requestVertexNormals: true,
|
},
|
"0",
|
true,
|
""
|
);
|
break;
|
case "b3dm":
|
layer=sgworld.Creator.create3DTilesets(
|
treeNode.name,
|
treeNode.urls,
|
{
|
id: treeNode.id,
|
Level: treeNode.Level,
|
maximumScreenSpaceError:
|
treeNode.maximumScreenSpaceError&&
|
parseInt(treeNode.maximumScreenSpaceError),
|
maximumMemoryUsage:
|
treeNode.maximumMemoryUsage&&
|
parseInt(treeNode.maximumMemoryUsage),
|
geometricError:
|
treeNode.geometricError&&parseInt(treeNode.geometricError),
|
},
|
{
|
groundCenter: treeNode.Center,
|
groundheight: treeNode.modelHeight,
|
heading: treeNode.heading,
|
pitch: treeNode.pitch,
|
roll: treeNode.roll,
|
effects: treeNode.effects||false,
|
effectsMaxHeight: treeNode.effectsMaxHeight||150,
|
colors: treeNode.alpha
|
? "rgba(255,255,255,"+treeNode.alpha+")"
|
:treeNode.color||undefined,
|
},
|
"0",
|
true
|
);
|
break;
|
case "s3m":
|
layer=sgworld.Creator.createS3MLayer(
|
treeNode.urls,
|
sgworld._Viewer.scene,
|
function() { }
|
);
|
break;
|
case "gltf":
|
var position=[treeNode.lon,treeNode.lat,treeNode.height];
|
layer=sgworld.Creator.createModel(
|
position,
|
treeNode.urls,
|
{
|
id: treeNode.id,
|
scale: treeNode.scale||1,
|
heading: treeNode.heading,
|
pitch: treeNode.pitch,
|
roll: treeNode.roll,
|
},
|
"0",
|
treeNode.name,
|
""
|
);
|
break;
|
case "SimpleGraphic":
|
treeNode.type=treeNode.class;
|
layer=sgworld.Creator.SimpleGraphic.addFeature(treeNode);
|
break;
|
case "videoPolygon":
|
layer=sgworld.Creator.addVideoPolygon(treeNode.positions,{
|
url: treeNode.url,
|
angle: treeNode.angle,
|
});
|
break;
|
case "MilitaryPlotting":
|
if(!treeNode.feature.id) {
|
treeNode.feature.id=treeNode.id;
|
}
|
if(!treeNode.feature.name) {
|
treeNode.feature.name=treeNode.name;
|
}
|
layer=sgworld.Creator.MilitaryPlotting.addFeature(treeNode.feature);
|
break;
|
case "ParticleEffect":
|
layer=sgworld.Analysis.createParticleEffect(
|
treeNode.name,
|
treeNode.position,
|
{
|
translation: Cesium.Cartesian3.fromElements(0,0,0), //平移
|
}
|
);
|
layer.name=treeNode.name;
|
break;
|
case "FlowField":
|
layer=sgworld.Creator.createTrailLine(
|
treeNode.positions,
|
treeNode.style
|
);
|
layer.boundingSphere=Cesium.BoundingSphere.fromPoints(
|
treeNode.positions
|
);
|
|
break;
|
case "MobileWall":
|
layer=sgworld.Creator.createTrailLineWall(
|
treeNode.LineInterpolation.positions,
|
treeNode.style
|
);
|
layer.boundingSphere=Cesium.BoundingSphere.fromPoints(
|
treeNode.LineInterpolation.positions
|
);
|
break;
|
case "link":
|
layer=sgworld.Creator.createLinkPro(
|
sgworld.Core.toDegrees(treeNode.posisitons[0]),
|
sgworld.Core.toDegrees(treeNode.posisitons[1]),
|
{
|
clampToGround: true,
|
}
|
);
|
break;
|
case "DiffusionSource":
|
layer=sgworld.Analysis.createMultiCircleScan(
|
treeNode.position,
|
treeNode.maxRadius,
|
treeNode.maxRadius.color,
|
3000,
|
true
|
);
|
break;
|
case "RiskDiffusion":
|
case "CircularDiffusion":
|
layer=sgworld.Analysis.createCircleScan(
|
treeNode.position,
|
treeNode.maxRadius,
|
treeNode.color,
|
3000,
|
true
|
);
|
break;
|
case "FanDiffusion":
|
layer=sgworld.Analysis.createSectorScan(
|
treeNode.position,
|
treeNode.distance,
|
"#ff0000",
|
60,
|
treeNode.angle,
|
true,
|
4000,
|
true
|
);
|
break;
|
case "RadarMask":
|
layer=sgworld.Creator.createRectangularSensor(
|
treeNode.position,
|
treeNode.cylinder
|
);
|
break;
|
case "DynamicSatellite":
|
let dtwxzsData=sgworld.Creator.createConeRadar(treeNode.position,{
|
color: "#7b9ef7",
|
radius: 200000,
|
});
|
let weixin=sgworld.Creator.createModel(
|
treeNode.position,
|
window.SmartEarthRootUrl+"Workers/Model/weixin.gltf",
|
{ scale: 15 },
|
"0",
|
"卫星"
|
);
|
layer={ dtwxzsData,weixin };
|
layer.sourceType="DynamicSatellite";
|
break;
|
case "excavate":
|
var position=[treeNode.lon,treeNode.lat,treeNode.height];
|
layer=sgworld.Creator.createModel(
|
position,
|
treeNode.urls,
|
{
|
id: treeNode.id,
|
scale: treeNode.scale||1,
|
},
|
pID,
|
treeNode.name,
|
""
|
);
|
treeNode.id=layer.treeobj.id;
|
break;
|
case "demoAnimation":
|
console.log(123)
|
break;
|
|
|
|
|
}
|
if(treeNode.sourceType!=="gltf"&&(treeNode.lon||treeNode.lat)) {
|
treeNode.flyTo=[
|
treeNode.lon,
|
treeNode.lat,
|
defaultValue(treeNode.height,10000),
|
];
|
}
|
if(treeNode.minx&&treeNode.miny&&treeNode.maxx&&treeNode.maxy) {
|
treeNode.flyTo=[
|
treeNode.minx,
|
treeNode.miny,
|
treeNode.maxx,
|
treeNode.maxy,
|
];
|
}
|
if(treeNode.sourceType==="wfs") {
|
addTreeData(treeNode,layer);
|
}
|
if(treeNode.baseLayer) {
|
layer.item.baseLayer=true;
|
}
|
},
|
changeplase (value) {
|
if(value.label.indexOf("广州")>-1) {
|
this.chooseplase="广州";
|
this.form.startTime=new Date("2019-10-08");
|
this.form.endTime=new Date("2019-10-16");
|
window.Viewer.camera.flyTo({
|
destination: Cesium.Cartesian3.fromDegrees(
|
113.29503528791071,
|
23.104708355136264,
|
4109.8492337442767
|
),
|
orientation: {
|
heading: 0.8349372341578318,
|
pitch: -0.85222154573481174,
|
roll: 0,
|
},
|
});
|
} else {
|
this.chooseplase="上海";
|
this.form.startTime=new Date("2016-06-01");
|
this.form.endTime=new Date("2016-06-30");
|
window.Viewer.camera.flyTo({
|
destination: Cesium.Cartesian3.fromDegrees(
|
121.23142475566037,
|
30.314431916707203,
|
101204.78027978493
|
),
|
orientation: {
|
heading: 0.149372341578318,
|
pitch: -0.8022154573481174,
|
roll: 0,
|
},
|
});
|
}
|
},
|
change () {
|
this.showdata1=false;
|
},
|
change1 () {
|
this.showdata2=false;
|
},
|
openDia () {
|
bus.$emit("changeColor",true);
|
},
|
choose (value) {
|
let arr=value.split("-");
|
this.form.freqStart=arr[0];
|
this.form.freqEnd=arr[1];
|
},
|
close () {
|
this.showsituation=false;
|
},
|
getdata (data) {
|
this.colorContainer=data;
|
},
|
// 点击获得态势
|
getTaishi () {
|
if(hander) {
|
return;
|
}
|
hander=new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas);
|
let pickFeature;
|
// 鼠标点击事件
|
hander.setInputAction((event) => {
|
// 拾取对象
|
divPoint3&&divPoint3.deleteObject();
|
let clickPosition=viewer.scene.camera.pickEllipsoid(event.position);
|
// 转经纬度(弧度)坐标
|
let radiansPos=Cesium.Cartographic.fromCartesian(clickPosition);
|
let lon=Cesium.Math.toDegrees(radiansPos.longitude);
|
let lat=Cesium.Math.toDegrees(radiansPos.latitude);
|
let filename=this.nowfile;
|
let obj={
|
lat: lat,
|
lng: lon,
|
analysisAction: "-1",
|
analysisType: "1",
|
filename: filename,
|
};
|
showCQ(obj).then((res) => {
|
let data=res.data;
|
if(data!="无数据") {
|
divPoint3=sgworld.Creator.createDivPoint(
|
"合肥",
|
{ lon: obj.lng,lat: obj.lat },
|
{
|
type: "custom",
|
offset: ["c",60],
|
description: `
|
<div class="divPoint-custom">
|
<p>${data}</p>
|
</div>
|
`,
|
near: 0,
|
far: 100000,
|
}
|
);
|
}
|
});
|
//把你拾取的东西打印出来看看什么值可以用作判断
|
},Cesium.ScreenSpaceEventType.LEFT_CLICK);
|
},
|
analysis () {
|
this.reset();
|
let that=this;
|
if(that.imageid) {
|
window.Viewer.entities.removeById(that.imageid);
|
that.imageid=null;
|
}
|
let data={
|
colorName: "-100,0000FF;120,FF0000",
|
startTime: "20160601000000",
|
endTime: 20160630000000,
|
freqStart: 87000000,
|
freqEnd: 108000000,
|
freqPoint: 87000000,
|
points:
|
"[[30.5504351,120.5667114],[32.0499889,120.5667114],[32.0499889,122.4453735],[30.5504351,122.4453735]]",
|
radius: 0,
|
analysisAction: "3",
|
analysisType: 1,
|
};
|
data={ ...data,...this.form };
|
data.freqStart=data.freqStart*1000000;
|
data.freqEnd=data.freqEnd*1000000;
|
data.startTime=data.startTime+"000000";
|
data.endTime=data.endTime*1000000;
|
data.analysisType=="频点"? (data.analysisType=1):"";
|
delete data.radio;
|
if(this.showdata1) {
|
data.startTime=20160601000000;
|
this.chooseplase&&this.chooseplase=="上海"
|
? (data.startTime=20160601000000)
|
:(data.startTime=20191008000000);
|
}
|
if(this.showdata2) {
|
data.endTime=20160630000000;
|
this.chooseplase&&this.chooseplase=="上海"
|
? (data.endTime=20160630000000)
|
:(data.endTime=20191016000000);
|
}
|
const loading=that.$loading({
|
lock: true,
|
text: "计算中",
|
spinner: "el-icon-loading",
|
background: "rgba(0, 0, 0, 0.7)",
|
});
|
data.points=data.points.value;
|
freqBandAnalysis(data)
|
.then((res) => {
|
if(res.message==="Success") {
|
let points=res.data.imgBounds;
|
that.nowfile=Base64.encode(res.data.url);
|
var data1={
|
colorSchemes: 1,
|
file: Base64.encode(res.data.url),
|
maxColor: "FF0000",
|
maxValue: 100,
|
minColor: "0000FF",
|
minValue: 0,
|
showBounds: this.form.points.value,
|
};
|
data1={ ...data1,...this.colorContainer };
|
createPic(data1)
|
.then((res2) => {
|
let rectangle=sgworld.Creator.addSimpleGraphic("rectangle",{
|
removeEdit: true,
|
coordinates: Cesium.Rectangle.fromDegrees(
|
points.xmin,
|
points.ymin,
|
points.xmax,
|
points.ymax
|
),
|
color: "rgba(255,255,255,0.5)",
|
image:
|
"http://221.224.53.36:9081/calc/picurl?file="+
|
Base64.encode(res2.data),
|
});
|
that.showDianci=true;
|
// 图片获取成功 开启拾取
|
that.getTaishi();
|
if(that.imageid) {
|
window.Viewer.entities.removeById(that.imageid);
|
that.imageid=null;
|
}
|
that.imageid=rectangle.id;
|
|
loading.close();
|
that.$message({
|
message: "计算成功",
|
type: "success",
|
});
|
that.showpic=true;
|
})
|
.catch((error) => {
|
loading.close();
|
});
|
}
|
})
|
.catch((error) => {
|
loading.close();
|
});
|
},
|
reset () {
|
//重置
|
if(this.imageid) {
|
window.Viewer.entities.removeById(this.imageid);
|
hander&&
|
hander.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);
|
hander=null;
|
divPoint3&&divPoint3.deleteObject();
|
|
this.imageid=null;
|
this.showDianci=false;
|
}
|
},
|
},
|
watch: {
|
colorContainer: {
|
deep: true,
|
handler (data) {
|
let colornow={
|
width: "30%",
|
height: "70%",
|
border: "1px solid #000",
|
transform: "translate(40px,90px)",
|
backgroundImage: `linear-gradient(${data.maxColor},${data.minColor})`,
|
};
|
this.innerbac=colornow;
|
},
|
},
|
},
|
};
|
</script>
|
|
<style scoped>
|
.bot {
|
width: 1000px;
|
height: 1150px;
|
background: url(~@/assets/image/test/22.png);
|
background-size: 100% 100%;
|
background-repeat: no-repeat;
|
position: absolute;
|
left: 3920px;
|
top: 680px;
|
}
|
.top1 {
|
width: 95%;
|
height: 11%;
|
font-size: 40px;
|
font-weight: bold;
|
margin: 0px auto;
|
border-bottom: 2px solid #fff;
|
color: #fff;
|
letter-spacing: 3px;
|
}
|
.icon {
|
position: absolute;
|
left: 50px;
|
width: 50px;
|
height: 50px;
|
top: 39px;
|
background-size: 100% 100% !important;
|
background-repeat: no-repeat !important;
|
background-position: center !important;
|
background: url(~@/assets/image/subject/题标.png);
|
}
|
.text {
|
display: inline-block;
|
margin-left: 90px;
|
}
|
.close {
|
position: absolute;
|
font-size: 60px;
|
font-weight: 400;
|
right: 60px;
|
top: 20px;
|
}
|
.close:hover {
|
color: red;
|
transition: color 1s;
|
cursor: pointer;
|
}
|
.next {
|
width: 89%;
|
height: 79%;
|
margin: 30px auto;
|
}
|
|
.botcon {
|
display: inline-block;
|
margin-top: 34px;
|
}
|
.btns {
|
margin-top: 100px;
|
width: 100%;
|
height: 70px;
|
display: flex;
|
justify-content: center;
|
}
|
.btns > span {
|
display: block;
|
width: 200px;
|
height: 70px;
|
border: 1px solid #000;
|
text-align: center;
|
font-size: 35px;
|
margin: 0 50px;
|
line-height: 70px;
|
cursor: pointer;
|
}
|
.btns > span:nth-child(3) {
|
color: #fff;
|
background-image: linear-gradient(#76c2f6, #6a9cf1);
|
}
|
.btns > span:nth-child(-n + 2) {
|
color: #000;
|
background: #cadaea;
|
}
|
.showpic {
|
width: 260px;
|
height: 400px;
|
background: url(~@/assets/image/botbtn/bac.png);
|
background-position: center;
|
background-size: 100% 100%;
|
position: absolute;
|
top: 1200px;
|
right: 0px;
|
}
|
.layerTreeContainer {
|
/* padding: 20px; */
|
/* background: url("../../assets/image/listbg.png") no-repeat; */
|
/* background-size: 100% 100%; */
|
/* position: absolute; */
|
/* right: 700px; */
|
/* top: 500px; */
|
width: 100%;
|
height: 100%;
|
/* margin: 20px 0; */
|
}
|
|
.layerTreeContainer .layerTree {
|
height: 100%;
|
margin-bottom: 2px;
|
overflow-y: auto;
|
overflow-x: auto;
|
}
|
|
.layerTreeContainer .el-tree {
|
background: transparent;
|
font-size: 45px;
|
color: white;
|
}
|
|
.layerTreeContainer .el-tree /deep/ .el-tree-node__content {
|
background-color: transparent !important;
|
height: auto !important;
|
}
|
|
.layerTreeContainer .el-tree /deep/ .el-tree-node__content:hover {
|
background-color: rgba(255, 255, 255, 0.4) !important;
|
}
|
|
.layerTreeContainer .el-tree /deep/ .is-current > .el-tree-node__content {
|
background-color: rgba(255, 255, 255, 0.4) !important;
|
}
|
|
.layerTreeContainer
|
.el-tree
|
/deep/
|
.is-indeterminate
|
.el-checkbox__inner:before {
|
top: 10px;
|
height: 19px;
|
width: 40px;
|
}
|
.layerTreeContainer .el-tree /deep/ .el-tree-node__expand-icon {
|
font-size: 40px;
|
}
|
.layerTreeContainer .el-tree /deep/ .el-checkbox .el-checkbox__inner {
|
width: 40px;
|
height: 40px;
|
}
|
.layerTreeContainer
|
.el-tree
|
/deep/
|
.el-checkbox__input.is-checked
|
.el-checkbox__inner:after {
|
border: 7px solid #fff;
|
border-left: 0;
|
border-top: 0;
|
height: 23px;
|
left: 11px;
|
position: absolute;
|
top: 5px;
|
width: 10px;
|
}
|
|
.layerTreeContainer
|
.el-tree
|
/deep/
|
.el-checkbox__input
|
.is-checked
|
.el-checkbox__inner {
|
background-color: #409eff;
|
}
|
|
.layerTreeContainer
|
.el-tree
|
/deep/
|
.el-checkbox__input.is-checked
|
.el-checkbox__inner {
|
border-color: #409eff;
|
}
|
</style>
|