import Vue from 'vue';
|
import axios from "axios";
|
import _GLOBAL from '@/assets/GLOBAL';
|
import poiLayer from '@/components/poplayer/main';
|
import store from "@/utils/store";
|
import { Message } from 'element-ui';
|
|
let tdglLine, qiyexinxi, qysl, ydbm, ydlx, cyfx, crzt, ydmj, crnx, crnf, rjl, jzxg, jzmd;
|
let objdata;
|
|
window.tdglLine = tdglLine
|
let PoiLayerConstructor = Vue.extend(poiLayer);
|
/**核心区 */
|
export function loadHXQ() {
|
let urls = window.gisBaseUrl + "/gisserver/wmsserver/YZ_BJ60";
|
window.HXQ = sgworld.Creator.createImageryProvider('hxqgisserver', "wms", {
|
url: urls,
|
layers: '',
|
parameters: {
|
format: "image/png",
|
transparent: true,
|
}
|
}, "0", undefined, true, function () {
|
Viewer.camera.flyTo({
|
destination: Cesium.Cartesian3.fromDegrees(116.52556, 39.71046, 34189.97),
|
orientation: {//设置相机的Heading,Pitch,Roll,参照上图
|
heading: Cesium.Math.toRadians(360.0),
|
pitch: Cesium.Math.toRadians(-90.0),
|
roll: 0.0
|
},
|
duration: 3
|
});
|
});
|
}
|
/**经开区 */
|
export function loadJKQ() {
|
let urls = window.gisBaseUrl + "/gisserver/wmsserver/YZ_BJ";
|
window.JKQ = sgworld.Creator.createImageryProvider('jkqgisserver', "wms", {
|
url: urls,
|
layers: '',
|
parameters: {
|
format: "image/png",
|
transparent: true,
|
}
|
}, "0", undefined, true, function () {
|
Viewer.camera.flyTo({
|
destination: Cesium.Cartesian3.fromDegrees(116.52902, 39.67853, 59383.65),
|
orientation: {//设置相机的Heading,Pitch,Roll,参照上图
|
heading: Cesium.Math.toRadians(360.0),
|
pitch: Cesium.Math.toRadians(-90.0),
|
roll: 0.0
|
},
|
duration: 3
|
});
|
});
|
|
}
|
/**乡镇 */
|
export function loadXZ() {
|
let urls = window.gisBaseUrl + "/gisserver/wmsserver/xiangzhen";
|
window.XZ = sgworld.Creator.createImageryProvider('xzgisserver', "wms", {
|
url: urls,
|
layers: '',
|
parameters: {
|
format: "image/png",
|
transparent: true,
|
}
|
}, "0", undefined, true, function () {
|
Viewer.camera.flyTo({
|
destination: Cesium.Cartesian3.fromDegrees(116.55718, 39.65440, 53149.25),
|
orientation: {//设置相机的Heading,Pitch,Roll,参照上图
|
heading: Cesium.Math.toRadians(360.0),
|
pitch: Cesium.Math.toRadians(-90.0),
|
roll: 0.0
|
},
|
duration: 3
|
});
|
});
|
|
}
|
/**窨井 */
|
export function loadManhole() {
|
window.clusterLayer && window.clusterLayer.clear();
|
axios
|
.get(window.gisBaseUrl + '/gisserver/wfsserver/yinjing?version=1.3.0&request=GetFeature&format=json&typename=yz井数据')
|
.then(res => {
|
debugger
|
// let manholeList = JSON.parse(res.data);
|
store.setLayerPanelShow(false);
|
res.data.features.forEach((item, index) => {
|
window.clusterLayer.add(
|
new SmartEarth.Degrees(item.geometry.coordinates[0], item.geometry.coordinates[1], 15),
|
{
|
name: `YINJ-${item.properties.ID}-${item.properties['井名称']}-${item.properties['井深']}-${item.properties['井类型']}-${item.properties['井编号']}-${item.properties['位置']}-${item.properties['标段备注']}-${item.properties['行政区编码']}-${item.geometry.coordinates[0]}-${item.geometry.coordinates[1]}`,
|
image: SmartEarthRootUrl + 'Workers/image/mark.png',
|
scale: 0.5
|
}
|
)
|
});
|
|
Viewer.camera.flyTo({
|
destination: Cesium.Cartesian3.fromDegrees(116.54555, 39.74727, 20565.49),
|
orientation: {//设置相机的Heading,Pitch,Roll,参照上图
|
heading: Cesium.Math.toRadians(360.0),
|
pitch: Cesium.Math.toRadians(-90.0),
|
roll: 0.0
|
},
|
duration: 3
|
});
|
})
|
// let url = window.gisBaseUrl + '/gisserver/wfsserver/yinjing';
|
// let sgwfs = new SmartEarth.WFSTool(Viewer);
|
// sgwfs.CreateWfs('point', {
|
// urls: url,
|
// layer: 'yz井数据',
|
// text: '[井名称]',
|
// image: SmartEarthRootUrl + 'Workers/image/mark.png',
|
// //offsetX: 20,
|
// offsetY: -40,
|
// color: '#de3',
|
// disableDepthTestDistance: Infinity
|
// })
|
}
|
/**企业 */
|
export function loadEnterprise() {
|
new Cesium.GeoJsonDataSource.load(
|
window.gisBaseUrl + '/gisserver/wfsserver/qiyelianqiye?version=1.3.0&request=GetFeature&format=json&typename=企业链企业'
|
)
|
// axios.get(window.gisBaseUrl + '/gisserver/wfsserver/qiyelianqiye?version=1.3.0&request=GetFeature&format=json&typename=企业链企业')
|
.then(dataSource => {
|
console.log(dataSource);
|
store.qiyeJsonInfo = dataSource
|
})
|
.catch((err) => {
|
console.log(err);
|
});
|
}
|
// export function loadEnterprise() {
|
// window.clusterLayer && window.clusterLayer.clear();
|
// axios
|
// .get(window.gisBaseUrl + '/gisserver/wfsserver/qiyelianqiye?version=1.3.0&request=GetFeature&format=json&typename=企业链企业')
|
// .then(res => {
|
// debugger
|
// // let manholeList = JSON.parse(res.data);
|
// store.setLayerPanelShow(false);
|
// res.data.features.forEach((item, index) => {
|
// window.clusterLayer.add(
|
// new SmartEarth.Degrees(item.geometry.coordinates[0], item.geometry.coordinates[1], 15),
|
// {
|
// name: `QY&${item.properties.ID}&${item.properties['QYMC']}&${item.properties['DZ']}&${item.properties['BZDZ']}&${item.properties['XYDM']}&${item.geometry.coordinates[0]}&${item.geometry.coordinates[1]}`,
|
// image: SmartEarthRootUrl + 'Workers/image/mark.png',
|
// scale: 0.5
|
// }
|
// )
|
// });
|
|
// Viewer.camera.flyTo({
|
// destination: Cesium.Cartesian3.fromDegrees(116.54555, 39.74727, 20565.49),
|
// orientation: {//设置相机的Heading,Pitch,Roll,参照上图
|
// heading: Cesium.Math.toRadians(360.0),
|
// pitch: Cesium.Math.toRadians(-90.0),
|
// roll: 0.0
|
// },
|
// duration: 3
|
// });
|
// })
|
// // let url = window.gisBaseUrl + '/gisserver/wfsserver/yinjing';
|
// // let sgwfs = new SmartEarth.WFSTool(Viewer);
|
// // sgwfs.CreateWfs('point', {
|
// // urls: url,
|
// // layer: 'yz井数据',
|
// // text: '[井名称]',
|
// // image: SmartEarthRootUrl + 'Workers/image/mark.png',
|
// // //offsetX: 20,
|
// // offsetY: -40,
|
// // color: '#de3',
|
// // disableDepthTestDistance: Infinity
|
// // })
|
// }
|
/**摄像头 */
|
export function loadCamera() {
|
window.clusterLayer && window.clusterLayer.clear();
|
axios
|
.get(window.gisBaseUrl + '/gisserver/wfsserver/YZ_SPJK_NEW_wfs?version=1.3.0&request=GetFeature&format=json&typename=摄像头0423')
|
.then(res => {
|
debugger
|
store.setLayerPanelShow(false);
|
res.data.features.forEach((item, index) => {
|
window.clusterLayer.add(
|
new SmartEarth.Degrees(item.geometry.coordinates[0], item.geometry.coordinates[1], 15),
|
{
|
name: `SPJK-${item.properties['IP地址']}-${item.properties['JK内码']}-${item.properties['JK区域']}-${item.properties['JK名称']}-${item.properties['JK类型']}-${item.properties['JK编号']}`,
|
image: SmartEarthRootUrl + 'Workers/image/mark1.png',
|
scale: 1
|
}
|
)
|
});
|
Viewer.camera.flyTo({
|
destination: Cesium.Cartesian3.fromDegrees(116.51463, 39.73972, 19586.80),
|
orientation: {//设置相机的Heading,Pitch,Roll,参照上图
|
heading: Cesium.Math.toRadians(360.0),
|
pitch: Cesium.Math.toRadians(-90.0),
|
roll: 0.0
|
},
|
duration: 3
|
});
|
})
|
// let url = window.gisBaseUrl + '/gisserver/wfsserver/YZ_SPJK_NEW_wfs';
|
// let sgwfs2 = new SmartEarth.WFSTool(Viewer);
|
// sgwfs2.CreateWfs('point', {
|
// urls: url,
|
// layer: '摄像头0423',
|
// text: '[JK名称]',
|
// image: SmartEarthRootUrl + 'Workers/image/mark.png',
|
// //offsetX: 20,
|
// offsetY: -40,
|
// color: '#de3',
|
// disableDepthTestDistance: Infinity
|
// })
|
}
|
/**清除矢量地图 */
|
export function clearMap() {
|
window.HXQ && window.HXQ.deleteObject();
|
window.JKQ && window.JKQ.deleteObject();
|
window.XZ && window.XZ.deleteObject();
|
}
|
// 左击事件
|
window.divPoint3 = null;
|
window.instance = null;
|
window.pickFeature = null;
|
window.imgUrl = null;
|
window.scale = null;
|
window.clickPOI = null
|
function read(wkt) {
|
var regExes = {
|
typeStr: /^\s*(\w+)\s*\(\s*(.*)\s*\)\s*$/,
|
emptyTypeStr: /^\s*(\w+)\s*EMPTY\s*$/,
|
spaces: /\s+/,
|
parenComma: /\)\s*,\s*\(/,
|
doubleParenComma: /\)\s*\)\s*,\s*\(\s*\(/, // can't use {2} here
|
trimParens: /^\s*\(?(.*?)\)?\s*$/,
|
};
|
/**
|
* Object with properties corresponding to the geometry types. Property values
|
* are functions that do the actual parsing.
|
* @private
|
*/
|
var parse$1 = {
|
/**
|
* Return point geometry given a point WKT fragment.
|
*
|
* @param {String} str A WKT fragment representing the point.
|
* @return {Point} A point geometry.
|
* @private
|
*/
|
point: function point(str) {
|
if (str === undefined) {
|
return [];
|
}
|
|
var coords = str.trim().split(regExes.spaces);
|
return [Number.parseFloat(coords[0]), Number.parseFloat(coords[1])];
|
},
|
|
/**
|
* Return a multipoint geometry given a multipoint WKT fragment.
|
*
|
* @param {String} str A WKT fragment representing the multipoint.
|
* @return {Point} A multipoint feature.
|
* @private
|
*/
|
multipoint: function multipoint(str) {
|
var this$1 = this;
|
|
if (str === undefined) {
|
return [];
|
}
|
|
var point;
|
var points = str.trim().split(",");
|
var components = [];
|
for (var i = 0, len = points.length; i < len; ++i) {
|
point = points[i].replace(regExes.trimParens, "$1");
|
components.push(parse$1.point(point));
|
}
|
return components;
|
},
|
|
/**
|
* Return a linestring geometry given a linestring WKT fragment.
|
*
|
* @param {String} str A WKT fragment representing the linestring.
|
* @return {LineString} A linestring geometry.
|
* @private
|
*/
|
linestring: function linestring(str) {
|
if (str === undefined) {
|
return [];
|
}
|
|
var points = str.trim().split(",");
|
var components = [];
|
var coords;
|
for (var i = 0, len = points.length; i < len; ++i) {
|
coords = points[i].trim().split(regExes.spaces);
|
components.push([
|
Number.parseFloat(coords[0]),
|
Number.parseFloat(coords[1]),
|
]);
|
}
|
return components;
|
},
|
|
/**
|
* Return a linearring geometry given a linearring WKT fragment.
|
*
|
* @param {String} str A WKT fragment representing the linearring.
|
* @return {LinearRing} A linearring geometry.
|
* @private
|
*/
|
linearring: function linearring(str) {
|
if (str === undefined) {
|
return [];
|
}
|
|
var points = str.trim().split(",");
|
var components = [];
|
var coords;
|
for (var i = 0, len = points.length; i < len; ++i) {
|
coords = points[i].trim().split(regExes.spaces);
|
components.push([
|
Number.parseFloat(coords[0]),
|
Number.parseFloat(coords[1]),
|
]);
|
}
|
return components;
|
},
|
|
/**
|
* Return a multilinestring geometry given a multilinestring WKT fragment.
|
*
|
* @param {String} str A WKT fragment representing the multilinestring.
|
* @return {MultiLineString} A multilinestring geometry.
|
* @private
|
*/
|
multilinestring: function multilinestring(str) {
|
var this$1 = this;
|
|
if (str === undefined) {
|
return [];
|
}
|
|
var line;
|
var lines = str.trim().split(regExes.parenComma);
|
var components = [];
|
for (var i = 0, len = lines.length; i < len; ++i) {
|
line = lines[i].replace(regExes.trimParens, "$1");
|
components.push(parse$1.linestring(line));
|
}
|
return components;
|
},
|
|
/**
|
* Return a polygon geometry given a polygon WKT fragment.
|
*
|
* @param {String} str A WKT fragment representing the polygon.
|
* @return {Polygon} A polygon geometry.
|
* @private
|
*/
|
polygon: function polygon(str) {
|
var this$1 = this;
|
|
if (str === undefined) {
|
return [];
|
}
|
|
var ring, linestring, linearring;
|
var rings = str.trim().split(regExes.parenComma);
|
var shell;
|
var holes = [];
|
//for (var i = 0, len = rings.length; i < len; ++i) {
|
ring = rings[0].replace(regExes.trimParens, "$1");
|
linestring = ring;
|
//}
|
return linestring;
|
},
|
|
/**
|
* Return a multipolygon geometry given a multipolygon WKT fragment.
|
*
|
* @param {String} str A WKT fragment representing the multipolygon.
|
* @return {MultiPolygon} A multipolygon geometry.
|
* @private
|
*/
|
multipolygon: function multipolygon(str) {
|
var this$1 = this;
|
|
if (str === undefined) {
|
return [];
|
}
|
|
var polygon;
|
var polygons = str.trim().split(regExes.doubleParenComma);
|
var components = [];
|
for (var i = 0, len = polygons.length; i < len; ++i) {
|
polygon = polygons[i].replace(regExes.trimParens, "$1");
|
components.push(parse$1.polygon(polygon));
|
}
|
return components;
|
},
|
};
|
|
var geometry, type, str;
|
wkt = wkt.replace(/[\n\r]/g, " ");
|
var matches = regExes.typeStr.exec(wkt);
|
if (wkt.search("EMPTY") !== -1) {
|
matches = regExes.emptyTypeStr.exec(wkt);
|
matches[2] = undefined;
|
}
|
if (matches) {
|
type = matches[1].toLowerCase();
|
str = matches[2];
|
if (parse$1[type]) {
|
geometry = parse$1[type].apply(this, [str]);
|
}
|
}
|
|
if (geometry === undefined) {
|
throw new Error("Could not parse WKT " + wkt);
|
}
|
|
return geometry;
|
}
|
export function leftClick() {
|
try {
|
// 点击事件
|
let handler = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas);
|
// let nPickFeature;
|
// 鼠标点击事件
|
handler.setInputAction(event => {
|
window.clickPOI = sgworld.Navigate.getMouseDegrees(event);
|
// console.log(window.clickPOI);
|
if (window.clickPOI) {
|
// 隐藏底部图层面版
|
store.setLayerPanelShow(false);
|
// 隐藏右上角菜单面板
|
store.setMenuListShow(false);
|
// 隐藏底部漫游面板
|
store.setRoamPanelShow(false);
|
|
}
|
// 土地管理
|
if (store.tdglInfo.flag) {
|
axios
|
.get(
|
// "http://10.10.4.115:8022/geowinmap_xncs/ds?r=0.9158559377752831&serviceproviderid=map.vectorserviceprovider&serviceid=queryfeature&featcls=225%25E8%258C%2583%25E5%259B%25B4%25E5%2588%2586%25E5%258C%25BA%25E8%25A7%2584%25E5%2588%2592.geojson&lng=" +
|
window.gisBaseUrl + "yzxncsApi/geowinmap_xncs/ds?r=0.9158559377752831&serviceproviderid=map.vectorserviceprovider&serviceid=queryfeature&featcls=225%25E8%258C%2583%25E5%259B%25B4%25E5%2588%2586%25E5%258C%25BA%25E8%25A7%2584%25E5%2588%2592.geojson&lng=" +
|
window.clickPOI.lon +
|
"&lat=" +
|
window.clickPOI.lat +
|
"&geom=true&requesttype=json"
|
).then(response => {
|
let center = { lon: 0, lat: 0 };
|
let polygon = read(response.data.geometry);
|
if (polygon.length > 0) {
|
var geometry = [];
|
let points = polygon[0].split(",");
|
for (let i = 0; i < points.length; i++) {
|
let point = points[i].replace(/^\s+|\s+$/g, "").split(" ");
|
center.lon += parseFloat(point[0]) / points.length;
|
center.lat += parseFloat(point[1]) / points.length;
|
geometry.push({
|
x: parseFloat(point[0]),
|
y: parseFloat(point[1]),
|
z: 0,
|
});
|
}
|
if (window.tdglLine) {
|
sgworld.Creator.DeleteObject(window.tdglLine);
|
window.tdglLine = null;
|
}
|
window.tdglLine = sgworld.Creator.createPolyline(
|
geometry,
|
"#ff0000",
|
1,
|
0,
|
"线"
|
);
|
if (center.lon != 0 && center.lat != 0) {
|
Viewer.camera.flyTo({
|
destination: Cesium.Cartesian3.fromDegrees(
|
center.lon,
|
center.lat,
|
1000
|
),
|
duration: 1.0,
|
});
|
}
|
}
|
if (center.lon != 0 && center.lat != 0) {
|
axios
|
.get(
|
// "http://10.10.4.115:8022//poisearch/guihuacon/getInfo?ydbm=" +
|
window.gisBaseUrl + "yzxncsApi/poisearch/guihuacon/getInfo?ydbm=" +
|
response.data.NO
|
)
|
.then(
|
info => {
|
let data = info.data.data;
|
if (data.yongdishuju === null) {
|
objdata = {
|
POITYPE: "NOTDGL",
|
zwxx: "暂无信息",
|
lon: window.clickPOI.lon,
|
lat: window.clickPOI.lat,
|
}
|
} else {
|
qiyexinxi = info.data.data.qiyexinxi;
|
qysl = data.qiyexinxi.length;
|
if (qysl > 0) {
|
ydbm = data.qiyexinxi[0]["地块编号"];
|
} else {
|
ydbm = data.churangxinxi["ydbh"];
|
}
|
try {
|
ydlx = data.yongdishuju["ydlxmc"];
|
} catch (e) { }
|
try {
|
cyfx = data.yongdishuju["cyfx"];
|
} catch (e) { }
|
try {
|
// this.crzt = response.data["ZT"];
|
switch (response.data["ZT"]) {
|
case 3:
|
crzt = "已出让";
|
break;
|
case 4:
|
crzt = "未出让";
|
break;
|
}
|
} catch (e) { }
|
try {
|
ydmj = parseFloat(
|
"" + data.yongdishuju["ydmj"]
|
).toFixed(0);
|
} catch (e) { }
|
try {
|
crnx = data.churangxinxi["crnx"];
|
} catch (e) { }
|
try {
|
crnf = data.churangxinxi["crnf"];
|
} catch (e) { }
|
try {
|
rjl = data.yongdishuju["rjl"];
|
} catch (e) { }
|
try {
|
jzxg = data.yongdishuju["jzxg"];
|
} catch (e) { }
|
try {
|
jzmd = data.yongdishuju["jzmd"];
|
} catch (e) { }
|
objdata = {
|
POITYPE: "TDGL",
|
ydbm,
|
ydlx,
|
cyfx,
|
crzt,
|
ydmj,
|
ydbm,
|
crnx,
|
crnf,
|
rjl,
|
jzxg,
|
jzmd,
|
lon: window.clickPOI.lon,
|
lat: window.clickPOI.lat,
|
}
|
}
|
|
store.setTdglShow(false);
|
store.setTdlgInfo({});
|
store.setTdglShow(true);
|
store.setTdlgInfo(objdata);
|
|
// divPoint3 && divPoint3.deleteObject();
|
// store.setPoplayerShowAction(false);
|
// store.setPoplayerListAction({});
|
// store.setPoplayerShowAction(true);
|
|
// store.setPoplayerListAction(objdata);
|
// if (window.instance) {
|
// window.instance.$destroy();
|
// }
|
// window.instance = new PoiLayerConstructor({
|
// data: {
|
// list: objdata
|
// }
|
// });
|
// window.instance.$mount();
|
// divPoint3 = window.sgworld.Creator.createDivPoint('', {
|
// lon: objdata.lon,
|
// lat: objdata.lat,
|
// height: 5
|
// }, {
|
// type: "custom",
|
// offset: ["c", 20],
|
// description: window.instance.$el,
|
// near: 0,
|
// far: 100000
|
// });
|
}
|
);
|
}
|
})
|
}
|
let nPickFeature = sgworld.Viewer.scene.pick(event.position);
|
console.log(nPickFeature);
|
// console.log(event.position);//屏幕位置
|
if (!nPickFeature || !nPickFeature.id) {
|
return
|
} else if (nPickFeature.primitive instanceof Cesium.Billboard) {
|
let cartographic =
|
window.Viewer.scene.globe.ellipsoid.cartesianToCartographic(
|
nPickFeature.primitive.position
|
);
|
let lon = Cesium.Math.toDegrees(cartographic.longitude);
|
let lat = Cesium.Math.toDegrees(cartographic.latitude);
|
let p = sgworld.Navigate.getDegrees();
|
let flyHeight
|
if (p.height > 2000) {
|
flyHeight = p.height / 1.8
|
} else if (p.height > 500) {
|
flyHeight = 500
|
} else {
|
flyHeight = p.height
|
}
|
// console.log(p);
|
Viewer.camera.flyTo({
|
destination: Cesium.Cartesian3.fromDegrees(
|
window.clickPOI.lon,
|
window.clickPOI.lat,
|
flyHeight
|
),
|
duration: 1.0,
|
});
|
|
if (nPickFeature.id.length > 0) {
|
return;
|
}
|
// 重置图标
|
if (window.pickFeature && window.pickFeature.primitive) {
|
window.pickFeature.primitive.image = imgUrl;
|
window.pickFeature.primitive.scale = scale;
|
window.pickFeature = null;
|
}
|
// 备份拾取的对象
|
window.pickFeature = nPickFeature;
|
imgUrl = nPickFeature.primitive.image;
|
scale = nPickFeature.primitive.scale;
|
nPickFeature.primitive.scale = 1;
|
nPickFeature.primitive.image =
|
window.SmartEarthRootUrl + "Workers/image/point.png";
|
//点击弹框(部件、企业、监控)
|
if (nPickFeature.id.tag) {
|
let properties = nPickFeature.id.properties;
|
let propertyNames = nPickFeature.id.properties.propertyNames;
|
if (propertyNames.indexOf("监控名") !== -1) {
|
// objdata = {
|
// POITYPE: "SPJK",
|
// name: properties["JK名称"]._value,
|
// type: properties["JK类型"]._value,
|
// function: properties["功能"]._value,
|
// area: properties["所在区"]._value,
|
// number: properties["JK编号"]._value,
|
// code: properties["JK内码"]._value,
|
// lon: lon,
|
// lat: lat,
|
// }
|
Message({
|
message: '连接状态查询中',
|
type: 'info',
|
offset: 60,
|
center: true,
|
duration: 1000,
|
});
|
layerOpen(properties["JK名称"]._value, {
|
width: "100%",
|
height: "40%",
|
// offset: [offsetTop + "px", "380px"],
|
url: "../../static/video/video.html?code=" + properties["JK内码"]._value,
|
fn: {
|
success: (layero, index) => {
|
SmartEarthPopupData.layerContainer = layero;
|
},
|
end: () => {
|
|
},
|
cancel: () => {
|
// 重置图标
|
if (window.pickFeature && window.pickFeature.primitive) {
|
window.pickFeature.primitive.image = imgUrl;
|
window.pickFeature.primitive.scale = scale;
|
window.pickFeature = null;
|
}
|
sgworld.drawObj &&
|
sgworld.drawObj.end &&
|
sgworld.drawObj.end("cancel");
|
},
|
},
|
});
|
return
|
} else if (propertyNames.indexOf("部件名称") !== -1) {
|
objdata = {
|
POITYPE: "CSBJ",
|
name: properties["部件名称"]._value,
|
address: properties["安装地址"]._value,
|
code: properties["部件编码"]._value,
|
type: properties["部件类型"]._value,
|
lon: lon,
|
lat: lat,
|
}
|
} else if (propertyNames.indexOf("井编号") !== -1) {
|
objdata = {
|
POITYPE: "YINJ",
|
name: properties["井名称"]._value,
|
depth: properties["井深"]._value,
|
type: properties["井类型"]._value,
|
location: properties["位置"]._value,
|
code: properties["井编号"]._value,
|
lon: lon,
|
lat: lat,
|
}
|
} else if (propertyNames.indexOf("QYMC") !== -1) {
|
objdata = {
|
POITYPE: "QY",
|
QYMC: properties["QYMC"]._value,
|
XYDM: properties["XYDM"]._value,
|
BZDZ: properties["BZDZ"]._value,
|
DZ: properties["DZ"]._value,
|
lon: lon,
|
lat: lat,
|
}
|
}
|
divPoint3 && divPoint3.deleteObject();
|
store.setPoplayerShowAction(false);
|
store.setPoplayerListAction({});
|
store.setPoplayerShowAction(true);
|
// let arr = nPickFeature.id.name.split('&');
|
// console.log(arr);
|
// let objdata = {
|
// POITYPE: "QY",
|
// QYMC: arr[2],
|
// DZ: arr[3],
|
// BZDZ: arr[4],
|
// XYDM: arr[5],
|
// lon: arr[6],
|
// lat: arr[7],
|
// }
|
store.setPoplayerListAction(objdata);
|
if (window.instance) {
|
window.instance.$destroy();
|
}
|
window.instance = new PoiLayerConstructor({
|
data: {
|
list: objdata
|
}
|
});
|
window.instance.$mount();
|
divPoint3 = window.sgworld.Creator.createDivPoint('', {
|
lon: objdata.lon,
|
lat: objdata.lat,
|
height: 5
|
}, {
|
type: "custom",
|
offset: ["c", 20],
|
description: window.instance.$el,
|
near: 0,
|
far: 100000
|
});
|
return;
|
}
|
//
|
}
|
// if (nPickFeature.id && nPickFeature.id.name.indexOf('YINJ') != -1) {
|
// divPoint3 && divPoint3.deleteObject();
|
// store.setPoplayerShowAction(false);
|
// store.setPoplayerListAction({});
|
// store.setPoplayerShowAction(true);
|
// let arr = nPickFeature.id.name.split('-');
|
// let objdata = {
|
// POITYPE: "YINJ",
|
// name: arr[2],
|
// depth: arr[3],
|
// type: arr[4],
|
// code: arr[5],
|
// location: arr[6],
|
// text: arr[7],
|
// areaCode: arr[8],
|
// lon: arr[9],
|
// lat: arr[10]
|
// }
|
// store.setPoplayerListAction(objdata);
|
// if (window.instance) {
|
// window.instance.$destroy();
|
// }
|
// window.instance = new PoiLayerConstructor({
|
// data: {
|
// list: objdata
|
// }
|
// });
|
// window.instance.$mount();
|
// divPoint3 = window.sgworld.Creator.createDivPoint('', {
|
// lon: objdata.lon,
|
// lat: objdata.lat,
|
// height: 5
|
// }, {
|
// type: "custom",
|
// offset: ["c", 20],
|
// description: window.instance.$el,
|
// near: 0,
|
// far: 100000
|
// });
|
// return;
|
// }
|
// else if (nPickFeature.id && nPickFeature.id.name.indexOf('QY') != -1) {
|
// divPoint3 && divPoint3.deleteObject();
|
// store.setPoplayerShowAction(false);
|
// store.setPoplayerListAction({});
|
// store.setPoplayerShowAction(true);
|
// let arr = nPickFeature.id.name.split('&');
|
// // console.log(arr);
|
// let objdata = {
|
// POITYPE: "QY",
|
// QYMC: arr[2],
|
// DZ: arr[3],
|
// BZDZ: arr[4],
|
// XYDM: arr[5],
|
// lon: arr[6],
|
// lat: arr[7],
|
// }
|
// store.setPoplayerListAction(objdata);
|
// if (window.instance) {
|
// window.instance.$destroy();
|
// }
|
// window.instance = new PoiLayerConstructor({
|
// data: {
|
// list: objdata
|
// }
|
// });
|
// window.instance.$mount();
|
// divPoint3 = window.sgworld.Creator.createDivPoint('', {
|
// lon: objdata.lon,
|
// lat: objdata.lat,
|
// height: 5
|
// }, {
|
// type: "custom",
|
// offset: ["c", 20],
|
// description: window.instance.$el,
|
// near: 0,
|
// far: 100000
|
// });
|
// return;
|
// }
|
else {
|
// return;
|
}
|
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
|
|
} catch (e) { }
|
}
|
|
//加载三维图层
|
export function loadLayer(treeNode) {
|
let layer;
|
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,
|
""
|
);
|
return layer;
|
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,
|
""
|
);
|
return layer;
|
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,
|
""
|
);
|
return layer;
|
break;
|
|
case "yzsate":
|
layer = sgworld.Creator.createWebMapTileServerImageLayer(
|
treeNode.name,
|
{
|
id: treeNode.id,
|
url: treeNode.urls,
|
layer: treeNode.layer,
|
enablePickFeatures: false,
|
show: true,
|
tileMatrixSetID: treeNode.ttileMatrixSetId
|
? treeNode.ttileMatrixSetId
|
: "Sate_2019",
|
tilingScheme: new Cesium.WebMercatorTilingScheme({
|
rectangleSouthwestInMeters: new Cesium.Cartesian2(0, -229396.5),
|
rectangleNortheastInMeters: new Cesium.Cartesian2(
|
917580,
|
688193.5
|
),
|
//rectangleSouthwestInMeters:new Cesium.Cartesian2(0,0) ,
|
// rectangleNortheastInMeters:new Cesium.Cartesian2(20037508.3427892, 20037508.3427892),
|
numberOfLevelZeroTilesX: 4,
|
numberOfLevelZeroTilesY: 4,
|
projection: new Cesium.GeographicProjection(),
|
}),
|
},
|
pID,
|
undefined,
|
treeNode.checked,
|
""
|
);
|
treeNode.id = layer.treeobj.id;
|
break;
|
case "yzmap":
|
layer = sgworld.Creator.createWebMapTileServerImageLayer(
|
treeNode.name,
|
{
|
id: treeNode.id,
|
url: treeNode.urls,
|
layer: treeNode.layer,
|
enablePickFeatures: false,
|
show: true,
|
},
|
pID,
|
undefined,
|
treeNode.checked,
|
""
|
);
|
treeNode.id = layer.treeobj.id;
|
break;
|
|
case "yztile":
|
layer = new YZWMS(treeNode);
|
sgworld._Viewer.imageryLayers.addImageryProvider(layer);
|
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,
|
""
|
);
|
return layer;
|
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,
|
""
|
);
|
return layer;
|
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,
|
""
|
);
|
return layer;
|
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 "wmse":
|
layer = sgworld.Creator.createImageryProvider(
|
treeNode.name,
|
"wms",
|
{
|
id: treeNode.id,
|
url: treeNode.urls,
|
level: treeNode.Level,
|
minimumLevel: treeNode.minimumLevel,
|
maximumLevel: treeNode.maximumLevel,
|
enablePickFeatures: false,
|
|
layers: treeNode.layer || "",
|
alpha: treeNode.alpha,
|
parameters: {
|
format: "image/png",
|
transparent: true,
|
},
|
},
|
"0",
|
undefined,
|
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
|
);
|
return layer;
|
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;
|
}
|
return layer
|
}
|
|
export function clearLayerByTypeId(type) {
|
if (_GLOBAL.layers[type]) {
|
_GLOBAL.layers[type].forEach(item => {
|
item && item.deleteObject()
|
});
|
_GLOBAL.layers[type] = [];
|
}
|
}
|
|
export function clearLayerByTypeIdArr(arr) {
|
if (arr.length) {
|
arr.forEach(item => {
|
clearLayerByTypeId(item);
|
})
|
}
|
}
|