|
@@ -167,7 +167,8 @@ export default {
|
|
|
eventStatusValue: '',
|
|
|
cameraCode: '',
|
|
|
cameraRadius: '',
|
|
|
- open_LifelineList: [], //生命线图层控制图层
|
|
|
+ open_LifelineList_3D: [], //生命线图层控制图层
|
|
|
+ open_LifelineList_2D: [], //生命线图层控制图层
|
|
|
imageryProvider_hideList: [], //隐藏图层实体
|
|
|
open_hideList: [], //隐藏图层实体
|
|
|
openModel_hideList: [], //隐藏图层实体
|
|
@@ -387,13 +388,13 @@ export default {
|
|
|
//首先移除之前添加的点
|
|
|
// viewer.entities.removeAll();
|
|
|
//获取点击位置笛卡尔坐标
|
|
|
- var position = that.scene.pickPosition(e.position);
|
|
|
+ let position = that.scene.pickPosition(e.position);
|
|
|
|
|
|
//将笛卡尔坐标转化为经纬度坐标
|
|
|
- var cartographic = SuperMap3D.Cartographic.fromCartesian(position);
|
|
|
- var longitude = SuperMap3D.Math.toDegrees(cartographic.longitude);
|
|
|
- var latitude = SuperMap3D.Math.toDegrees(cartographic.latitude);
|
|
|
- var height = cartographic.height;
|
|
|
+ let cartographic = SuperMap3D.Cartographic.fromCartesian(position);
|
|
|
+ let longitude = SuperMap3D.Math.toDegrees(cartographic.longitude);
|
|
|
+ let latitude = SuperMap3D.Math.toDegrees(cartographic.latitude);
|
|
|
+ let height = cartographic.height;
|
|
|
if (height < 0) {
|
|
|
height = 0;
|
|
|
}
|
|
@@ -439,45 +440,76 @@ export default {
|
|
|
// ***************************生命线---图层过滤 开始************************************************
|
|
|
addLifelineOpen(checkedCities) {
|
|
|
this.checkedCities=checkedCities
|
|
|
- checkedCities.forEach(url => {
|
|
|
- if (!url) return; // 如果没有 URL,跳过当前迭代
|
|
|
- if(!this.open_LifelineList.some(item => item.url === url)){//查找已勾选的图层数组
|
|
|
- let obj = this.scene.open(this.superMapRootUrl +url,undefined,{
|
|
|
- autoSetView : false //不自动定位
|
|
|
- })
|
|
|
- this.open_LifelineList.push({
|
|
|
- url: url,
|
|
|
- mapObj: obj
|
|
|
- })
|
|
|
-
|
|
|
- // 管线流动
|
|
|
- // SuperMap3D.when(obj, function (layer) {
|
|
|
- // var line = scene.layers.find("huashengranqi");
|
|
|
- // line.textureUVSpeed = new SuperMap3D.Cartesian2(0, -2);//模型纹理在UV坐标上的运动速度
|
|
|
- // });
|
|
|
-
|
|
|
- }else{
|
|
|
- SuperMap3D.when.all(this.selectMapObj(url), function (layers) {
|
|
|
- for (var layer of layers) {
|
|
|
- layer.visible = true;
|
|
|
+ var checkedCities_2D=[]
|
|
|
+ var checkedCities_3D=[]
|
|
|
+ this.checkedCities.forEach(urlList => {
|
|
|
+ debugger
|
|
|
+ if (!urlList.length) return; // 如果没有 URL,跳过当前迭代
|
|
|
+
|
|
|
+ //加载三维图层
|
|
|
+ if(urlList[0]){
|
|
|
+ if(!this.open_LifelineList_3D.some(item => item.url === urlList[0])){//查找已勾选的图层数组
|
|
|
+ let obj = this.scene.open(this.superMapRootUrl + urlList[0],undefined,{
|
|
|
+ autoSetView : false //不自动定位
|
|
|
+ })
|
|
|
+ this.open_LifelineList_3D.push({
|
|
|
+ url: urlList[0],
|
|
|
+ mapObj: obj
|
|
|
+ })
|
|
|
+ }else{
|
|
|
+ SuperMap3D.when.all(this.selectMapObj_3D(urlList[0]), function (layers) {
|
|
|
+ for (let layer of layers) {
|
|
|
+ layer.visible = true;
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
- });
|
|
|
+ checkedCities_3D.push(urlList[0])
|
|
|
+ }
|
|
|
+
|
|
|
+ //加载二维图层
|
|
|
+ if(urlList[1]){
|
|
|
+ if(!this.open_LifelineList_2D.some(item => item.url === urlList[1])){//查找已勾选的图层数组
|
|
|
+ let obj = this.viewer.imageryLayers.addImageryProvider(new SuperMap3D.SuperMapImageryProvider({
|
|
|
+ url:this.superMapRootUrl + urlList[1]
|
|
|
+ }));
|
|
|
+ this.open_LifelineList_2D.push({
|
|
|
+ url: urlList[1],
|
|
|
+ mapObj: obj
|
|
|
+ })
|
|
|
+ }else{
|
|
|
+ this.viewer.imageryLayers.remove(this.selectMapObj_2D(urlList[1]));
|
|
|
+ }
|
|
|
+ checkedCities_2D.push(urlList[1])
|
|
|
}
|
|
|
});
|
|
|
- const urlsToRemove = this.open_LifelineList.map(item => item.url).filter(url => !checkedCities.includes(url));//查找没勾选的图层数组
|
|
|
- console.log('选中的url:', checkedCities);
|
|
|
- console.log('移除的url:', urlsToRemove);
|
|
|
- urlsToRemove.forEach(url => {
|
|
|
+ const urlsToRemove_2D = this.open_LifelineList_2D.map(item => item.url).filter(url => !checkedCities_2D.includes(url));//查找没勾选的图层数组2D
|
|
|
+ const urlsToRemove_3D = this.open_LifelineList_3D.map(item => item.url).filter(url => !checkedCities_3D.includes(url));//查找没勾选的图层数组3D
|
|
|
+ console.log('选中的url_2D:', checkedCities_2D);
|
|
|
+ console.log('选中的url_3D:', checkedCities_3D);
|
|
|
+ console.log('移除的url_2D:', urlsToRemove_2D);
|
|
|
+ console.log('移除的url_3D:', urlsToRemove_3D);
|
|
|
+ console.log('加载的url_2D:', this.open_LifelineList_2D);
|
|
|
+ console.log('加载的url_3D:', this.open_LifelineList_3D);
|
|
|
+ urlsToRemove_3D.forEach(url => {
|
|
|
if (!url) return; // 如果没有 URL,跳过当前迭代
|
|
|
- SuperMap3D.when.all(this.selectMapObj(url), function (layers) {
|
|
|
- for (var layer of layers) {
|
|
|
+ SuperMap3D.when.all(this.selectMapObj_3D(url), function (layers) {
|
|
|
+ for (let layer of layers) {
|
|
|
layer.visible = false;
|
|
|
}
|
|
|
});
|
|
|
});
|
|
|
+ urlsToRemove_2D.forEach(url => {
|
|
|
+ if (!url) return; // 如果没有 URL,跳过当前迭代
|
|
|
+ this.viewer.imageryLayers.remove(this.selectMapObj_2D(url));
|
|
|
+ });
|
|
|
},
|
|
|
- selectMapObj(url) {
|
|
|
- const item = this.open_LifelineList.find(item => item.url === url);
|
|
|
+ selectMapObj_2D(url) {
|
|
|
+ const item = this.open_LifelineList_2D.find(item => item.url === url);
|
|
|
+ let mapObj= item ? item.mapObj : null;
|
|
|
+ return mapObj
|
|
|
+ },
|
|
|
+ selectMapObj_3D(url) {
|
|
|
+ const item = this.open_LifelineList_3D.find(item => item.url === url);
|
|
|
let mapObj= item ? item.mapObj : null;
|
|
|
return mapObj
|
|
|
},
|
|
@@ -570,7 +602,7 @@ export default {
|
|
|
if (that.open_hideList != null && that.open_hideList.length > 0) {
|
|
|
for (let i = 0; i < that.open_hideList.length; i++) {
|
|
|
SuperMap3D.when.all(that.open_hideList[i], function (layers) {
|
|
|
- for (var layer of layers) {
|
|
|
+ for (let layer of layers) {
|
|
|
// that.scene.layers.remove(layer.name);
|
|
|
layer.visible = false;
|
|
|
}
|
|
@@ -585,7 +617,7 @@ export default {
|
|
|
for (let i = 0; i < that.openModel_hideList.length; i++) {
|
|
|
SuperMap3D.when.all(that.openModel_hideList[i], function (layers) {
|
|
|
const reversedLayers = [...layers].reverse();
|
|
|
- for (var layer of reversedLayers) {
|
|
|
+ for (let layer of reversedLayers) {
|
|
|
that.scene.layers.remove(layer.name);
|
|
|
that.viewer.imageryLayers.remove(layer)
|
|
|
}
|
|
@@ -991,13 +1023,13 @@ export default {
|
|
|
that.handlerDis.clampMode = 1
|
|
|
//注册测距功能事件
|
|
|
that.handlerDis.measureEvt.addEventListener(function(result) {
|
|
|
- var dis = Number(result.distance)
|
|
|
- var selOptV = that.selOptV
|
|
|
+ let dis = Number(result.distance)
|
|
|
+ let selOptV = that.selOptV
|
|
|
if (selOptV == 3 || selOptV == 4) {
|
|
|
dis = Number(calcClampDistance(positions))
|
|
|
}
|
|
|
|
|
|
- var distance = dis > 1000 ? (dis / 1000).toFixed(2) + 'km' : dis.toFixed(2) + 'm'
|
|
|
+ let distance = dis > 1000 ? (dis / 1000).toFixed(2) + 'km' : dis.toFixed(2) + 'm'
|
|
|
that.handlerDis.disLabel.text = '距离:' + distance
|
|
|
|
|
|
})
|
|
@@ -1028,8 +1060,8 @@ export default {
|
|
|
|
|
|
that.handlerArea.clampMode = 1
|
|
|
that.handlerArea.measureEvt.addEventListener(function(result) {
|
|
|
- var mj = Number(result.area)
|
|
|
- var area = mj > 1000000 ? (mj / 1000000).toFixed(2) + 'km²' : mj.toFixed(2) + '㎡'
|
|
|
+ let mj = Number(result.area)
|
|
|
+ let area = mj > 1000000 ? (mj / 1000000).toFixed(2) + 'km²' : mj.toFixed(2) + '㎡'
|
|
|
that.handlerArea.areaLabel.text = '面积:' + area
|
|
|
})
|
|
|
that.handlerArea.activeEvt.addEventListener(function(isActive) {
|
|
@@ -1057,9 +1089,9 @@ export default {
|
|
|
//初始化测量高度
|
|
|
that.handlerHeight = new SuperMap3D.MeasureHandler(that.viewer, SuperMap3D.MeasureMode.DVH);
|
|
|
that.handlerHeight.measureEvt.addEventListener(function (result) {
|
|
|
- var distance = result.distance > 1000 ? (result.distance / 1000).toFixed(2) + 'km' : result.distance + 'm';
|
|
|
- var vHeight = result.verticalHeight > 1000 ? (result.verticalHeight / 1000).toFixed(2) + 'km' : result.verticalHeight + 'm';
|
|
|
- var hDistance = result.horizontalDistance > 1000 ? (result.horizontalDistance / 1000).toFixed(2) + 'km' : result.horizontalDistance + 'm';
|
|
|
+ let distance = result.distance > 1000 ? (result.distance / 1000).toFixed(2) + 'km' : result.distance + 'm';
|
|
|
+ let vHeight = result.verticalHeight > 1000 ? (result.verticalHeight / 1000).toFixed(2) + 'km' : result.verticalHeight + 'm';
|
|
|
+ let hDistance = result.horizontalDistance > 1000 ? (result.horizontalDistance / 1000).toFixed(2) + 'km' : result.horizontalDistance + 'm';
|
|
|
that.handlerHeight.disLabel.text = '空间距离:' + distance;
|
|
|
that.handlerHeight.vLabel.text = '垂直高度:' + vHeight;
|
|
|
that.handlerHeight.hLabel.text = '水平距离:' + hDistance;
|
|
@@ -1088,7 +1120,7 @@ export default {
|
|
|
let that = this
|
|
|
that.showExcavation=true
|
|
|
setTimeout(function() {
|
|
|
- var tooltip = createTooltip(document.body);
|
|
|
+ let tooltip = createTooltip(document.body);
|
|
|
that.handlerExcavation = new SuperMap3D.DrawHandler(that.viewer, SuperMap3D.DrawMode.Polygon);
|
|
|
that.handlerExcavation.activeEvt.addEventListener(function(isActive) {
|
|
|
if(isActive == true) {
|
|
@@ -1108,13 +1140,13 @@ export default {
|
|
|
}
|
|
|
});
|
|
|
that.handlerExcavation.drawEvt.addEventListener(function(res) {
|
|
|
- var positions = [].concat(res.object.positions);
|
|
|
- var positionsDegrees = [];
|
|
|
- for(var i = 0; i < positions.length; i++) {
|
|
|
- var cartographic = SuperMap3D.Cartographic.fromCartesian(positions[i]);
|
|
|
- var lon = SuperMap3D.Math.toDegrees(cartographic.longitude);
|
|
|
- var lat = SuperMap3D.Math.toDegrees(cartographic.latitude);
|
|
|
- var h = cartographic.height;
|
|
|
+ let positions = [].concat(res.object.positions);
|
|
|
+ let positionsDegrees = [];
|
|
|
+ for(let i = 0; i < positions.length; i++) {
|
|
|
+ let cartographic = SuperMap3D.Cartographic.fromCartesian(positions[i]);
|
|
|
+ let lon = SuperMap3D.Math.toDegrees(cartographic.longitude);
|
|
|
+ let lat = SuperMap3D.Math.toDegrees(cartographic.latitude);
|
|
|
+ let h = cartographic.height;
|
|
|
positionsDegrees = positionsDegrees.concat([lon, lat, h]);
|
|
|
}
|
|
|
that.extract(positionsDegrees);
|
|
@@ -1219,7 +1251,7 @@ export default {
|
|
|
let that = this
|
|
|
that.showExcavationAnalyze=true
|
|
|
setTimeout(function() {
|
|
|
- var tooltip = createTooltip(document.body);
|
|
|
+ let tooltip = createTooltip(document.body);
|
|
|
that.handlerExcavationAnalyze = new SuperMap3D.DrawHandler(that.viewer, SuperMap3D.DrawMode.Polygon, that.clampMode);
|
|
|
|
|
|
that.handlerExcavationAnalyze.activeEvt.addEventListener(function (isActive) {
|
|
@@ -1247,16 +1279,16 @@ export default {
|
|
|
that.handlerExcavationAnalyze.deactivate();
|
|
|
tooltip.setVisible(false);
|
|
|
|
|
|
- var dep = document.getElementById("depth").value;
|
|
|
+ let dep = document.getElementById("depth").value;
|
|
|
|
|
|
- var array = [].concat(result.object.positions);
|
|
|
- var positions = [];
|
|
|
- var positionsii = [];
|
|
|
- for (var i = 0, len = array.length; i < len; i++) {
|
|
|
- var cartographic = SuperMap3D.Cartographic.fromCartesian(array[i]);
|
|
|
- var longitude = SuperMap3D.Math.toDegrees(cartographic.longitude);
|
|
|
- var latitude = SuperMap3D.Math.toDegrees(cartographic.latitude);
|
|
|
- var h = cartographic.height;
|
|
|
+ let array = [].concat(result.object.positions);
|
|
|
+ let positions = [];
|
|
|
+ let positionsii = [];
|
|
|
+ for (let i = 0, len = array.length; i < len; i++) {
|
|
|
+ let cartographic = SuperMap3D.Cartographic.fromCartesian(array[i]);
|
|
|
+ let longitude = SuperMap3D.Math.toDegrees(cartographic.longitude);
|
|
|
+ let latitude = SuperMap3D.Math.toDegrees(cartographic.latitude);
|
|
|
+ let h = cartographic.height;
|
|
|
if (positions.indexOf(longitude) == -1 && positions.indexOf(latitude) == -1) {
|
|
|
|
|
|
positions.push(longitude);
|
|
@@ -1277,11 +1309,11 @@ export default {
|
|
|
position: positions
|
|
|
});
|
|
|
|
|
|
- var length = [];
|
|
|
+ let length = [];
|
|
|
length.push(positionsii.length);
|
|
|
|
|
|
//需要在此 动态构造一个 REGION类型的对象
|
|
|
- var geometry = {
|
|
|
+ let geometry = {
|
|
|
"id": 23,
|
|
|
"parts": length,
|
|
|
"points": positionsii,
|
|
@@ -1290,7 +1322,7 @@ export default {
|
|
|
};
|
|
|
|
|
|
|
|
|
- var queryObj = {
|
|
|
+ let queryObj = {
|
|
|
"cutFillType": "REGIONANDALTITUDE",
|
|
|
"baseAltitude": dep,
|
|
|
"region": geometry,
|
|
@@ -1298,15 +1330,15 @@ export default {
|
|
|
"buildPyramid": true,
|
|
|
"deleteExistResultDataset": true
|
|
|
};
|
|
|
- var queryObjJSON = JSON.stringify(queryObj);
|
|
|
+ let queryObjJSON = JSON.stringify(queryObj);
|
|
|
$.ajax({
|
|
|
type: 'post',
|
|
|
url: "http://www.supermapol.com/realspace/services/spatialAnalysis-dxyx_ios/restjsr/spatialanalyst/datasets/DEM@%E5%9B%9B%E5%A7%91%E5%A8%98%E5%B1%B1/terraincalculation/cutfill.json?returnContent=true",
|
|
|
data: queryObjJSON,
|
|
|
success: function (data) {
|
|
|
console.log(data);
|
|
|
- // var resultObj = JSON.parse(data);
|
|
|
- var resultObj = data;
|
|
|
+ // let resultObj = JSON.parse(data);
|
|
|
+ let resultObj = data;
|
|
|
|
|
|
document.getElementById("cutarea").value = resultObj.cutArea;
|
|
|
document.getElementById("cutVolume").value = resultObj.cutVolume;
|
|
@@ -1347,7 +1379,7 @@ export default {
|
|
|
let layersAll = [];
|
|
|
that.checkedCities.forEach(url => {
|
|
|
if (!url) return; // 如果没有 URL,跳过当前迭代
|
|
|
- SuperMap3D.when.all(that.selectMapObj(url), function (layers) {
|
|
|
+ SuperMap3D.when.all(that.selectMapObj_3D(url), function (layers) {
|
|
|
layersAll.push(layers)
|
|
|
});
|
|
|
});
|
|
@@ -1993,7 +2025,7 @@ export default {
|
|
|
if (radius != undefined && radius != null) {
|
|
|
let that = this
|
|
|
// 初始化颜色选择控件
|
|
|
- var initialScanColor = '#2263e6'
|
|
|
+ let initialScanColor = '#2263e6'
|
|
|
that.viewer.scene.scanEffect.color = SuperMap3D.Color.fromCssColorString(initialScanColor)
|
|
|
// 获取或设置扫描线的运行周期,单位:秒。
|
|
|
that.viewer.scene.scanEffect.period = radius / 500
|