DESKTOP-CRQ4N2U\jintian 1 год назад
Родитель
Сommit
016b9b9279
1 измененных файлов с 134 добавлено и 102 удалено
  1. 134 102
      src/views/Map3d/components/layer.vue

+ 134 - 102
src/views/Map3d/components/layer.vue

@@ -127,7 +127,9 @@
 				node.childNodes.forEach(item => {
 					_self.setLayersControl(jt3d, item.data, checked);
 					_self.$refs.treeRef.setChecked(item, checked);
-					_self.childNodesChange(item, checked);
+					if (item.childNodes.length > 0) {
+						_self.childNodesChange(item, checked);
+					}
 				});
 			},
 
@@ -182,6 +184,7 @@
 				}
 
 				await new Promise((resolve, reject) => {
+					
 					switch (data.loadtype) {
 						case "GeoJsonPoint": //GeoJsonPoint
 							if (checked) {
@@ -205,10 +208,12 @@
 									}
 								}
 
-
+								// let list = window.viewer.dataSources.getByName(_serviceId)
+								// if (!list) {
 								jt3d.layer.addBillboardByGeoJson(_options, function(serviceId) {
 
 								});
+								// }
 
 							} else {
 								jt3d.layer.removeDataSources({
@@ -335,14 +340,20 @@
 
 								if (parameterset) {
 									if (parameterset.points) {
-										jt3d.layer.addPolygonImageMaterial({
-											id: _serviceId,
-											points: parameterset.points,
-											url: data.datasource,
-											alpha: _opacity
-										}, function(serviceId) {
 
-										});
+										if (!window[_serviceId]) {
+
+
+											jt3d.layer.addPolygonImageMaterial({
+												id: _serviceId,
+												points: parameterset.points,
+												url: data.datasource,
+												alpha: _opacity
+											}, function(serviceId) {
+
+											});
+
+										}
 									} else {
 										ElMessage("请检测图层表parameterset字段是否设置points");
 									}
@@ -362,15 +373,17 @@
 							if (checked) {
 								data.isinit = '1';
 
-								let floatLayer = new this.jt3dSDK.CrImageServerLayer({
-									viewer: jt3d._viewer,
-									url: data.datasource,
-									opacity: _opacity,
-									show: true
-								});
-								window[_serviceId] = floatLayer;
-								//添加网格地图
-								// window[_serviceId].show();
+								if (!window[_serviceId]) {
+									let floatLayer = new this.jt3dSDK.CrImageServerLayer({
+										viewer: jt3d._viewer,
+										url: data.datasource,
+										opacity: _opacity,
+										show: true
+									});
+									window[_serviceId] = floatLayer;
+									//添加网格地图
+									// window[_serviceId].show();
+								}
 							} else {
 								window[_serviceId].hide();
 								data.isinit = '0';
@@ -389,7 +402,10 @@
 										_options.terrainExaggeration = parameterset.terrainExaggeration;
 									}
 								}
-								jt3d.layer.addTerrain(_options);
+
+								if (!window.viewer.terrainProvider) {
+									jt3d.layer.addTerrain(_options);
+								}
 							} else {
 								jt3d.layer.removeTerrain().then(res => {
 									data.isinit = '0';
@@ -418,21 +434,25 @@
 									}
 								}
 
-								//加载服务
-								jt3d.layer.addUrlTemplateImagery(_options, function(serviceId) {
+								if (!window[_serviceId]) {
+
+									//加载服务
+									jt3d.layer.addUrlTemplateImagery(_options, function(serviceId) {
 
-									//重置图层顺序
-									_self.setLayerNumber(jt3d, serviceId)
-									if (atlastype === "底图") {
-										var imageryLayers = jt3d._viewer.imageryLayers;
-										imageryLayers.lowerToBottom(window[serviceId]);
-										imageryLayers.raise(window[serviceId]);
-										if (layertype === '标注') {
+										//重置图层顺序
+										_self.setLayerNumber(jt3d, serviceId)
+										if (atlastype === "底图") {
 											var imageryLayers = jt3d._viewer.imageryLayers;
-											imageryLayers.raiseToTop(window[serviceId]);
+											imageryLayers.lowerToBottom(window[serviceId]);
+											imageryLayers.raise(window[serviceId]);
+											if (layertype === '标注') {
+												var imageryLayers = jt3d._viewer.imageryLayers;
+												imageryLayers.raiseToTop(window[serviceId]);
+											}
 										}
-									}
-								});
+									});
+								}
+
 							} else {
 								jt3d.layer.removeImageryProvider({
 									serviceId: _serviceId
@@ -472,20 +492,24 @@
 													_options.maximumLevel = parameterset.maximumLevel;
 												}
 
-												jt3d.layer.addWebMapTileService(_options, function(serviceId) {
+												if (!window[_serviceId]) {
 
-													//重置图层顺序
-													_self.setLayerNumber(jt3d, serviceId)
-													if (atlastype === "底图") {
-														var imageryLayers = jt3d._viewer.imageryLayers;
-														imageryLayers.lowerToBottom(window[serviceId]);
-														imageryLayers.raise(window[serviceId]);
-														if (layertype === '标注') {
+													jt3d.layer.addWebMapTileService(_options, function(serviceId) {
+
+														//重置图层顺序
+														_self.setLayerNumber(jt3d, serviceId)
+														if (atlastype === "底图") {
 															var imageryLayers = jt3d._viewer.imageryLayers;
-															imageryLayers.raiseToTop(window[serviceId]);
+															imageryLayers.lowerToBottom(window[serviceId]);
+															imageryLayers.raise(window[serviceId]);
+															if (layertype === '标注') {
+																var imageryLayers = jt3d._viewer.imageryLayers;
+																imageryLayers.raiseToTop(window[serviceId]);
+															}
 														}
-													}
-												});
+													});
+
+												}
 
 											} else {
 												ElMessage("请检测图层表parameterset字段是否设置tileMatrixSetID");
@@ -532,20 +556,23 @@
 											_options.maximumLevel = parameterset.maximumLevel;
 										}
 
-										jt3d.layer.addWebMapService(_options, function(serviceId) {
+										if (!window[_serviceId]) {
 
-											//重置图层顺序
-											_self.setLayerNumber(jt3d, serviceId)
-											if (atlastype === "底图") {
-												var imageryLayers = jt3d._viewer.imageryLayers;
-												imageryLayers.lowerToBottom(window[serviceId]);
-												imageryLayers.raise(window[serviceId]);
-												if (layertype === '标注') {
+											jt3d.layer.addWebMapService(_options, function(serviceId) {
+
+												//重置图层顺序
+												_self.setLayerNumber(jt3d, serviceId)
+												if (atlastype === "底图") {
 													var imageryLayers = jt3d._viewer.imageryLayers;
-													imageryLayers.raiseToTop(window[serviceId]);
+													imageryLayers.lowerToBottom(window[serviceId]);
+													imageryLayers.raise(window[serviceId]);
+													if (layertype === '标注') {
+														var imageryLayers = jt3d._viewer.imageryLayers;
+														imageryLayers.raiseToTop(window[serviceId]);
+													}
 												}
-											}
-										});
+											});
+										}
 									} else {
 										ElMessage("请检测图层表parameterset字段是否设置layers");
 									}
@@ -576,21 +603,25 @@
 									}
 								}
 
-								//加载服务
-								jt3d.layer.addArcGisMapServer(_options, function(serviceId) {
+								if (!window[_serviceId]) {
 
-									//重置图层顺序
-									_self.setLayerNumber(jt3d, serviceId)
-									if (atlastype === "底图") {
-										var imageryLayers = jt3d._viewer.imageryLayers;
-										imageryLayers.lowerToBottom(window[serviceId]);
-										imageryLayers.raise(window[serviceId]);
-										if (layertype === '标注') {
+									//加载服务
+									jt3d.layer.addArcGisMapServer(_options, function(serviceId) {
+
+										//重置图层顺序
+										_self.setLayerNumber(jt3d, serviceId)
+										if (atlastype === "底图") {
 											var imageryLayers = jt3d._viewer.imageryLayers;
-											imageryLayers.raiseToTop(window[serviceId]);
+											imageryLayers.lowerToBottom(window[serviceId]);
+											imageryLayers.raise(window[serviceId]);
+											if (layertype === '标注') {
+												var imageryLayers = jt3d._viewer.imageryLayers;
+												imageryLayers.raiseToTop(window[serviceId]);
+											}
 										}
-									}
-								})
+									})
+
+								}
 							} else {
 								jt3d.layer.removeImageryProvider({
 									serviceId: _serviceId
@@ -618,20 +649,25 @@
 									}
 								}
 
-								jt3d.layer.addTileMapServiceImagery(_options, function(serviceId) {
 
-									//重置图层顺序
-									_self.setLayerNumber(jt3d, serviceId)
-									if (atlastype === "底图") {
-										var imageryLayers = jt3d._viewer.imageryLayers;
-										imageryLayers.lowerToBottom(window[serviceId]);
-										imageryLayers.raise(window[serviceId]);
-										if (layertype === '标注') {
+								if (!window[_serviceId]) {
+
+									jt3d.layer.addTileMapServiceImagery(_options, function(serviceId) {
+
+										//重置图层顺序
+										_self.setLayerNumber(jt3d, serviceId)
+										if (atlastype === "底图") {
 											var imageryLayers = jt3d._viewer.imageryLayers;
-											imageryLayers.raiseToTop(window[serviceId]);
+											imageryLayers.lowerToBottom(window[serviceId]);
+											imageryLayers.raise(window[serviceId]);
+											if (layertype === '标注') {
+												var imageryLayers = jt3d._viewer.imageryLayers;
+												imageryLayers.raiseToTop(window[serviceId]);
+											}
 										}
-									}
-								});
+									});
+
+								}
 							} else {
 								jt3d.layer.removeImageryProvider({
 									serviceId: _serviceId
@@ -645,9 +681,7 @@
 							if (checked) {
 								data.isinit = '1';
 
-								if (window[_serviceId]) {
-									window[_serviceId].show = true;
-								} else {
+								if (!window[_serviceId]) {
 									//设置参数
 									let _options = {
 										id: _serviceId,
@@ -667,17 +701,17 @@
 									});
 								}
 							} else {
-								if (window[_serviceId]) {
-									//3DTileset数据量比较大,会报很多cesium错误
-									// jt3d.layer.removeScenePrimitives({
-									// 	serviceId: _serviceId
-									// }).then(res => {
-									// 	data.isinit = '0';
-									// });
-
-									window[_serviceId].show = false;
+								//3DTileset数据量比较大,会报很多cesium错误
+								jt3d.layer.removeScenePrimitives({
+									serviceId: _serviceId
+								}).then(res => {
 									data.isinit = '0';
-								}
+								});
+
+								// if (window[_serviceId]) {
+								// 	window[_serviceId].show = false;
+								// 	data.isinit = '0';
+								// }
 							}
 
 							break;
@@ -685,9 +719,7 @@
 							if (checked) {
 								data.isinit = '1';
 
-								if (window[_serviceId]) {
-									window[_serviceId].show = true;
-								} else {
+								if (!window[_serviceId]) {
 									//设置参数
 									let _options = {
 										id: _serviceId,
@@ -705,16 +737,16 @@
 									});
 								}
 							} else {
-								if (window[_serviceId]) {
-									// jt3d.layer.removeScenePrimitives({
-									// 	serviceId: _serviceId
-									// }).then(res => {
-									// 	data.isinit = '0';
-									// });
-
-									window[_serviceId].show = false;
+								jt3d.layer.removeScenePrimitives({
+									serviceId: _serviceId
+								}).then(res => {
 									data.isinit = '0';
-								}
+								});
+
+								// if (window[_serviceId]) {
+								// 	window[_serviceId].show = false;
+								// 	data.isinit = '0';
+								// }
 							}
 							break;
 						default:
@@ -1080,7 +1112,7 @@
 				// 叶子节点(无子节点)
 				&.is-leaf {
 					color: transparent;
-					display: none; // 也可以去掉
+					// display: none; // 也可以去掉
 				}
 			}
 		}