DESKTOP-CRQ4N2U\jintian 2 лет назад
Родитель
Сommit
e32f538297

+ 2 - 2
.env.development

@@ -5,6 +5,6 @@ VITE_APP_TITLE = 金田基础框架
 VITE_APP_ENV = 'development'
 
 # 金田基础框架/开发环境
-VITE_API_URL = 'http://10.88.77.132:8092/'
+VITE_API_URL = 'http://10.88.77.131:8083/'
 
-# http://10.88.77.132:8080/
+# 后台地址: http://10.88.77.131:8090/xjats-admin/

+ 1 - 1
.env.production

@@ -5,7 +5,7 @@ VITE_APP_TITLE = 金田基础框架
 VITE_APP_ENV = 'production'
 
 # 金田基础框架/生产环境
-VITE_API_URL = 'http://10.88.77.132:8092'
+VITE_API_URL = 'http://10.88.77.131:8083/'
 
 # 是否在打包时开启压缩,支持 gzip 和 brotli
 VITE_BUILD_COMPRESS = gzip

+ 1 - 1
index.html

@@ -4,7 +4,7 @@
 		<meta charset="UTF-8" />
 		<link rel="icon" href="/favicon.ico" />
 		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
-		<title>烟台市自然资源三维立体一张图系统</title>
+		<title>金田CIM三维基础平台</title>
 		<style>
 			#app {
 				height: 100vh;

+ 4 - 0
src/assets/dataFile/fwx.json

@@ -0,0 +1,4 @@
+{"type":"FeatureCollection", "features": [
+{"type":"Feature","geometry":{"type":"LineString","coordinates":[[76.1850140872,39.6986668102],[76.181577798,39.6952233445],[76.1648654081,39.7060791157],[76.1641691006,39.7050397108],[76.1579101574,39.7073768566],[76.1546136304,39.7047083266],[76.153592308,39.705729402],[76.151724509,39.7072513479],[76.1491601258,39.7091312752],[76.1470535578,39.7103781204],[76.1446903169,39.7116835367],[76.1416140265,39.7132725469],[76.1388168693,39.7147547341],[76.1396474063,39.7164722407],[76.143253557,39.7183884212],[76.1468806501,39.7198897403],[76.1478142031,39.7197911843],[76.1503987521,39.7195831922],[76.1526640114,39.7204762249],[76.1670993888,39.7264422213],[76.1756000467,39.7315938888],[76.1811351552,39.735635674],[76.1822903837,39.7374436385],[76.1837140116,39.7375345786],[76.1848919359,39.7371128147],[76.1910388996,39.738605793],[76.1927014176,39.7340138276],[76.1889508761,39.7299051263],[76.1883624668,39.7300671308],[76.1862223508,39.728243912],[76.1871240859,39.7254793845],[76.1785108477,39.7225494098],[76.1830407113,39.7151994787],[76.1855685618,39.7160255025],[76.1949805531,39.7114873578],[76.1992433669,39.7036709856],[76.2027163043,39.7025033499],[76.220225461,39.7058258328],[76.224245783,39.6987120869],[76.192031455,39.6898738821],[76.184996296,39.6986987803],[76.1850551711,39.6987044277]]},"properties":{"NAME":"未命名线_1"}},
+{"type":"Feature","geometry":{"type":"LineString","coordinates":[[76.0589608542,39.6762756331],[76.0840616916,39.6863577757],[76.0906407448,39.6789383328],[76.0878529011,39.6770112816],[76.0971832367,39.6676833444],[76.0858276324,39.6600729563],[76.0821673577,39.6602930661],[76.0759433249,39.6625897125],[76.0692845075,39.6690384195],[76.0652847447,39.6724620155],[76.0615652713,39.6744606558],[76.0589069723,39.6759195247],[76.0590201526,39.6761769254]]},"properties":{"NAME":"未命名线_2"}}
+]}

Разница между файлами не показана из-за своего большого размера
+ 0 - 1
src/assets/dataFile/map_xzqh_zj.json


BIN
src/assets/images/header/header-1.png


BIN
src/assets/images/login/login-title.png


BIN
src/assets/images/login/login-title.webp


BIN
src/assets/images/longheader.png


+ 1 - 1
src/views/Login/Login.vue

@@ -243,7 +243,7 @@
 		width: calc(100% - 0rem);
 		height: 70rem;
 		line-height: 70rem;
-		background: url(@/assets/images/login/login-title.png) 0rem no-repeat, linear-gradient(100deg, rgba(16, 96, 210, .2) 30%, rgba(16, 106, 250, .1) 70%);
+		background: url(@/assets/images/login/login-title.webp) 0rem no-repeat, linear-gradient(100deg, rgba(16, 96, 210, .2) 30%, rgba(16, 106, 250, .1) 70%);
 		background-size: 510rem 70rem, 100% 70rem;
 		background-repeat: no-repeat;
 		user-select: none;

+ 216 - 189
src/views/Map3d/components/ViewerSplitScreen.vue

@@ -16,13 +16,13 @@
 
 <template>
 	<div class="jt-layer">
-		<el-tree :data="treeData"  :default-expanded-keys="expandedKeys" node-key="id" class="tree-line"  :expand-on-click-node="false" ref="treeRef" @check-change="handleCheckChange" @node-click="handleClick">
+		<el-tree :data="treeData" :default-expanded-keys="expandedKeys" :default-checked-keys="checkedkeys" node-key="id" class="tree-line" ref="treeRef">
 			<template #default="{ node, data }">
 				<!-- 复选框 -->
 				<el-checkbox v-if="data.ischeck === '1' && store.userport == 'PC'" v-model="node.checked" :indeterminate="node.indeterminate" :disabled="!!node.disabled" @change="handleCheckBoxChange($event, data, node)">
 				</el-checkbox>
-				<el-switch  v-else-if="data.ischeck == 1 && store.userport == 'APP'" width="30rem" size="small" v-model="node.checked" @change="handleCheckBoxChange($event, data, node)" />
-				<span class="custom-tree-node">
+				<el-switch v-else-if="data.ischeck == 1 && store.userport == 'APP'" width="30rem" size="small" v-model="node.checked" @change="handleCheckBoxChange($event, data, node)" />
+				<span class="custom-tree-node" @click="handleClick(data)">
 					<!-- 字体、图标 -->
 					<!-- <span>
 						<img src="@/assets/images/logo16x16.ico" />
@@ -55,6 +55,7 @@
 				treeData: [],
 				inittree: [], //初始化图层数组
 				expandedKeys: [], //对应要展开的节点id
+				checkedkeys: [] //默认打开节点的id
 			}
 		},
 
@@ -142,7 +143,15 @@
 
 								break;
 							case "Cesium3DTileset": //加载3DTileset地图服务--实景
-
+								if (window[_serviceId]) {
+									jt3dLeft._viewer.flyTo(window[_serviceId], {
+										offset: {
+											heading: Cesium.Math.toRadians(20.0), //方向
+											pitch: Cesium.Math.toRadians(-90), //倾斜角度
+											range: 1000
+										}
+									});
+								}
 								break;
 							case "Cesium3DTileset_BM": //加载3DTileset地图服务--白膜
 
@@ -152,16 +161,82 @@
 						}
 					})
 				}
+			},
 
+			/**
+			 * el-slider 值改变时触发(使用鼠标拖曳时,只在松开鼠标后触发)
+			 * 地图服务的透明度调整
+			 */
+			handleSliderChange($event, data) {
+				let _serviceId = "serviceLeft_" + data.layercode + data.layerorder;
+				if (data.loadtype === "Cesium3DTileset") {
+					//设置实景透明度
+					jt3dLeft.layer.set3DTileStyle({
+						serviceId: _serviceId,
+						alpha: $event,
+					});
+				} else if (data.loadtype === "CrImageServerLayer") {
+					let floatLayer = window[_serviceId];
+					floatLayer.setOpacity($event)
+				} else if (data.loadtype === "PolygonImageMaterial") {
+					//设置透明度
+					jt3dLeft.layer.setPolygonImageMaterial({
+						serviceId: _serviceId,
+						alpha: $event,
+					});
+				} else if (data.loadtype === "entitiesGltf") {
+					//设置透明度
+					jt3dLeft.layer.setModelStyle({
+						serviceId: _serviceId,
+						alpha: $event,
+					});
+				} else {
+					jt3dLeft.layer.setLayersStyle({
+						serviceId: _serviceId,
+						alpha: $event,
+					});
+				}
+			},
+
+			/**
+			 * el-checkbox 当绑定值变化时触发的事件
+			 * @param {Object} checked 复选框状态
+			 * @param {Object} data 对应于节点点击的节点对象
+			 * @param {Object} node TreeNode 的 node 属性
+			 */
+			handleCheckBoxChange(checked, data, node) {
+
+				let _node = this.$refs.treeRef.getNode(data);
+				if (_node.isLeaf) {
+					this.setLayerControl(data, checked);
+					this.$refs.treeRef.setChecked(_node, checked); //是否设置子节点,默认为false,利用tree组件渲染后带有的isLeaf(是否为叶子节点)属性,如果为叶子节点就选中。利用tree的API就实现了正确的回显效果	
+				}
+
+				//控制子节点
+				this.childNodesChange(node, checked);
+			},
+			/**
+			 * 控制子节点
+			 * @param {Object} node
+			 * @param {Object} checked
+			 */
+			childNodesChange(node, checked) {
+				let _self = this;
+				node.childNodes.forEach(item => {
+					_self.setLayerControl(item.data, checked);
+					_self.$refs.treeRef.setChecked(item, checked);
+					_self.childNodesChange(item, checked);
+				});
 			},
 
 			/**
-			 * el-tree 当复选框被点击的时候触发
 			 * 控制地图服务的显示及隐藏
 			 * @param {Object} data 传递给 data 属性的数组中该节点所对应的对象
 			 * @param {Object} checked 节点本身是否被选中
 			 */
-			async handleCheckChange(data, checked) {
+			async setLayerControl(data, checked) {
+				console.log('操作', '图层控制')
+
 				let _self = this;
 
 				let _serviceId = "serviceLeft_" + data.layercode + data.layerorder;
@@ -207,6 +282,8 @@
 					switch (data.loadtype) {
 						case "GeoJsonPoint": //GeoJsonPoint
 							if (checked) {
+								data.isinit = '1';
+
 								//设置参数
 								let _options = {
 									id: _serviceId,
@@ -214,7 +291,6 @@
 								}
 
 								if (parameterset) {
-
 									if (parameterset.billboard instanceof Object) {
 										let billboard = parameterset.billboard;
 										_options.billboard = billboard;
@@ -226,17 +302,23 @@
 									}
 								}
 
+
 								jt3dLeft.layer.addBillboardByGeoJson(_options, function(serviceId) {
 
 								});
+
 							} else {
 								jt3dLeft.layer.removeDataSources({
 									serviceId: _serviceId,
+								}).then(res => {
+									data.isinit = '0';
 								});
 							}
 							break;
 						case "GeoJsonPolyline": //GeoJsonPolyline
 							if (checked) {
+								data.isinit = '1';
+
 								//设置参数
 								let _options = {
 									id: _serviceId,
@@ -266,10 +348,12 @@
 									if (parameterset.count) { //重复次数
 										_options.count = parameterset.count;
 									}
-									if (parameterset.direction) { //direction=vertical 纵,order='-'(由下到上) , '+"(由上到下)
+									if (parameterset
+										.direction) { //direction=vertical 纵,order='-'(由下到上) , '+"(由上到下)
 										_options.direction = parameterset.direction;
 									}
-									if (parameterset.order) { //direction=horizontal 横,order='-'(顺时针) , '+'(逆时针)
+									if (parameterset
+										.order) { //direction=horizontal 横,order='-'(顺时针) , '+'(逆时针)
 										_options.order = parameterset.order;
 									}
 								}
@@ -280,11 +364,15 @@
 							} else {
 								jt3dLeft.layer.removeDataSources({
 									serviceId: _serviceId,
+								}).then(res => {
+									data.isinit = '0';
 								});
 							}
 							break;
 						case "entitiesGltf": //gltf/glb
 							if (checked) {
+								data.isinit = '1';
+
 								//设置参数
 								let _options = {
 									id: _serviceId,
@@ -333,11 +421,15 @@
 							} else {
 								jt3dLeft.layer.removeEntity({
 									serviceId: _serviceId,
+								}).then(res => {
+									data.isinit = '0';
 								});
 							}
 							break;
 						case "PolygonImageMaterial": //图片材质
 							if (checked) {
+								data.isinit = '1';
+
 								if (parameterset) {
 									if (parameterset.points) {
 										jt3dLeft.layer.addPolygonImageMaterial({
@@ -357,13 +449,17 @@
 							} else {
 								jt3dLeft.layer.removeEntity({
 									serviceId: _serviceId,
+								}).then(res => {
+									data.isinit = '0';
 								});
 							}
 							break;
 						case "CrImageServerLayer": //贴地所有地形、模型的规划图、网格地图
 							if (checked) {
+								data.isinit = '1';
+
 								let floatLayer = new this.jt3dSDK.CrImageServerLayer({
-									viewer: jt3dLeft._viewer,
+									viewer: window["viewer"],
 									url: data.datasource,
 									opacity: _opacity,
 									show: true
@@ -373,10 +469,13 @@
 								// window[_serviceId].show();
 							} else {
 								window[_serviceId].hide();
+								data.isinit = '0';
 							}
 							break;
 						case "DEM": //地形服务(DEM)
 							if (checked) {
+								data.isinit = '1';
+
 								//设置参数
 								let _options = {
 									url: data.datasource,
@@ -386,14 +485,17 @@
 										_options.terrainExaggeration = parameterset.terrainExaggeration;
 									}
 								}
-
 								jt3dLeft.layer.addTerrain(_options);
 							} else {
-								jt3dLeft.layer.removeTerrain();
+								jt3dLeft.layer.removeTerrain().then(res => {
+									data.isinit = '0';
+								});
 							}
 							break;
 						case "UrlTemplateImageryProvider": //加载URL模板服务
 							if (checked) {
+								data.isinit = '1';
+
 								//设置参数
 								let _options = {
 									id: _serviceId,
@@ -417,24 +519,19 @@
 
 									//重置图层顺序
 									_self.setLayerNumber(serviceId)
-									if (layertype === '标注') {
-										var imageryLayers = jt3dLeft._viewer.imageryLayers;
-										imageryLayers.raiseToTop(window[serviceId]);
-									}
-
 								});
 							} else {
-								let removeLayer = jt3dLeft.layer.removeImageryProvider({
+								jt3dLeft.layer.removeImageryProvider({
 									serviceId: _serviceId
-								});
-								removeLayer.then(function() {
-									console.log('成功移除')
+								}).then(res => {
+									data.isinit = '0';
 								});
 							}
 
 							break;
 						case "WebMapTileServiceImageryProvider": // WMTS地图服务
 							if (checked) {
+								data.isinit = '1';
 
 								//设置参数
 								let _options = {
@@ -455,9 +552,6 @@
 											if (parameterset.tileMatrixSetID) { //用于WMTS请求的TileMatrixSet的标识符
 												_options.tileMatrixSetID = parameterset.tileMatrixSetID;
 
-												if (parameterset.tileMatrixLabels) { //TileMatrix中用于WMTS请求的标识符列表,每个TileMatrix级别一个标识符。
-													_options.tileMatrixLabels = parameterset.tileMatrixLabels;
-												}
 												if (parameterset.minimumLevel) { //最小层级
 													_options.minimumLevel = parameterset.minimumLevel;
 												}
@@ -469,10 +563,6 @@
 
 													//重置图层顺序
 													_self.setLayerNumber(serviceId)
-													if (layertype === '标注') {
-														var imageryLayers = jt3dLeft._viewer.imageryLayers;
-														imageryLayers.raiseToTop(window[serviceId]);
-													}
 												});
 
 											} else {
@@ -489,14 +579,19 @@
 								} else {
 									ElMessage("请检测图层表parameterset字段是否设置layers,style,tileMatrixSetID");
 								}
+
 							} else {
 								jt3dLeft.layer.removeImageryProvider({
 									serviceId: _serviceId
+								}).then(res => {
+									data.isinit = '0';
 								});
 							}
 							break;
 						case "WebMapServiceImageryProvider": //WMS地图服务
 							if (checked) {
+								data.isinit = '1';
+
 								//设置参数
 								let _options = {
 									id: _serviceId,
@@ -519,10 +614,6 @@
 
 											//重置图层顺序
 											_self.setLayerNumber(serviceId)
-											if (layertype === '标注') {
-												var imageryLayers = jt3dLeft._viewer.imageryLayers;
-												imageryLayers.raiseToTop(window[serviceId]);
-											}
 										});
 									} else {
 										ElMessage("请检测图层表parameterset字段是否设置layers");
@@ -530,15 +621,18 @@
 								} else {
 									ElMessage("请检测图层表parameterset字段是否设置layers");
 								}
-
 							} else {
 								jt3dLeft.layer.removeImageryProvider({
 									serviceId: _serviceId
+								}).then(res => {
+									data.isinit = '0';
 								});
 							}
 							break;
 						case "ArcGisMapServerImageryProvider": // ArcGIS Online和Server的相关服务
 							if (checked) {
+								data.isinit = '1';
+
 								//设置参数
 								let _options = {
 									id: _serviceId,
@@ -556,19 +650,19 @@
 
 									//重置图层顺序
 									_self.setLayerNumber(serviceId)
-									if (layertype === '标注') {
-										var imageryLayers = jt3dLeft._viewer.imageryLayers;
-										imageryLayers.raiseToTop(window[serviceId]);
-									}
 								})
 							} else {
 								jt3dLeft.layer.removeImageryProvider({
 									serviceId: _serviceId
+								}).then(res => {
+									data.isinit = '0';
 								});
 							}
 							break;
 						case "TileMapServiceImageryProvider": // 2.5维度地图
 							if (checked) {
+								data.isinit = '1';
+
 								//设置参数
 								let _options = {
 									id: _serviceId,
@@ -588,28 +682,27 @@
 
 									//重置图层顺序
 									_self.setLayerNumber(serviceId)
-									if (layertype === '标注') {
-										var imageryLayers = jt3dLeft._viewer.imageryLayers;
-										imageryLayers.raiseToTop(window[serviceId]);
-									}
-
 								});
 							} else {
 								jt3dLeft.layer.removeImageryProvider({
 									serviceId: _serviceId
+								}).then(res => {
+									data.isinit = '0';
 								});
 							}
 							break;
 						case "Cesium3DTileset": //加载3DTileset地图服务--实景
-							let datasource = data.datasource.split("#")
-							console.log('datasource', datasource)
+
 							if (checked) {
-								//加载实景
-								datasource.forEach((res, index) => {
+								data.isinit = '1';
+
+								if (window[_serviceId]) {
+									window[_serviceId].show = true;
+								} else {
 									//设置参数
 									let _options = {
-										id: _serviceId + index,
-										url: res,
+										id: _serviceId,
+										url: data.datasource,
 									}
 									if (parameterset) {
 										if (parameterset.height) {
@@ -619,43 +712,60 @@
 											_options.alpha = parameterset.alpha;
 										}
 									}
-
+									//加载实景
 									jt3dLeft.layer.addCesium3DTileset(_options, function(serviceId) {
-
-										window[_serviceId + index] = window[serviceId];
-
+										window[_serviceId].show = true;
 									});
-								})
+								}
 							} else {
-								datasource.forEach((res, index) => {
-									jt3dLeft.layer.removeScenePrimitives({
-										serviceId: _serviceId + index
-									});
-								})
+								if (window[_serviceId]) {
+									//3DTileset数据量比较大,会报很多cesium错误
+									// jt3dLeft.layer.removeScenePrimitives({
+									// 	serviceId: _serviceId
+									// }).then(res => {
+									// 	data.isinit = '0';
+									// });
+
+									window[_serviceId].show = false;
+									data.isinit = '0';
+								}
 							}
 
 							break;
 						case "Cesium3DTileset_BM": //加载3DTileset地图服务--白膜
 							if (checked) {
-								//设置参数
-								let _options = {
-									id: _serviceId,
-									url: data.datasource,
-								}
-								if (parameterset) {
-									if (parameterset.color) {
-										_options.color = parameterset.color;
+								data.isinit = '1';
+
+								if (window[_serviceId]) {
+									window[_serviceId].show = true;
+								} else {
+									//设置参数
+									let _options = {
+										id: _serviceId,
+										url: data.datasource,
+									}
+									if (parameterset) {
+										if (parameterset.color) {
+											_options.color = parameterset.color;
+										}
 									}
-								}
 
-								//加载白膜
-								jt3dLeft.layer.addCesium3DTilesetBm(_options, function(serviceId) {
-									jt3dLeft.layer.set3DTileBMStyle(_options);
-								});
+									//加载白膜
+									jt3dLeft.layer.addCesium3DTilesetBm(_options, function(serviceId) {
+										window[_serviceId].show = true;
+									});
+								}
 							} else {
-								jt3dLeft.layer.removeScenePrimitives({
-									serviceId: _serviceId
-								});
+								if (window[_serviceId]) {
+									// jt3dLeft.layer.removeScenePrimitives({
+									// 	serviceId: _serviceId
+									// }).then(res => {
+									// 	data.isinit = '0';
+									// });
+
+									window[_serviceId].show = false;
+									data.isinit = '0';
+								}
 							}
 							break;
 						default:
@@ -664,105 +774,12 @@
 				})
 			},
 
-			/**
-			 * el-slider 值改变时触发(使用鼠标拖曳时,只在松开鼠标后触发)
-			 * 地图服务的透明度调整
-			 */
-			handleSliderChange($event, data) {
-				let _serviceId = "serviceLeft_" + data.layercode + data.layerorder;
-				if (data.loadtype === "Cesium3DTileset") {
-					let datasource = data.datasource.split("#")
-					datasource.forEach((res, index) => {
-						//设置实景透明度
-						jt3d.layer.set3DTileStyle({
-							serviceId: _serviceId + index,
-							alpha: $event,
-						});
-					})
-				} else if (data.loadtype === "CrImageServerLayer") {
-					let floatLayer = window[_serviceId];
-					floatLayer.setOpacity($event)
-				} else if (data.loadtype === "PolygonImageMaterial") {
-					//设置透明度
-					jt3dLeft.layer.setPolygonImageMaterial({
-						serviceId: _serviceId,
-						alpha: $event,
-					});
-				} else if (data.loadtype === "entitiesGltf") {
-					//设置透明度
-					jt3dLeft.layer.setModelStyle({
-						serviceId: _serviceId,
-						alpha: $event,
-					});
-				} else {
-					jt3dLeft.layer.setLayersStyle({
-						serviceId: _serviceId,
-						alpha: $event,
-					});
-				}
-			},
-
-			/**
-			 * el-checkbox 当绑定值变化时触发的事件
-			 * @param {Object} checked 复选框状态
-			 * @param {Object} data 对应于节点点击的节点对象
-			 * @param {Object} node TreeNode 的 node 属性
-			 */
-			handleCheckBoxChange(checked, data, node) {
-
-				let _node = this.$refs.treeRef.getNode(data);
-				if (_node.isLeaf) {
-					this.$refs.treeRef.setChecked(_node,
-						checked); //是否设置子节点,默认为false,利用tree组件渲染后带有的isLeaf(是否为叶子节点)属性,如果为叶子节点就选中。利用tree的API就实现了正确的回显效果	
-				}
-
-				//控制子节点
-				this.childNodesChange(node, checked);
-			},
-			/**
-			 * 控制子节点
-			 * @param {Object} node
-			 * @param {Object} checked
-			 */
-			childNodesChange(node, checked) {
-				let _self = this;
-				node.childNodes.forEach(item => {
-					_self.$refs.treeRef.setChecked(item, checked);
-					_self.childNodesChange(item, checked);
-				});
-			},
-
-			/**
-			 * 初始化复选框选中状态
-			 * @param {Object} datas
-			 */
-			setNodesChecked(datas) {
-				let _self = this;
-				datas.forEach((data, index) => {
-					_self.$nextTick(() => {
-						var node = _self.$refs.treeRef.getNode(data);
-						//node.isLeaf是否是叶子节点
-						if (node.isLeaf) {
-							let checked = false;
-							if (data.isinit === '1') {
-								checked = true;
-							}
-							data.opacity = Number(data.opacity)
-							_self.$refs.treeRef.setChecked(node, checked);
-						}
-					});
-					if (data.children != undefined) {
-						_self.setNodesChecked(data.children);
-					}
-				});
-			},
 
 			/**
 			 * 设置图层顺序
 			 * @param {Object} options
 			 */
 			setLayerNumber(serviceId) {
-				// let layerList = jt3dLeft._viewer.imageryLayers._layers
 				var imageryLayers = jt3dLeft._viewer.imageryLayers;
 				if (store.markID) {
 					console.log('标注id', store.markID)
@@ -969,7 +986,7 @@
 
 				//获取地图图集id
 				let roleId = store.roleId
-				atlasLayersSqlWhere = '"roleid"' + " = " + roleId + " "
+				atlasLayersSqlWhere = '"roleId"' + " = " + roleId + " "
 
 				//Promise回调
 				function init(data) {
@@ -979,15 +996,19 @@
 							if (num < 10) {
 								res.layerorder = '0' + res.layerorder
 							}
-							
-							//显示2级
-							if (res.parentid === null) {
+
+							//透明度
+							res.opacity = Number(res.opacity);
+
+							//默认展开
+							if (res.isexpand === '1') {
 								_this.expandedKeys.push(res.id);
 							}
-							
-							//其它级别展开
-							if (res.isExpand === '1') {
-								_this.expandedKeys.push(res.id);
+
+							// 复选框默认选中
+							if (res.isinit === '1') {
+								_this.checkedkeys.push(res.id);
+								_this.setLayerControl(res, true);
 							}
 						})
 
@@ -1007,11 +1028,13 @@
 					//初始图层列表
 					this.inittree = res.data
 					init(res.data).then(item => {
-						//图层初始化打开状态
-						_this.setNodesChecked(item);
 						console.log('图层控制树列表', _this.treeData)
+						
+						//复选框初始化选中
+						_this.$nextTick(() => {
+							_this.$refs.treeRef.setCheckedKeys(_this.checkedkeys, true);
+						});
 					})
-
 				})
 			}
 		},
@@ -1023,32 +1046,36 @@
 </script>
 
 <style lang="scss">
-	.el-switch--small .el-switch__core .el-switch__action{
+	.el-switch--small .el-switch__core .el-switch__action {
 		width: 12rem;
 		height: 12rem;
 	}
-	.el-switch--small.is-checked .el-switch__core .el-switch__action{
+
+	.el-switch--small.is-checked .el-switch__core .el-switch__action {
 		margin-left: calc(-1rem - 12rem);
 	}
-	.el-switch__core .el-switch__action{
-		top:0;
+
+	.el-switch__core .el-switch__action {
+		top: 0;
 	}
-	.el-slider__button{
+
+	.el-slider__button {
 		width: 20rem;
 		height: 20rem;
 	}
-	.el-tree-node__content{
+
+	.el-tree-node__content {
 		height: 26rem;
 	}
-	
-	.el-switch--small .el-switch__core{
+
+	.el-switch--small .el-switch__core {
 		height: 16rem;
 	}
-	
-	.el-switch--small{
+
+	.el-switch--small {
 		padding: 0 5rem;
 	}
-	
+
 	.jt-layer {
 		padding-left: 10rem;
 

+ 11 - 11
src/views/Map3d/components/basicLayer.vue

@@ -27,12 +27,10 @@
 			<div class="header">
 				<div style="width: 20rem;"></div>
 				<span>底图</span>
-				<i :class="store.userport == 'PC'?'iconfont icon-youjiantou':'iconfont icon-youjiantou'"
-					@click="closebasicLayer" style="font-size: 16rem;" />
+				<i :class="store.userport == 'PC'?'iconfont icon-youjiantou':'iconfont icon-youjiantou'" @click="closebasicLayer" style="font-size: 16rem;" />
 			</div>
 			<div class="middle">
-				<div class="onceLayer" v-for="(item,index) in layerList" :key="index"
-					@click="changeBasicLayer(item.url,item.layerorder,item.imageurl)">
+				<div class="onceLayer" v-for="(item,index) in layerList" :key="index" @click="changeBasicLayer(item.url,item.layerorder,item.imageurl)">
 					<img v-if="item.imageurl" :src="item.imageurl" :class="item.layerorder==selectImg?'selectImg':''" />
 					<!-- <span>{{item.title}}</span> -->
 				</div>
@@ -198,8 +196,8 @@
 						let parameterset = item.parameterset;
 						if (item.parameterset instanceof Object) {
 							parameterset = item.parameterset;
-						} else if (item.parameterset != "" && item.parameterset != null && item
-							.parameterset != undefined) {
+						} else if (item.parameterset != "" && item.parameterset != null && item.parameterset != undefined) {
+							
 							parameterset = JSON.parse(item.parameterset);
 						}
 
@@ -239,7 +237,8 @@
 							});
 
 						}
-						if (item.datasource != '#' && item.layertype != '地形' && item.layertype != '标注') {
+
+						if (item.datasource && item.datasource != '#' && item.layertype != '地形' && item.layertype != '标注') {
 							if (parameterset) {
 								if (parameterset.imgurl) {
 									_self.layerList.push({
@@ -249,10 +248,10 @@
 										layerorder: item.layerorder
 									})
 								} else {
-									ElMessage("请检图层表parameterset字段是否设置imgurl");
+									ElMessage("请检查底图图层表parameterset字段是否设置imgurl");
 								}
 							} else {
-								ElMessage("请检图层表parameterset字段是否设置");
+								ElMessage("请检查底图图层表parameterset字段是否设置");
 							}
 						}
 					});
@@ -277,7 +276,7 @@
 				sqlWhere: '"roleId"' + " = '" + roleId + "'",
 				orderByField: ''
 			}).then(res => {
-				_self.roleName = '"atlasType"' + "= '底图'" +" and "+ '"roleId"' + " ='" + roleId + "'"
+				_self.roleName = '"atlasType"' + "= '底图'" + " and " + '"roleId"' + " ='" + roleId + "'"
 				_self.addBaseLayer();
 			})
 		}
@@ -346,7 +345,8 @@
 				flex: 15;
 				font-size: 20rem;
 			}
-			i:hover{
+
+			i:hover {
 				cursor: pointer;
 			}
 

+ 0 - 7
src/views/Map3d/components/layer.vue

@@ -264,13 +264,6 @@
 				let layername = data.layername;
 				let layertype = data.layertype;
 
-				// //修改默认选中参数,用于单击定位
-				// if (checked) {
-				// 	data.isinit = '1';
-				// } else {
-				// 	data.isinit = '0';
-				// }
-
 				//透明度
 				let _opacity = null;
 				if (data.opacity == null) {

+ 14 - 18
src/views/Map3d/components/map.vue

@@ -9,10 +9,7 @@
 	} from '@/store/index'
 	let store = Store();
 
-	import {
-		deepTree
-	} from "@/utils/deepTree.js";
-	import map_xzqh_zj from '@/assets/dataFile/map_xzqh_zj.json';
+	import fwx from '@/assets/dataFile/fwx.json';
 
 	let jt3d = undefined;
 	export default {
@@ -115,14 +112,14 @@
 				// this.clickEntity(jt3d);
 
 				//添加镇街边界线——精灵线
-				// this.addBoundaryLine(jt3d);
+				this.addBoundaryLine(jt3d);
 
 			},
 			/**
 			 * 添加镇街边界线——精灵线
 			 */
 			addBoundaryLine(jt3d) {
-				jt3d.PolylineObject.drawPolylineByGeoJson(map_xzqh_zj, {
+				jt3d.PolylineObject.drawPolylineByGeoJson(fwx, {
 					width: 5,
 					color: '#04FFFF',
 					isImageAlpha: true, //用图片自带颜色
@@ -238,7 +235,6 @@
 				window["viewer"].scene.debugShowFramesPerSecond = true;
 			},
 
-
 			/**
 			 * 设置默认视图-初始化中国区域范围视角
 			 */
@@ -264,27 +260,27 @@
 			fullMap(jt3d) {
 				// 初始化项目区域范围视角
 				let optionsS = {
-					west: 118.69586,
-					south: 35.91360,
-					east: 122.70061,
-					north: 38.65489,
+					west: 76.043096, //西
+					south: 39.734728, //南
+					east: 76.230388, //东
+					north: 39.659651, //北
 					isRemove: false, //定位完成后是否删除
 					duration: 3, //飞行时间
 					heading: 0,
 					pitch: -90,
-					range: 315000
+					range: 30000
 				};
-
+				
 				let optionsE = {
-					west: 118.69586,
-					south: 35.91360,
-					east: 122.70061,
-					north: 38.65489,
+					west: 76.043096, //西
+					south: 39.734728, //南
+					east: 76.230388, //东
+					north: 39.659651, //北
 					isRemove: true, //定位完成后是否删除
 					duration: 3, //飞行时间
 					heading: 0,
 					pitch: -60,
-					range: 315000
+					range: 30000
 				};
 
 				var fullMapPromise = jt3d.fullMap(optionsS);

+ 7 - 12
src/views/Map3d/components/toolbars.vue

@@ -56,12 +56,6 @@
 				图层
 			</span>
 		</div>
-		<div class="toolbar-item" @click="showWidget('viewerlabel')">
-			<i class="iconfont minsize icon-fushi"></i>
-			<span class="title">
-				视角标签
-			</span>
-		</div>
 		<el-dropdown class="toolbar-item" :hide-on-click="false" @command="handleCommand">
 			<span class="el-dropdown-link">
 				<i class="iconfont icon-xitong1" />
@@ -80,15 +74,15 @@
 					<!-- <el-dropdown-item command="viewerlabel"><i class="iconfont minsize icon-fushi"></i>视角标签</el-dropdown-item> -->
 					<el-dropdown-item v-if="store.userport=='PC'" command="printmap"><i class="iconfont maxsize icon-svgdayin"></i>打印地图</el-dropdown-item>
 					<el-dropdown-item command="measure"><i class="iconfont minsize icon-icon_measureTool"></i>图上量算</el-dropdown-item>
-					<!-- <el-dropdown-item command="query-graphics"><i class="iconfont icon-search"></i>图形查询</el-dropdown-item> -->
-					<!-- <el-dropdown-item command="analysis-data"><i class="iconfont maxsize icon-svgjiexiwenjian"></i>文件解析</el-dropdown-item> -->
+					<el-dropdown-item command="query-graphics"><i class="iconfont icon-search"></i>图形查询</el-dropdown-item>
+					<el-dropdown-item command="analysis-data"><i class="iconfont maxsize icon-svgjiexiwenjian"></i>文件解析</el-dropdown-item>
 					<el-dropdown-item command="analysis-space"><i class="iconfont icon-duodiankeshiyu"></i>空间分析</el-dropdown-item>
 					<el-dropdown-item command="analysis-terrain"><i class="iconfont icon-iconfonttubiao_dixing"></i>地形分析</el-dropdown-item>
 					<el-dropdown-item command="special-effects"><i class="iconfont icon-yu"></i>特效效果</el-dropdown-item>
 					<el-dropdown-item command="coordsTool"><i class="iconfont icon-zuobiao"></i>坐标定位</el-dropdown-item>
-					<el-dropdown-item command="TrackRoam"><i class="iconfont maxsize icon-jurassic_jiankong"></i>路径漫游</el-dropdown-item>
-					<!-- <el-dropdown-item command="ImageLayerSplit"><i class="iconfont maxsize icon-juanlian"></i>卷帘对比</el-dropdown-item>
-					<el-dropdown-item command="ViewerSplitScreen"><i class="iconfont minsize icon-fenping"></i>分屏对比</el-dropdown-item> -->
+					<!-- <el-dropdown-item command="TrackRoam"><i class="iconfont maxsize icon-jurassic_jiankong"></i>路径漫游</el-dropdown-item> -->
+					<!-- <el-dropdown-item command="ImageLayerSplit"><i class="iconfont maxsize icon-juanlian"></i>卷帘对比</el-dropdown-item> -->
+					<el-dropdown-item command="ViewerSplitScreen"><i class="iconfont minsize icon-fenping"></i>分屏对比</el-dropdown-item>
 				</el-dropdown-menu>
 			</template>
 		</el-dropdown>
@@ -355,7 +349,8 @@
 	.toolbars {
 		position: absolute;
 		top: 80rem;
-		width: 450rem;
+		width: 340rem;
+		// width: 450rem;
 		// width: 580rem;
 		right: 20rem;
 		cursor: pointer !important;

Некоторые файлы не были показаны из-за большого количества измененных файлов