From 0350f3c02209ee8b62f818810eaa663289158843 Mon Sep 17 00:00:00 2001 From: 少年 <1392120328@qq.com> Date: 星期二, 06 二月 2024 10:38:57 +0800 Subject: [PATCH] Merge branch 'master' of http://106.120.22.35:48888/r/PM20221203225_MobileWeb --- src/components/viewer2.vue | 128 static/json/layers.json | 2 src/components/sideMenu/layerTreePanel/main2.vue | 23 src/components/rightMenu/bottom2.vue | 202 + src/utils/poiKeys.js | 2 src/components/leftMenu/sousuo2.vue | 835 +++++ src/components/login.vue | 4 src/utils/store2.js | 174 + src/components/sideMenu/layerTreePanel/layerTreePanel2.vue | 2683 +++++++++++++++++ src/utils/ztt2.js | 21 src/assets/GLOBAL2.vue | 8 src/utils/map.js | 31 static/json/layer.js | 6 src/components/viewer.vue | 4 src/components/sideMenu/layerMenu/layerPanel2.vue | 207 src/components/sideMenu/layerTreePanel/layerTreePanel.vue | 2 src/components/rightNavigation/NavigationBar2.vue | 273 + src/components/sideMenu/layerMenu/main2.vue | 2 src/components/rightMenu/layerTree2.vue | 2115 +++++++++++++ src/utils/map2.js | 2193 ++++++++++++++ src/components/leftMenu/bottom2.vue | 181 + 21 files changed, 8,904 insertions(+), 192 deletions(-) diff --git a/src/assets/GLOBAL2.vue b/src/assets/GLOBAL2.vue new file mode 100644 index 0000000..1baf20d --- /dev/null +++ b/src/assets/GLOBAL2.vue @@ -0,0 +1,8 @@ +<script> +const layers = []; +const alpha = 1; +export default { + layers, //鏀堕泦鍣� + alpha, +}; +</script> \ No newline at end of file diff --git a/src/components/leftMenu/bottom2.vue b/src/components/leftMenu/bottom2.vue new file mode 100644 index 0000000..f2be22c --- /dev/null +++ b/src/components/leftMenu/bottom2.vue @@ -0,0 +1,181 @@ +<template> + <div class="bottom" id="bottom"> + <div class="mapTools" v-show="show"> + <div class="mapTool" v-show="test.fwval"> + <el-button class="tool-rotate" @click="flyBack" title="澶嶄綅"> + <img src="../../../static/img/image/ddrf.png" /> + </el-button> + </div> + </div> + </div> +</template> + +<style scoped> +.bottom { + position: absolute; + bottom: 0.4rem; + height: 0.76rem; + left: 0.1rem; +} +.mapModeControl { + position: absolute; + right: 0.05rem; + background: rgba(90, 90, 90, 0.5); + bottom: 0.05rem; + height: 0.76rem; + width: 1.03rem; + transition: all 1s; +} +.bottom .mapModeControl:hover { + transition: all 0.6s; + -webkit-transition: all 0.6s; + width: 3.2rem; +} +.mapMode { + display: inline-block; +} +.mapMode dl { + width: 0.88rem; + height: 0.6rem; + border: 1px solid #494949; + cursor: pointer; + margin: 0.08rem; +} + +.mapMode dl:hover { + border-color: #0553b4; +} + +.mapMode dl { + position: relative; +} +#history { + background: url(../../../static/img/1.png) no-repeat; +} +#mode-3d { + background: url(../../../static/img/2.png) no-repeat; +} +#mode-2d { + background: url(../../../static/img/4.png) no-repeat; +} +.mapMode dt { + width: 100%; + height: 0.2rem; + line-height: 0.2rem; + position: absolute; + left: 0; + bottom: 0px; + font-size: 0.12rem; + text-align: center; + color: #fff; + text-shadow: 1px 1px 2px #000; + background: rgba(0, 0, 0, 0.5); +} +.mapModeActive { + background: rgba(1, 37, 80, 0.5) !important; +} + +.mapTools { + position: absolute; + /* bottom: 2rem; */ + bottom: 0.2rem; + /* right: 0.1rem; */ +} +.mapTool { + margin: 0.1rem 0; +} +.mapTool .el-button { + padding: 0 !important; + font-size: 0.24rem; + border: unset; + float: unset; + display: block; + background: rgba(18, 126, 255, 1); +} + +/* .button-group-vertical { + text-align: center; + position: relative; +} */ +.fgx { + position: absolute; + width: 80%; + height: 1px; + height: 1px; + border: 1px solid #dcdfe6; + z-index: 999; + margin: 0 10%; +} +/* .button-group-vertical .el-button-group > .el-button:first-child { + border-top-right-radius: 0.04rem !important; + border-bottom-left-radius: 0px !important; +} +.button-group-vertical .el-button-group > .el-button:last-child { + border-top-right-radius: 0; + border-bottom-left-radius: 0.04rem !important; +} */ +.mapTool img { + width: 30px; + /* height: 0.4rem; */ +} +</style> + +<script> +import Bus from "../../js/bus.js"; +export default { + props: ["test"], + data() { + return { + show: true, + parentdata: { + fwval: false, + zbzval: false, + qpval: false, + zymlval: false, + kjcxval: false, + dxmsval: false, + snmsval: false, + ssval: false, + }, + clickIndex: 0, + // isShowHistory: false, + camera: { + position: [116.52217697339846, 39.75979421847914, 17045.47005612415], + orientation: { + heading: 0, + pitch: -90, + roll: 0, + }, + }, + modes: [ + { + id: "mode-3d", + name: "3D", + mode: 3, + }, + { + id: "mode-2d", + name: "2D", + mode: 2, + }, + ], + }; + }, + mounted() { + Bus.$on("myMsg", (myMsg) => { + this.show = myMsg; + }); + }, + methods: { + flyBack() { + map.getView().animate({ + // 鍙缃渶瑕佺殑灞炴�у嵆鍙� + center: [116.52217697339846, 39.75979421847914], // 涓績鐐� + zoom: 12, // 缂╂斁绾у埆 + rotation: undefined, // 缂╂斁瀹屾垚view瑙嗗浘鏃嬭浆寮у害 + duration: 1000, // 缂╂斁鎸佺画鏃堕棿锛岄粯璁や笉闇�瑕佽缃� + }); + }, + }, +}; +</script> \ No newline at end of file diff --git a/src/components/leftMenu/sousuo2.vue b/src/components/leftMenu/sousuo2.vue new file mode 100644 index 0000000..9200167 --- /dev/null +++ b/src/components/leftMenu/sousuo2.vue @@ -0,0 +1,835 @@ +<template> + <div id="sousuo" class="sousuo"> + <!-- 鎼滅储妗� --> + <div class="ssk" v-show="ssk.show"> + <span + @click="ssjmxs" + style="float: left; height: 100%; width: 80%; overflow: hidden" + ><i class="el-icon-search" style="padding: 0px 15px 0px 20px"></i + >{{ syssval }}</span + > + <span + v-show="syssval !== '璇疯緭鍏ュ叧閿瘝鎼滅储鍦板浘'" + @click="clearval" + style="float: right; height: 100%; width: 20%" + ><i class="el-icon-circle-close"></i + ></span> + <span + v-show="syssval !== '璇疯緭鍏ュ叧閿瘝鎼滅储鍦板浘'" + style=" + float: right; + height: 100%; + width: 10%; + position: absolute; + top: -1px; + right: -3px; + " + > + <img + src="@/assets/img/navigation/addf.png" + style="width: 20px" + @click.stop="AddFavorite" + /> + </span> + <span + v-show="syssval == '璇疯緭鍏ュ叧閿瘝鎼滅储鍦板浘'" + style="float: right; height: 100%; width: 10%" + > + <img + src="@/assets/img/navigation/addf.png" + style="width: 20px" + @click.stop="showAddFavorite" + /> + </span> + </div> + <!-- 鎼滅储鐣岄潰 --> + <div class="ssjm" v-show="ssjm"> + <!-- 鎼滅储鐣岄潰椤堕儴 --> + <div class="menutop"> + <div class="menutitle">鎼滅储</div> + <div class="menuback" @click="cancless">鍏抽棴</div> + </div> + <!-- 鎼滅储妗� --> + <div style="margin: 0.1rem 0"> + <el-input + placeholder="杈撳叆鍏抽敭瀛楁悳绱㈠湴鍥�" + autofocus + v-model="poi_text" + @input="changeInput" + clearable + > + <el-select v-model="select" slot="prepend" placeholder="璇烽�夋嫨"> + <el-option + v-for="(item, index) in options" + :key="index" + :label="item.label" + :value="item.value" + ></el-option> + </el-select> + <el-button + slot="append" + icon="el-icon-search" + @click="search" + ></el-button> + </el-input> + </div> + <!-- 缁撴灉鏄剧ず --> + <div v-if="total != 0"> + <div class="ssjg" v-show="ssjgxs"> + <div + class="everyinfo" + v-for="(item, index) in poiList" + :key="index" + @click="flyTo(item)" + > + <div style="margin: 0.05rem 0"> + <i class="el-icon-map-location"></i>{{ item.name }} + </div> + <div style="font-size: 0.12rem; color: black"> + <!-- <span>鍦板潃:{{ item.address ? item.address : "鏆傛棤璇︾粏鍦板潃" }}</span><br /> + <span>鐢佃瘽:{{ item.telphone ? item.telphone : "鏆傛棤鑱旂郴鏂瑰紡" }}</span> --> + <!-- <span>鍖哄煙:{{ item.area ? item.area : "鏆傛棤鍖哄煙淇℃伅" }}</span> --> + <!-- <br /> --> + <span + >鍦板潃:{{ item.address ? item.address : "鏆傛棤璇︾粏鍦板潃" }}</span + > + </div> + </div> + </div> + </div> + <div v-else> + <div class="ssjg" v-show="ssjgxs">鏈悳绱㈠埌缁撴灉</div> + </div> + </div> + </div> +</template> +<style scoped> +/* 鎼滅储鎸夐挳鐨勬牱寮� */ +.iszd { + position: absolute; + left: 0.2rem; + top: 0.3rem; +} + +/* 鎼滅储妗嗙殑鏍峰紡 */ +.ssk { + position: absolute; + /* text-align: center; */ + left: 2.5%; + bottom: 0.2rem; + width: 95%; + border: 1px solid white; + height: 0.4rem; + line-height: 0.4rem; + background: #fff; + border-radius: 0.2rem; + color: black; + font-size: 0.14rem; +} + +/* 鎼滅储鐣岄潰鐨勬牱寮� */ +.ssjm { + /* padding: 0 0.1rem; */ + /* padding-top: 0.3rem; */ + position: absolute; + width: 100%; + height: 100%; + top: 0; + background-color: #f3f3f3; + z-index: 99999; +} +.el-select { + width: 80px; +} + +/* 姣忔潯鎼滅储缁撴灉 */ +.everyinfo { + color: #409eff; + padding: 0.05rem; + font-size: 0.16rem; + border-bottom: 1px solid lightgray; +} + +.ssjg { + overflow-x: hidden; + overflow-y: scroll; + /* max-height: 4rem; */ + max-height: 80vh; + background: white; + padding: 0.2rem; + border-radius: 0.05rem; +} + +.ssjg::-webkit-scrollbar { + /*婊氬姩鏉℃暣浣撴牱寮�*/ + width: 8px; + /*楂樺鍒嗗埆瀵瑰簲妯珫婊氬姩鏉$殑灏哄*/ + height: 8px; + scrollbar-arrow-color: red; +} + +.ssjg::-webkit-scrollbar-thumb { + border-radius: 5px; + -webkit-box-shadow: inset 0 0 5px rgba(218, 218, 218, 0.2); + box-shadow: inset 0 0 5px rgba(218, 218, 218, 0.2); + background: rgba(218, 218, 218, 0.5); + scrollbar-arrow-color: red; +} + +.ssjg::-webkit-scrollbar-track { + -webkit-box-shadow: inset 0 0 5px rgba(218, 218, 218, 0.2); + box-shadow: inset 0 0 5px rgba(218, 218, 218, 0.2); + border-radius: 0; + background: rgba(218, 218, 218, 0.1); +} +</style> + + +<script> +let timers = null; +import axios from "axios"; +import store from "@/utils/store2.js"; +import common from "@/components/common"; + +window.flyPoint = null; +window.flyLine = null; +let Allresults = []; + +export default { + data() { + return { + syssval: "璇疯緭鍏ュ叧閿瘝鎼滅储鍦板浘", + ssjgxs: false, + ssk: store.searchPanel, + ssjm: false, + poi_text: "", + showList: false, + total: 0, + poiList: [], + select: "POI", + options: [ + { + label: "鍏ㄩ儴", + value: "鍏ㄩ儴", + }, + { + label: "POI", + value: "POI", + }, + { + label: "鍦板潡", + value: "鍦板潡", + }, + ], + }; + }, + methods: { + clearval() { + this.syssval = "璇疯緭鍏ュ叧閿瘝鎼滅储鍦板浘"; + window.flyPoint && Viewer.entities.remove(window.flyPoint); + window.flyPoint = undefined; + window.flyLine && sgworld.Creator.DeleteObject(window.flyLine); + window.flyLine = undefined; + this.poi_text = ""; + this.ssjgxs = false; + }, + changeInput() { + if (this.poi_text === "") { + this.ssjgxs = false; + window.flyPoint && Viewer.entities.remove(window.flyPoint); + window.flyPoint = undefined; + window.flyLine && sgworld.Creator.DeleteObject(window.flyLine); + window.flyLine = undefined; + } else { + clearTimeout(timers); + timers = setTimeout(() => { + this.search(); //闇�瑕侀槻鎶栫殑鍑芥暟 + }, 500); + } + }, + // 鏄剧ず鎼滅储鐣岄潰 + ssjmxs() { + this.ssjm = true; + }, + // 閫�鍑烘悳绱㈢晫闈� + cancless() { + this.ssjm = false; + }, + getArea() { + let height = Viewer.container.offsetHeight; + let widht = Viewer.container.offsetWidth; + let l_t = sgworld.Navigate.getMouseDegrees({ x: 0, y: 0 }); + let r_b = sgworld.Navigate.getMouseDegrees({ x: widht, y: height }); + let rectangle = { + minx: (l_t && l_t.lon) || 118.022502789, + miny: (r_b && r_b.lat) || 27.045434061, + maxx: (r_b && r_b.lon) || 123.156157488, + maxy: (l_t && l_t.lat) || 31.182515322, + }; + if (rectangle.minx > rectangle.maxx) { + let x = rectangle.minx; + rectangle.minx = rectangle.maxx; + rectangle.maxx = x; + } + if (rectangle.miny > rectangle.maxy) { + let y = rectangle.miny; + rectangle.miny = rectangle.maxy; + rectangle.maxy = y; + } + rectangle.minx < 118.022502789 && (rectangle.minx = 118.022502789); + rectangle.miny < 27.045434061 && (rectangle.miny = 27.045434061); + rectangle.maxx > 123.156157488 && (rectangle.maxx = 123.156157488); + rectangle.maxy > 31.182515322 && (rectangle.maxy = 31.182515322); + return `RECT(${rectangle.minx} ${rectangle.miny},${rectangle.maxx} ${rectangle.maxy})`; + }, + getPoi() { + axios + .get(common.poiserve, { + params: { + request: "GdPoi", + keywords: this.poi_text, + output: "json", + coord: "cgcs2000", + offset: 20, + page: 1, + }, + }) + .then((res) => { + // 楂樺痉 + console.log("poiserve"); + if (res.data.status == "1") { + res.data.pois && + res.data.pois + // .filter((item) => { + // var reg = new RegExp("[\\u4E00-\\u9FFF]+", "g"); + // return ( + // item.pname.includes("鍖椾含") && + // item.name.includes(this.poi_text) && + // !reg.test(item.typecode) + // ); + // }) + .forEach((val) => { + let poiarr = val.location.split(","); + let poi = { + lon: parseFloat(poiarr[0]), + lat: parseFloat(poiarr[1]), + }; + let obj = { + adcode: val.adcode, + address: val.address, + adname: val.area, + citycode: val.citycode, + cityname: val.cityname, + id: val.uid, + lat: poi.lat, + lng: poi.lon, + name: val.name, + pcode: val.pcode, + pname: val.province, + type: val.type, + typecode: val.typecode, + }; + Allresults.push(obj); + }); + } + this.total = Allresults.length; + this.poiList = Allresults; + this.showList = true; + }); + }, + getData() { + axios + .post(common.poiserve2, { + adcode: "110115", + address: { + name: "", + type: "", + }, + adname: "澶у叴鍖�", + cityname: "鍖椾含甯�", + name: { + name: this.poi_text, + type: "", + }, + page: 1, + perPageCount: 20, + pcode: "110000", + pname: "", + resType: "", + }) + .then((res) => { + if (res.status == 200) { + res.data.data.res && + res.data.data.res + .filter((item) => { + // 鍒ゆ柇鍦板潡鏄惁鏈夋眽瀛� + var reg = new RegExp("[\\u4E00-\\u9FFF]+", "g"); + return ( + item.name.includes(this.poi_text) && reg.test(item.typecode) + ); + }) + .forEach((val) => { + Allresults.push(val); + }); + } + this.total = Allresults.length; + this.poiList = Allresults; + this.showList = true; + }); + }, + search() { + if (this.poi_text === "") { + this.poiList = []; + Allresults = []; + } else { + this.ssjgxs = true; + Allresults = []; + this.poiList = []; + switch (this.select) { + case "鍏ㄩ儴": + this.getPoi(); + this.getData(); + // axios + // .all([ + // // 115鎺ュ彛锛堝彲鏌ュ湴鍧楀悕锛� + // axios.post(common.poiserve2, { + // adcode: "110115", + // address: { + // name: "", + // type: "", + // }, + // adname: "澶у叴鍖�", + // cityname: "鍖椾含甯�", + // name: { + // name: this.poi_text, + // type: "", + // }, + // page: 1, + // perPageCount: 20, + // pcode: "110000", + // pname: "", + // resType: "", + // }), + // // // 甯傜骇骞冲彴锛堢櫨搴︼細浼氭煡鍒板鍦帮級 + // // axios.get(common.poiserve, { + // // params: { + // // request: "bdPoi", + // // query: this.poi_text, + // // output: "json", + // // coord: "cgcs2000", + // // page_num: 0, + // // page_size: 20, + // // }, + // // }), + // // 甯傜骇骞冲彴锛堥珮寰凤級 + // axios.get(common.poiserve, { + // params: { + // request: "GdPoi", + // keywords: this.poi_text, + // output: "json", + // coord: "cgcs2000", + // offset: 20, + // page: 1, + // }, + // }), + // ]) + // .then( + // (data) => { + // // this.total = data.data.pois.length; + // // this.poiList = + // // data.data && data.data.pois; + // //115鎺ュ彛 + // if (data[0].status == 200) { + // data[0].data.data.res && + // data[0].data.data.res + // .filter((item) => { + // return item.name.includes(this.poi_text); + // }) + // .forEach((val) => { + // Allresults.push(val); + // }); + // } + // // 甯傜骇骞冲彴 + // // // 鐧惧害 + // // if (data[1].data.status == 0) { + // // data[1].data.results.forEach((val) => { + // // let obj = { + // // address: val.address, + // // adname: val.area, + // // cityname: val.city, + // // id: val.uid, + // // lat: val.location.lat, + // // lng: val.location.lng, + // // name: val.name, + // // pname: val.province, + // // }; + // // Allresults.push(obj); + // // }); + // // } + // // 楂樺痉 + + // console.log(data, "鏁版嵁"); + // if (data[0].data.status == 1) { + // data[0].data.pois && + // data[0].data.pois + // .filter((item) => { + // return ( + // item.pname.includes("鍖椾含") && + // item.name.includes(this.poi_text) + // ); + // }) + // .forEach((val) => { + // let poiarr = val.location.split(","); + // let poi = { + // lon: parseFloat(poiarr[0]), + // lat: parseFloat(poiarr[1]), + // }; + // let obj = { + // adcode: val.adcode, + // address: val.address, + // adname: val.area, + // citycode: val.citycode, + // cityname: val.cityname, + // id: val.uid, + // lat: poi.lat, + // lng: poi.lon, + // name: val.name, + // pcode: val.pcode, + // pname: val.province, + // type: val.type, + // typecode: val.typecode, + // }; + // Allresults.push(obj); + // }); + // } + // this.total = Allresults.length; + // this.poiList = Allresults; + // this.showList = true; + // console.log(Allresults); + // }, + // (response) => { + // console.log("error"); + // } + // ); + break; + case "POI": + this.getPoi(); + break; + case "鍦板潡": + this.getData(); + break; + } + } + }, + getPosition(geo) { + let p = geo && geo.replace("POINT(", "").replace(")", ""); + return p.split(" "); + }, + flyTo(item) { + this.ssjm = false; + this.syssval = item.name; + let that = this; + // let degrees = item.location.split(','); + // let degrees = [item.location.lng, item.location.lat]; + let degrees = [item.lng, item.lat]; + window.flyPoint && Viewer.entities.remove(window.flyPoint); + window.flyLine && sgworld.Creator.DeleteObject(window.flyLine); + sgworld.Navigate.flyToPointsInterest({ + destination: Cesium.Cartesian3.fromDegrees( + degrees[0], + degrees[1], + 1000 + ), + }); + // 娣诲姞鐐逛綅 + window.flyPoint = Viewer.entities.add({ + position: Cesium.Cartesian3.fromDegrees(degrees[0], degrees[1]), + billboard: { + verticalOrigin: Cesium.VerticalOrigin.BOTTOM, + scale: 1, + image: window.SmartEarthRootUrl + "/Workers/image/mark1.png", + heightReference: 1, + disableDepthTestDistance: Number.POSITIVE_INFINITY, + }, + properties: item, + }); + // 濡傛灉鏄湴鍧楋紝娣诲姞鑼冨洿绾� + if (item.type == "澶у叴鐢ㄥ湴") { + axios + .get( + 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=" + + degrees[0] + + "&lat=" + + degrees[1] + + "&geom=true&requesttype=json" + ) + .then((response) => { + let center = { lon: 0, lat: 0 }; + let polygon = that.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, + }); + } + window.flyLine = sgworld.Creator.createPolyline( + geometry, + "#ff0000", + 1, + 0, + "绾�" + ); + } + }); + } + }, + AddFavorite() { + let posi = sgworld.Viewer.camera.position; + let pointsInterest = { + destination: posi, + orientation: { + heading: Viewer.camera.heading, + pitch: Viewer.camera.pitch, + roll: Viewer.camera.roll, + }, + }; + let temObj = {}; + temObj.name = this.syssval; + // 瀵硅薄鍏嬮殕 + temObj.position = JSON.parse(JSON.stringify(pointsInterest)); + // this.dataSc.push(temObj); + if (window.locations == "" || window.locations == undefined) { + window.locations = []; + } + // 鎶婁綅缃俊鎭坊鍔犲埌缂撳瓨涓� + window.setLocations([...window.locations, temObj]); + this.$message({ + message: "宸叉敹钘忥紝璇峰埌鑿滃崟>浣嶇疆>鏀惰棌涓煡鐪�", + duration: 1500, + type: "success", + }); + this.clearval(); + }, + showAddFavorite() { + if (store.addFavorite.show) { + store.setAddFavoriteShow(false); + } else { + store.setAddFavoriteShow(true); + store.setLayerPanelShow(false); + store.setRoamPanelShow(false); + store.setStatisticsPanelShow(false); + store.setLocationCollectionShow(false); + store.setSettingPanelShow(false); + } + }, + 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; + }, + }, +}; +</script> \ No newline at end of file diff --git a/src/components/login.vue b/src/components/login.vue index 9651c5c..fb71d32 100644 --- a/src/components/login.vue +++ b/src/components/login.vue @@ -9,8 +9,8 @@ return {}; }, mounted() { - this.$router.push("/index"); - // this.getQueryString("focus-open-code"); + // this.$router.push("/index"); + this.getQueryString("focus-open-code"); // if ( // window.location.href.match(/=(\S*)#/) && // window.location.href.match(/=(\S*)#/)[1] != "" diff --git a/src/components/rightMenu/bottom2.vue b/src/components/rightMenu/bottom2.vue new file mode 100644 index 0000000..1a9204c --- /dev/null +++ b/src/components/rightMenu/bottom2.vue @@ -0,0 +1,202 @@ +<template> + <div class="bottom" id="bottom"> + <div class="mapTools" v-show="show"> + <div class="mapTool" v-show="test.fwval"> + <el-button class="tool-rotate" @click="zoomIn" title="鏀惧ぇ"> + <img src="../../../static/img/image/zoomIn.png" /> + </el-button> + </div> + <div class="mapTool" v-show="test.fwval"> + <el-button class="tool-rotate" @click="zoomOut" title="缂╁皬"> + <img src="../../../static/img/image/zoomOut.png" /> + </el-button> + </div> + </div> + </div> +</template> + +<style scoped> +.bottom { + position: absolute; + bottom: 0.4rem; + height: 0.76rem; + right: 0.4rem; +} +.mapModeControl { + position: absolute; + right: 0.05rem; + background: rgba(90, 90, 90, 0.5); + bottom: 0.05rem; + height: 0.76rem; + width: 1.03rem; + transition: all 1s; +} +.bottom .mapModeControl:hover { + transition: all 0.6s; + -webkit-transition: all 0.6s; + width: 3.2rem; +} +.mapMode { + display: inline-block; +} +.mapMode dl { + width: 0.88rem; + height: 0.6rem; + border: 1px solid #494949; + cursor: pointer; + margin: 0.08rem; +} + +.mapMode dl:hover { + border-color: #0553b4; +} + +.mapMode dl { + position: relative; +} +#history { + background: url(../../../static/img/1.png) no-repeat; +} +#mode-3d { + background: url(../../../static/img/2.png) no-repeat; +} +#mode-2d { + background: url(../../../static/img/4.png) no-repeat; +} +.mapMode dt { + width: 100%; + height: 0.2rem; + line-height: 0.2rem; + position: absolute; + left: 0; + bottom: 0px; + font-size: 0.12rem; + text-align: center; + color: #fff; + text-shadow: 1px 1px 2px #000; + background: rgba(0, 0, 0, 0.5); +} +.mapModeActive { + background: rgba(1, 37, 80, 0.5) !important; +} + +.mapTools { + position: absolute; + /* bottom: 2rem; */ + bottom: 0.2rem; + /* right: 0.1rem; */ +} +.mapTool { + margin: 0.1rem 0; +} +.mapTool .el-button { + padding: 0 !important; + font-size: 0.24rem; + border: unset; + float: unset; + display: block; + background: rgba(18, 126, 255, 1); +} + +/* .button-group-vertical { + text-align: center; + position: relative; +} */ +.fgx { + position: absolute; + width: 80%; + height: 1px; + height: 1px; + border: 1px solid #dcdfe6; + z-index: 999; + margin: 0 10%; +} +/* .button-group-vertical .el-button-group > .el-button:first-child { + border-top-right-radius: 0.04rem !important; + border-bottom-left-radius: 0px !important; +} +.button-group-vertical .el-button-group > .el-button:last-child { + border-top-right-radius: 0; + border-bottom-left-radius: 0.04rem !important; +} */ +.mapTool img { + width: 24px; + margin: 3px; + /* height: 0.4rem; */ +} +</style> + +<script> +import Bus from "../../js/bus.js"; +export default { + props: ["test"], + data() { + return { + show: true, + parentdata: { + fwval: false, + zbzval: false, + qpval: false, + zymlval: false, + kjcxval: false, + dxmsval: false, + snmsval: false, + ssval: false, + }, + clickIndex: 0, + // isShowHistory: false, + camera: { + position: [116.52217697339846, 39.75979421847914, 17045.47005612415], + orientation: { + heading: 0, + pitch: -90, + roll: 0, + }, + }, + modes: [ + { + id: "mode-3d", + name: "3D", + mode: 3, + }, + { + id: "mode-2d", + name: "2D", + mode: 2, + }, + ], + }; + }, + mounted() { + Bus.$on("myMsg", (myMsg) => { + this.show = myMsg; + }); + }, + methods: { + zoomIn() { + const view = window.map.getView(); + const zoom = view.getZoom(); + + map.getView().animate({ + // 鍙缃渶瑕佺殑灞炴�у嵆鍙� + center: window.map.getView().getCenter(), // 涓績鐐� + zoom: zoom + 1, // 缂╂斁绾у埆 + rotation: undefined, // 缂╂斁瀹屾垚view瑙嗗浘鏃嬭浆寮у害 + duration: 1000, // 缂╂斁鎸佺画鏃堕棿锛岄粯璁や笉闇�瑕佽缃� + }); + }, + zoomOut() { + const view = window.map.getView(); + const zoom = view.getZoom(); + + map.getView().animate({ + // 鍙缃渶瑕佺殑灞炴�у嵆鍙� + center: window.map.getView().getCenter(), // 涓績鐐� + zoom: zoom - 1, // 缂╂斁绾у埆 + rotation: undefined, // 缂╂斁瀹屾垚view瑙嗗浘鏃嬭浆寮у害 + duration: 1000, // 缂╂斁鎸佺画鏃堕棿锛岄粯璁や笉闇�瑕佽缃� + }); + }, + }, +}; +</script> \ No newline at end of file diff --git a/src/components/rightMenu/layerTree2.vue b/src/components/rightMenu/layerTree2.vue new file mode 100644 index 0000000..ac74901 --- /dev/null +++ b/src/components/rightMenu/layerTree2.vue @@ -0,0 +1,2115 @@ +<template> + <div> + <div class="zymljm"> + <!-- rightshowzy.zymlval 璁剧疆椤典紶閫掕繃鏉ョ殑鍙傛暟锛屽垽鏂祫婧愮洰褰曟寜閽槸鍚︽樉绀� --> + <div v-show="rightshowzy.zymlval"> + <!-- 鐐瑰嚮鎺у埗璧勬簮鐩綍鎸夐挳鍥剧墖鐨勫垏鎹� --> + <el-button + @click="zymlisopen" + style="padding: 0; border: none; background-color: transparent" + > + <img + style="width: 0.4rem; height: 0.4rem" + src="../../../static/img/image/zyml1.png" + /> + </el-button> + </div> + <!-- 鏍规嵁鎸夐挳鏄剧ず/闅愯棌鐘舵��->璧勬簮鐩綍鏍戠殑鏄剧ず/闅愯棌 --> + </div> + <div v-show="rightshowzy.zymlmenu" class="layerTree" ref="abc"> + <!-- 鐐瑰嚮杩斿洖 --> + <div class="menutop"> + <div class="menuback" @click="menuclick"> + <i class="el-icon-caret-left"></i>杩斿洖 + </div> + <div class="menutitle">璧勬簮鐩綍</div> + </div> + <!-- :default-checked-keys=arr褰撳墠json鏂囦欢涓凡缁忛�変腑鐨勬暟鎹� --> + <el-card + class="box-card" + style="margin-top: 0.1rem; height: 94%; overflow: auto" + > + <el-tree + @check="check" + :data="treeData" + node-key="id" + :default-checked-keys="arr" + :render-after-expand="false" + :render-content="renderContent" + show-checkbox + ref="tree" + > + </el-tree> + </el-card> + </div> + </div> +</template> +<style scoped> +.funButton { + position: absolute; + top: 1.2rem; + right: 0.1rem; +} +.zymljm { + position: absolute; + top: 0.3rem; + right: 0.1rem; +} +.layerTree { + padding: 0.3rem 0.1rem; + position: absolute; + width: 100%; + height: 100%; + z-index: 2021; + /* overflow-y: auto; + overflow-x: hidden; */ + background-color: white; +} + +.layerTree::-webkit-scrollbar, +.box-card::-webkit-scrollbar { + /*婊氬姩鏉℃暣浣撴牱寮�*/ + width: 8px; + /*楂樺鍒嗗埆瀵瑰簲妯珫婊氬姩鏉$殑灏哄*/ + height: 8px; + scrollbar-arrow-color: red; +} + +.layerTree::-webkit-scrollbar-thumb, +.box-card::-webkit-scrollbar-thumb { + border-radius: 5px; + -webkit-box-shadow: inset 0 0 5px rgba(218, 218, 218, 0.2); + box-shadow: inset 0 0 5px rgba(218, 218, 218, 0.2); + background: rgba(218, 218, 218, 0.5); + scrollbar-arrow-color: red; +} + +.layerTree::-webkit-scrollbar-track, +.box-card::-webkit-scrollbar-track { + -webkit-box-shadow: inset 0 0 5px rgba(218, 218, 218, 0.2); + box-shadow: inset 0 0 5px rgba(218, 218, 218, 0.2); + border-radius: 0; + background: rgba(218, 218, 218, 0.1); +} +</style> + +<script> +import axios from "axios"; +import common from "@/components/common"; + +let colorTool; +let projectTreeData = []; + +//娣诲姞宸ョ▼鏍戞暟鎹� +function addTreeData(data, layer) { + var d = {}; + for (var key in data) { + d[key] = data[key]; + } + d.item = layer; + projectTreeData.push(d); +} + +//閫氳繃id鑾峰彇鎸囧畾鍏冪礌 +function _getTreeData(id) { + for (var i = 0; i < projectTreeData.length; i++) { + if ( + projectTreeData[i].id === id || + (projectTreeData[i].datatype === "entity" && + projectTreeData[i].item && + projectTreeData[i].item.entity && + projectTreeData[i].item.entity.id === id) || + (projectTreeData[i].datatype === "editEntity" && + projectTreeData[i].item && + projectTreeData[i].item[projectTreeData[i].type] && + projectTreeData[i].item[projectTreeData[i].type].id === id) + ) { + return projectTreeData[i]; + } + } +} + +//鑾峰彇sg鏍峰紡閰嶇疆 +async function getSGStyle(type, json, name) { + let de; + !colorTool && (colorTool = sgworld.Core.gradientColor()); + function getSGColor(color) { + let _color = parseInt(color).toString(16); + if (_color.length === 2) { + _color = "0000" + _color; + } else if (_color.length === 4) { + _color = "00" + _color; + } + _color = "#" + _color.slice(4) + _color.slice(2, 4) + _color.slice(0, 2); + return _color; + } + await axios + .get(json) + .then( + (response) => { + let _data = response.data; + if (_data && typeof _data === "string") { + _data = JSON.parse(_data); + } + let style = _data.filter((item) => { + return item.LayerName === name; + }); + if (type === "point") { + let data = style[0]; + style = data.Point; + style.Line_Color = getSGColor(style.Line_Color); + style.Image_Color = getSGColor(style.Image_Color); + style.Text_Color = getSGColor(style.Text_Color); + style.Background_Color = getSGColor(style.Background_Color); + + let color = colorTool.colorRgb( + defaultValue(style.Text_Color, "#ffffff") + ); + let bgColor = colorTool.colorRgb( + defaultValue(style.Background_Color, "#010101") + ); + de = { + label: { + text: { + defaultValue: defaultValue( + style.Text.match(/<Value>(\S*)<\/Value>/)[1], + style.Text.match(/<DefaultValue>(\S*)<\/DefaultValue>/)[1] + ), + }, + scaleMPP: { defaultValue: style.Scale }, + fillColor: { + defaultValue: { + red: color[0] / 255, + green: color[1] / 255, + blue: color[2] / 255, + alpha: 1, + }, + }, + scaleByDistance: { + near: 0, + nearValue: 1, + far: 800000000, + farValue: 1, + }, + minViewingHeight: { defaultValue: "0" }, + font: { defaultValue: style.Text_Size }, + family: { defaultValue: defaultValue(style.Font, "Arial") }, + backgroundColor: { + defaultValue: { + red: bgColor[0] / 255, + green: bgColor[1] / 255, + blue: bgColor[2] / 255, + alpha: 1, + }, + }, + scale: defaultValue(style.TextScale, 1.5), + backgroundOpacity: { defaultValue: style.Background_Opacity }, + italic: { defaultValue: style.Italic }, + bold: { defaultValue: style.Bold }, + limitGrowth: { defaultValue: "1" }, + textRelativeToImage: { defaultValue: "0" }, + showText: { defaultValue: "0" }, + textAlignment: { defaultValue: "17" }, + pixelOffset: new Cesium.Cartesian2( + defaultValue(style.offsetX, 0), + defaultValue(style.offsetY, style.Image_file ? -10 : 0) + ), + outlineColor: Cesium.Color.fromCssColorString( + defaultValue(style.Line_Color, "#ffffff") + ), + outlineWidth: defaultValue(style.outlineWidth, 2), + horizontalOrigin: Cesium.HorizontalOrigin.CENTER, + verticalOrigin: Cesium.VerticalOrigin.BOTTOM, + }, + lineToGround: { defaultValue: style.Line_to_Ground }, + lineToGroundLength: { defaultValue: style.Line_Length }, + lineToGroundColor: { + defaultValue: { red: 1, green: 1, blue: 1, alpha: 1 }, + }, + altitudeMethod: 0, + altitudeOffset: { defaultValue: "0" }, + clampToGround: defaultValue(style.clampToGround, true), + pointHeight: defaultValue(style.pointHeight, undefined), + minimumLevel: defaultValue(style.level_min, 0), + maximumLevel: defaultValue(style.level_max, 22), + position_x: data.position_x, + position_y: data.position_y, + position_z: data.position_z == 0 ? 10000 : data.position_z, + urls: data.Server, + layer: data.ServerName, + }; + if (style.Line_Color) { + de.label && (de.label.style = Cesium.LabelStyle.FILL_AND_OUTLINE); + } + if (style.Image_file) { + de.billboard = { + image: style.Image_file, + scale: defaultValue(style.ImageScale, 1), + scaleMPP: { defaultValue: style.Scale }, + scaleByDistance: { + near: 0, + nearValue: 1, + far: 800000000, + farValue: 1, + }, + minViewingHeight: { defaultValue: "0" }, + verticalOrigin: Cesium.VerticalOrigin.BOTTOM, + }; + } + } else if (type === "polyline") { + console.log(data); + let data = style[0]; + style = data.Line; + style.Line_Color = getSGColor(style.Line_Color); + if (style.Line_Width) { + if (style.Line_Width.length === 2) { + style.Line_Width /= 10; + } else if (style.Line_Width.length === 3) { + style.Line_Width /= 100; + } + } + let color = colorTool.colorRgb( + defaultValue(style.Line_Color, "#ff0000") + ); + de = { + polyline: { + material: { + red: color[0] / 255, + green: color[1] / 255, + blue: color[2] / 255, + alpha: 1, + }, + lineOpacity: parseInt(defaultValue(style.Line_Opacity, 1)), + width: parseInt(defaultValue(style.Line_Width, 4)), + near: style.Near, + far: style.Far, + clampToGround: defaultValue(style.clampToGround, true), + }, + minimumLevel: defaultValue(style.level_min, 0), + maximumLevel: defaultValue(style.level_max, 22), + position_x: data.position_x, + position_y: data.position_y, + position_z: data.position_z == 0 ? 10000 : data.position_z, + urls: data.Server, + layer: data.ServerName, + }; + } else if (type === "polygon") { + let data = style[0]; + style = data.data; + + style.fill = Cesium.Color.fromCssColorString(style.fill); + style.outlineColor = Cesium.Color.fromCssColorString( + style.outlineColor + ); + de = { + polygon: { + outlineColor: { + defaultValue: style.outlineColor, + }, + outlineWidth: style.outlineWidth, + fill: { defaultValue: style.fill.alpha }, + extrudedHeight: style.extrudedHeight || 0, + height: style.height, + outline: style.outline, + material: { + defaultValue: style.fill, + }, + clampToGround: !style.extrudedHeight ? true : false, + fromKml: true, + }, + altitudeMethod: 2, + altitudeOffset: { defaultValue: "0" }, + minimumLevel: defaultValue(style.level_min, 0), + maximumLevel: defaultValue(style.level_max, 22), + position_x: data.position_x, + position_y: data.position_y, + position_z: data.position_z == 0 ? 10000 : data.position_z, + urls: data.Server, + layer: data.ServerName, + }; + } + }, + (response) => { + console.log("鑾峰彇鏍峰紡閰嶇疆澶辫触锛�"); + } + ) + .catch(function (error) { + console.log(error); + }); + return de; +} + +function defaultValue(a, b) { + return a !== undefined ? a : b; +} + +export default { + props: ["rightshowzy"], + data() { + return { + wholeNode: [], + alldisabled: [], + arr: [], //鐢ㄦ潵淇濆瓨璧勬簮鐩綍涓粯璁ら�変腑鐨勮妭鐐筰d + x: 0, + y: 0, + l: 0, + t: 0, + nx: 0, + ny: 0, + nl: 0, + nt: 0, + zymlimg: false, + iniselect: [], + SmartEarthToken: undefined, + treeData: [], + defaultSceneData: [ + { + id: "image", + name: "褰卞儚", + checked: true, + icon: "./static/img/yx.png", + }, + { + id: "terrain", + name: "鍦板舰", + checked: true, + icon: "./static/img/dx.png", + }, + { + id: "jx_model", + name: "绮剧粏妯″瀷", + checked: false, + icon: "./static/img/jxmx.png", + }, + { + id: "qx_model", + name: "鍊炬枩妯″瀷", + checked: false, + icon: "./static/img/qxmx.png", + }, + { + id: "dy_model", + name: "鐐逛簯妯″瀷", + checked: false, + icon: "./static/img/dymx.png", + }, + { + id: "bm", + name: "鐧借啘", + checked: false, + icon: "./static/img/bm.png", + }, + { + id: "bim", + name: "BIM妯″瀷", + checked: false, + icon: "./static/img/bim.png", + }, + { + id: "swzj", + name: "涓夌淮娉ㄨ", + checked: false, + icon: "./static/img/swzj.png", + }, + { + id: "xzq", + name: "琛屾斂鍖虹晫闄�", + checked: false, + icon: "./static/img/xzq.png", + }, + ], + }; + }, + mounted() { + window.ProjectTree = this.$refs.tree; + //鑾峰彇token骞惰姹傚姞杞藉浘灞傛暟鎹� + common.getToken((token) => { + this.SmartEarthToken = token; + }); + + this.$nextTick(() => { + axios.get("./static/layers.json").then( + (response) => { + // 寰楀埌榛樿閫変腑鐨勬暟鎹殑id + this.parseJson(response.data.children); + // 鍒犻櫎鏁扮粍涓涓�涓� + this.alldisabled.shift(); + // 鑾峰緱瀛愯妭鐐瑰叏閮ㄨ绂佺敤鐨刢hildren + this.tem(this.alldisabled); + // 閬嶅巻瀛愯妭鐐瑰叏閮ㄧ鐢ㄧ殑鏁扮粍锛岄亶鍘嗘暣涓爲锛岀粰瀛愯妭鐐瑰叏閮ㄨ绂佺敤鐨勭埗鑺傜偣娣诲姞disabled灞炴�� + for (var i = 0; i < this.wholeNode.length; i++) { + var a = this.getItem(response.data.children, this.wholeNode[i]); + a.disabled = true; + } + //鍦烘櫙閰嶇疆 + this.treeData = response.data && response.data.children; + }, + (response) => { + console.log("鑾峰彇鍦烘櫙閰嶇疆澶辫触锛�"); + } + ); + }); + }, + methods: { + menuclick() { + this.rightshowzy.zymlmenu = false; + }, + zymlisopen() { + this.rightshowzy.zymlmenu = true; + }, + // 閫掑綊閬嶅巻json锛屽緱鍒癱hecked:true鐨勬暟鎹殑id锛屾坊鍔犲埌arr涓� + parseJson(jsonObj) { + // 澹版槑鍙橀噺count锛岃褰昫isabled瀛樺湪鐨勮妭鐐圭殑鍏ㄩ儴鏁版嵁 + var count = 0; + for (var v in jsonObj) { + var element = jsonObj[v]; + if (element.children == undefined || element.children.length == 0) { + if (element._children == undefined || element._children.length == 0) { + if (element.checked) { + this.arr.push(element.id); + } + if (element.urls == undefined || element.urls == "") { + element.disabled = true; + count++; + } + } else { + this.parseJson(element._children); + } + } else { + this.parseJson(element.children); + } + } + if (count !== 0) { + // 娣诲姞鍚湁disabled灞炴�х殑鑺傜偣鏁扮粍锛� + this.alldisabled.push(jsonObj); + } + }, + + tem(data) { + for (var i = 0; i < data.length; i++) { + var temdata = data[i]; + var count = 0; + for (var j = 0; j < temdata.length; j++) { + if (temdata[j].disabled) { + count++; + } + } + if (temdata.length == count) { + this.wholeNode.push(data[i]); + } + } + }, + + // 閬嶅巻鏍戯紝寰楀埌鍜宑hildren灞炴�х浉鍚岀殑鑺傜偣 + getItem(tree, children) { + var Deep, T, F; + for (F = tree.length; F; ) { + T = tree[--F]; + if (children == T.children) return T; + if (T.children) { + Deep = this.getItem(T.children, children); + if (Deep) return Deep; + } + } + }, + // + check(treeNode, data) { + let isCheck = data.checkedKeys.indexOf(treeNode.id) > -1; + this.setVisiable(treeNode, isCheck); + }, + + getLayerData(token) { + axios({ + headers: { + "Content-Type": "application/json", + Authorization: "Bearer " + token, + }, + method: "get", + url: common.serverUrl + "/system/user/getfrontdata", + }).then( + (response) => { + console.log(response.data); + //鑾峰彇鍦烘櫙閰嶇疆 + this.getSceneConfig(response.data); + }, + (response) => { + console.log("error"); + } + ); + }, + getSceneConfig(data) { + //鑾峰彇鍦烘櫙閰嶇疆 + if (data && data.length) { + let sceneConfig = this.defaultSceneData; + let configIndex = {}; + let config; + sceneConfig.forEach((item, index) => { + configIndex[item.name] = index; + }); + data.forEach((item) => { + let _index = configIndex[item.alias]; + if ( + item.datatype === "鍦板舰" && + item.datasource === "SmartearthServer" + ) { + let url, split; + if (item.serverurl.indexOf("Elevation/") > -1) { + url = item.serverurl.split("Elevation/"); + split = "Elevation"; + } else if (item.serverurl.indexOf("MptElevation.ashx/") > -1) { + url = item.serverurl.split("MptElevation.ashx/"); + split = "MptElevation.ashx"; + } + config = this.getConfigTemplate("sgs-terrain", { + name: item.name, + url: url[0] + split, + layer: url[1], + }); + } else if ( + item.datatype === "褰卞儚" && + item.datasource === "SmartearthServer" + ) { + let url = item.serverurl.split("Imagery/"); + config = this.getConfigTemplate("wms", { + name: item.name, + url: url[0] + "Imagery", + layer: url[1], + }); + } else if (item.datatype === "妯″瀷") { + config = this.getConfigTemplate("3dtiles", { + checked: false, + name: item.name, + url: item.serverurl, + }); + } else if ( + item.datatype === "鐭㈤噺" && + item.datasource === "SmartearthServer" + ) { + let url; + if (item.serverurl.indexOf("streamer.ashx/") > -1) { + url = item.serverurl.split("streamer.ashx/"); + } else { + url = item.serverurl.split("Streamer.ashx/"); + } + if (item.alias === "涓夌淮娉ㄨ") { + config = this.getConfigTemplate("wfs", { + class: "pointLayer", + checked: false, + name: item.name, + url: url[0] + "streamer.ashx", + layer: url[1], + }); + } else if (item.alias === "琛屾斂鍖虹晫闄�") { + config = this.getConfigTemplate("wfs", { + class: "polylineLayer", + checked: false, + name: item.name, + url: url[0] + "streamer.ashx", + layer: url[1], + }); + } + } + if (item.name === item.alias) { + sceneConfig[_index] = Object.assign(config, sceneConfig[_index]); + } else { + !sceneConfig[_index].children && + (sceneConfig[_index].children = []); + config.id = + sceneConfig[_index].id + + (sceneConfig[_index].children.length + 1); + sceneConfig[_index].children.push(config); + } + }); + this.treeData = sceneConfig; + } + }, + + getConfigTemplate(type, option) { + let data = {}; + !option && (option = {}); + if (type === "wms") { + data = { + id: option.id, + class: "imageLayer", + name: option.name, + sourceType: "wms", + checked: defaultValue(option.checked, true), + urls: option.url, + layer: option.layer, + lon: option.lon, + lat: option.lat, + height: option.height, + icon: "./static/img/yx.png", + }; + } else if (type === "sgs-terrain") { + data = { + id: option.id, + class: "terrainLayer", + name: option.name, + sourceType: "sgsterrain", + checked: defaultValue(option.checked, true), + urls: option.url, + layer: option.layer, + }; + } else if (type === "terrain") { + data = { + id: option.id, + class: "terrainLayer", + name: option.name, + sourceType: "terrain", + checked: defaultValue(option.checked, true), + urls: option.url, + }; + } else if (type === "3dtiles") { + data = { + id: option.id, + class: "modelLayer", + name: option.name, + sourceType: "b3dm", + maximumScreenSpaceError: 100, + checked: defaultValue(option.checked, false), + urls: option.url, + }; + } else if (type === "wfs") { + data = { + id: option.id, + class: option.class, + name: option.name, + sourceType: "wfs", + checked: defaultValue(option.checked, false), + urls: option.url, + layer: option.layer, + sgStyleJSON: "./static/shpstyle.json", + minimumLevel: option.minimumLevel, + maximumLevel: option.maximumLevel, + }; + } + return data; + }, + + setVisiable(treeNode, checked) { + if (checked !== undefined) { + treeNode.checked = checked; + } else { + treeNode.checked = !treeNode.checked; + } + if (treeNode.children) { + treeNode.children.forEach((item) => { + this.setVisiable(item, treeNode.checked); + }); + return; + } else if (treeNode._children) { + if (treeNode.thisView === "ewzj") { + treeNode._children[0].checked = treeNode.checked; + if (treeNode._children[0].children) { + treeNode._children[0].children.forEach((item) => { + item.checked = treeNode.checked; + this.addTreeData(item); + }); + } else { + this.addTreeData(treeNode._children[0]); + } + } else if (treeNode.thisView === "swzj") { + for (let i = 1; i < treeNode._children.length; i++) { + treeNode._children[i].checked = treeNode.checked; + } + treeNode._children.forEach((item, index) => { + index !== 0 && this.addTreeData(item); + }); + } else if (!treeNode.thisView) { + treeNode._children.forEach((item, index) => { + item.checked = treeNode.checked; + if (item.children) { + item.children.forEach((_item) => { + _item.checked = item.checked; + this.addTreeData(_item); + }); + } else { + this.addTreeData(item); + } + }); + } + return; + } + + if (!treeNode.isAdd) { + this.addTreeData(treeNode); + return; + } + + let data = _getTreeData(treeNode.id); + if (data) { + data.item && + data.item.setVisibility && + data.item.setVisibility(treeNode.checked); + data.item && + data.item.setVisible && + data.item.setVisible(treeNode.checked); + data.item && + data.item.show !== undefined && + (data.item.show = treeNode.checked); + if (data.datatype === "particle") { + data.item.forEach((item) => { + item.show = treeNode.checked; + }); + } + } else { + if ( + treeNode.id && + treeNode.id.indexOf && + treeNode.id.indexOf("---") > -1 + ) { + var ids = id.split("---"); + ids.forEach((item) => { + sgworld.ProjectTree.setVisibility(item, treeNode.checked); + }); + } else { + sgworld.ProjectTree.setVisibility(treeNode.id, treeNode.checked); + } + } + }, + props(data) { + if (data.class === "imageLayer") { + window.treeObj = { + rightClickData: data, + }; + layerOpen("褰卞儚", { + width: 320, + height: 310, + url: "./static/html/layerProp.html", + fn: { + end: function () {}, + }, + }); + } else if (data._children) { + if (data.thisView === "ewzj") { + data.thisView = "swzj"; + data.name = "涓夌淮娉ㄨ"; + data._children[0].checked = false; + for (let i = 1; i < data._children.length; i++) { + data._children[i].checked = data.checked; + } + data._children.forEach((item) => { + if (item.children) { + item.children.forEach((_item) => { + _item.checked = item.checked; + this.addTreeData(_item); + }); + } else { + this.addTreeData(item); + } + }); + } else if (data.thisView === "swzj") { + data.thisView = "ewzj"; + data.name = "浜岀淮娉ㄨ"; + data._children[0].checked = data.checked; + for (let i = 1; i < data._children.length; i++) { + data._children[i].checked = false; + } + data._children.forEach((item) => { + if (item.children) { + item.children.forEach((_item) => { + _item.checked = item.checked; + this.addTreeData(_item); + }); + } else { + this.addTreeData(item); + } + }); + } + } + }, + flyTo(treeNode) { + // + if (treeNode.children) return; + if (treeNode._children && treeNode._children[0]) { + this.flyTo(treeNode._children[0]); + return; + } + this.rightshowzy.zymlmenu = false; + if (treeNode && treeNode.flyTo) { + if (treeNode && treeNode.flyTo.length === 3) { + sgworld.Navigate.flyToPosition( + treeNode.flyTo[0], + treeNode.flyTo[1], + treeNode.flyTo[2] + ); + } else if (treeNode && treeNode.flyTo.length === 4) { + sgworld.Navigate.flyToPointsInterest({ + destination: Cesium.Rectangle.fromDegrees( + treeNode.flyTo[0], + treeNode.flyTo[1], + treeNode.flyTo[2], + treeNode.flyTo[3] + ), + }); + } else { + sgworld.Navigate.flyToPointsInterest({ + destination: Cesium.Cartesian3.fromDegrees( + treeNode.flyTo[0], + treeNode.flyTo[1], + treeNode.flyTo[2] + ), + orientation: { + heading: treeNode.flyTo[3], + pitch: treeNode.flyTo[4], + roll: treeNode.flyTo[5], + }, + }); + } + return; + } + let data = sgworld.ProjectTree.getObject(treeNode.id); + data && data.item + ? sgworld.Navigate.flyToObj(data.item) + : sgworld.Navigate.flyToObj(data); + if (data && data.datatype === "editEntity") { + data && data.item && sgworld.Navigate.flyToObj(data.item[data.type]); + } + }, + renderContent(h, { node, data, store }) { + if (!data.children && data.checked && !data.isAdd) { + if (data._children) { + if (data.thisView) { + this.addTreeData(data._children[0]); + } else { + data._children.forEach((item) => { + this.addTreeData(item); + }); + } + } else { + this.addTreeData(data); + } + } + if (data.checked) { + data.eyeIcon = "./static/img/yj.png"; + } else { + data.eyeIcon = "./static/img/yj-y.png"; + } + if (data.icon) { + return ( + // <span class="custom-tree-node" on-dblclick={() => this.flyTo(data)}> + // <span class="typeIcon"> + // <img src={data.icon} /> + // </span> + // <span class="treeName">{data.name}</span> + // <span class="customButton"> + // <el-button size="mini" on-click={() => this.setVisiable(data)}> + // <img src={data.eyeIcon} /> + // </el-button> + // <el-button size="mini" on-click={() => this.props(data)}> + // <img src="./static/img/006_07.png" /> + // </el-button> + // </span> + // </span> + <span class="custom-tree-node" on-dblclick={() => this.flyTo(data)}> + <span class="typeIcon"> + <img style="width:0.14rem;height:0.14rem" src={data.icon} /> + </span> + <span class="treeName">{data.name}</span> + </span> + ); + } else { + return ( + // <span class="custom-tree-node" on-dblclick={() => this.flyTo(data)}> + // <span class="typeNullIcon"></span> + // <span class="treeName">{data.name}</span> + // <span class="customButton"> + // <el-button size="mini" on-click={() => this.setVisiable(data)}> + // <img src={data.eyeIcon} /> + // </el-button> + // <el-button size="mini" on-click={() => this.heightLing(node, data)}> + // <img src="./static/img/006_07.png" /> + // </el-button> + // </span> + // </span> + <span class="custom-tree-node" on-dblclick={() => this.flyTo(data)}> + <span class="treeName">{data.name}</span> + </span> + ); + } + }, + async addTreeData(treeNode) { + let _data = sgworld.ProjectTree.getObject(treeNode.id); + let pID = 0; + + if (_data) { + sgworld.ProjectTree.setVisibility(treeNode.id, treeNode.checked); + return; + } else { + _data = _getTreeData(treeNode.id); + if (_data) { + _data.item && + _data.item.setVisibility && + _data.item.setVisibility(treeNode.checked); + _data.item && + _data.item.setVisible && + _data.item.setVisible(treeNode.checked); + _data.item && + _data.item.show !== undefined && + (_data.item.show = treeNode.checked); + if (_data.datatype === "particle") { + _data.item.forEach((item) => { + item.show = treeNode.checked; + }); + } + return; + } + } + if (!treeNode.urls || treeNode.isAdd) return; + treeNode.isAdd = true; + + let layer; + treeNode.token && + treeNode.token === "SmartEarthToken" && + (treeNode.token = this.SmartEarthToken); + switch (treeNode.sourceType) { + case "local-map": + //娣诲姞鏈湴json鍦板浘 + layer = sgworld.Creator.createUrlTemplateImageryProvider( + treeNode.name, + { + id: treeNode.id, + url: treeNode.urls + "/{z}/{x}/{y}.png", + enablePickFeatures: false, + level: treeNode.Level, + }, + pID, + undefined, + treeNode.checked, + "" + ); + break; + case "kml": + //娣诲姞kml + layer = sgworld.Creator.addKmlLayer( + treeNode.name, + { + id: treeNode.id, + url: treeNode.urls, + }, + treeNode.checked + ); + break; + case "google": + //娣诲姞璋锋瓕鍦板浘 + layer = sgworld.Creator.createUrlTemplateImageryProvider( + treeNode.name, + { + id: treeNode.id, + url: treeNode.urls, + enablePickFeatures: false, + level: treeNode.Level, + }, + pID, + undefined, + treeNode.checked, + "" + ); + treeNode.id = layer.treeobj.id; + break; + case "arcgis": + layer = sgworld.Creator.createArcGisImageryLayer( + treeNode.name, + { + id: treeNode.id, + url: treeNode.urls, + enablePickFeatures: false, + level: treeNode.Level, + }, + pID, + undefined, + treeNode.checked, + "" + ); + treeNode.id = layer.treeobj.id; + break; + case "mapbox": + Cesium.MapboxApi.defaultAccessToken = + "pk.eyJ1IjoibWFyc2dpcyIsImEiOiJja2Fod2xlanIwNjJzMnhvMXBkMnNqcjVpIn0.WnxikCaN2KV_zn9tLZO77A"; + layer = sgworld.Creator.createImageryProvider( + treeNode.name, + "MapBox", + { + id: treeNode.id, + name: treeNode.name, + level: treeNode.Level, + enablePickFeatures: false, + mapId: treeNode.mapId, + }, + pID, + undefined, + treeNode.checked, + "" + ); + treeNode.id = layer.treeobj.id; + break; + case "tdmap": + layer = sgworld.Creator.createWebMapTileServerImageLayer( + treeNode.name, + { + id: treeNode.id, + url: treeNode.urls, + level: treeNode.Level, + style: treeNode.style, + layer: treeNode.layer, + format: treeNode.format, + enablePickFeatures: false, + tileMatrixSetID: "tiff", + show: true, + subdomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"], + }, + pID, + undefined, + treeNode.checked, + "" + ); + treeNode.id = layer.treeobj.id; + break; + case "txmap": + layer = sgworld.Creator.createUrlTemplateImageryProvider( + treeNode.name, + { + id: treeNode.id, + url: treeNode.urls, + level: treeNode.Level, + enablePickFeatures: false, + customTags: { + sx: function (imageryProvider, x, y, level) { + return x >> 4; + }, + sy: function (imageryProvider, x, y, level) { + return ((1 << level) - y) >> 4; + }, + }, + }, + pID, + undefined, + treeNode.checked, + "" + ); + treeNode.id = layer.treeobj.id; + break; + case "gdmap": + layer = sgworld.Creator.createUrlTemplateImageryProvider( + treeNode.name, + { + id: treeNode.id, + url: treeNode.urls, + enablePickFeatures: false, + level: treeNode.Level, + }, + pID, + undefined, + treeNode.checked, + "" + ); + treeNode.id = layer.treeobj.id; + break; + case "bdmap": + layer = sgworld.Creator.createImageryProvider( + treeNode.name, + "BaiduMap", + { + id: treeNode.id, + level: treeNode.Level, + enablePickFeatures: false, + }, + pID, + undefined, + treeNode.checked, + "" + ); + treeNode.id = layer.treeobj.id; + break; + case "cesiumblack": + layer = sgworld.Creator.createImageryProvider( + treeNode.name, + "cesiumBlack", + { + id: treeNode.id, + url: treeNode.urls, + credit: "Black Marble imagery courtesy NASA Earth Observatory", + flipXY: true, + enablePickFeatures: false, + level: treeNode.Level, + }, + pID, + undefined, + treeNode.checked, + "" + ); + treeNode.id = layer.treeobj.id; + break; + case "osm": + layer = sgworld.Creator.createImageryProvider( + treeNode.name, + "OpenStreetMap", + { + id: treeNode.id, + url: treeNode.urls, + enablePickFeatures: false, + level: treeNode.Level, + }, + pID, + undefined, + treeNode.checked, + "" + ); + treeNode.id = layer.treeobj.id; + break; + case "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, + show: true, + }, + pID, + undefined, + treeNode.checked, + "" + ); + treeNode.id = layer.treeobj.id; + break; + case "gis_wmts": + layer = sgworld.Creator.createUrlTemplateImageryProvider( + treeNode.name, + { + id: treeNode.id, + url: Cesium.buildModuleUrl( + treeNode.urls + "/{z}/{x}/{reverseY}.png" + ), + enablePickFeatures: false, + level: treeNode.Level, + }, + pID, + undefined, + treeNode.checked, + "" + ); + treeNode.id = layer.treeobj.id; + break; + case "wmts_zj": + //琛屽垪鍙峰樊涓ゅ�� + 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, + style: "default", + tileMatrixSetID: "esritilematirx", + format: "image/png", + tilingScheme: geotil, + addLevel: treeNode.addLevel || 1, //灞傜骇鍔犱竴 + enablePickFeatures: false, + show: true, + }, + pID, + undefined, + treeNode.checked, + "" + ); + treeNode.id = layer.treeobj.id; + break; + case "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 = defaultValue(treeNode.nullvalue, "0,0,0"); + parameters.nulltolerance = defaultValue(treeNode.nulltolerance, 0); + } + treeNode.token && (treeNode.urls += "?token=" + treeNode.token); + layer = sgworld.Creator.createImageryProvider( + treeNode.name, + "wms", + { + id: treeNode.id, + url: treeNode.urls, + layers: treeNode.layer, + level: treeNode.Level, + enablePickFeatures: false, + parameters: parameters, + }, + pID, + undefined, + treeNode.checked, + "" + ); + layer.item.alpha = defaultValue(treeNode.alpha, 1); + treeNode.id = layer.treeobj.id; + + break; + case "wmsc": + 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 = defaultValue(treeNode.nullvalue, "0,0,0"); + parameters.nulltolerance = defaultValue(treeNode.nulltolerance, 0); + } + treeNode.token && (treeNode.urls += "?token=" + treeNode.token); + layer = sgworld.Creator.createCacheImageryProvider( + treeNode.name, + { + id: treeNode.id, + url: treeNode.urls, + layers: treeNode.layer, + level: treeNode.Level, + enablePickFeatures: false, + cacheUrl: treeNode.cacheUrl, + cacheMaxLevel: 16, + }, + pID, + undefined, + treeNode.checked, + "" + ); + layer.item.alpha = defaultValue(treeNode.alpha, 1); + treeNode.id = layer.treeobj.id; + break; + case "wfs": + var de = {}; + var color; + if (treeNode.class === "pointLayer") { + if (!treeNode.sgStyleJSON) { + color = colorTool.colorRgb( + defaultValue(treeNode.color, "#ffffff") + ); + var bgColor = colorTool.colorRgb( + defaultValue(treeNode.bgColor, "#010101") + ); + if (treeNode.text) { + de = { + label: { + text: { + defaultValue: defaultValue(treeNode.text, "鏍囩"), + }, + scaleMPP: { + defaultValue: "15000", + }, + fillColor: { + defaultValue: { + red: color[0] / 255, + green: color[1] / 255, + blue: color[2] / 255, + alpha: 1, + }, + }, + scaleByDistance: { + near: 150, + nearValue: 1, + far: 800000, + farValue: 0.5, + }, + minViewingHeight: { + defaultValue: "0", + }, + font: { + defaultValue: "12", + }, + family: { + defaultValue: defaultValue(treeNode.font, "Arial"), + }, + backgroundColor: { + defaultValue: { + red: bgColor[0] / 255, + green: bgColor[1] / 255, + blue: bgColor[2] / 255, + alpha: 1, + }, + }, + scale: defaultValue(treeNode.scale, 2), + backgroundOpacity: { + defaultValue: treeNode.bgColor ? "0.5" : "0", + }, + italic: { + defaultValue: treeNode.italic ? "1" : "0", + }, + bold: { + defaultValue: treeNode.bold ? "1" : "0", + }, + limitGrowth: { + defaultValue: "1", + }, + textRelativeToImage: { + defaultValue: "0", + }, + showText: { + defaultValue: "0", + }, + textAlignment: { + defaultValue: "17", + }, + pixelOffset: new Cesium.Cartesian2( + defaultValue(treeNode.offsetX, 0), + defaultValue(treeNode.offsetY, treeNode.image ? -10 : 0) + ), + outlineColor: Cesium.Color.fromCssColorString( + defaultValue(treeNode.outlineColor, "#ffffff") + ), + outlineWidth: defaultValue(treeNode.outlineWidth, 2), + horizontalOrigin: Cesium.HorizontalOrigin.CENTER, + verticalOrigin: Cesium.VerticalOrigin.BOTTOM, + }, + lineToGround: { + defaultValue: "0", + }, + lineToGroundLength: { + defaultValue: "0", + }, + lineToGroundColor: { + defaultValue: { + red: 1, + green: 1, + blue: 1, + alpha: 1, + }, + }, + altitudeMethod: 0, + altitudeOffset: { + defaultValue: "0", + }, + clampToGround: defaultValue(treeNode.clampToGround, false), + //"pointHeight": 100 + }; + } + if (treeNode.outlineColor) { + de.label && + (de.label.style = Cesium.LabelStyle.FILL_AND_OUTLINE); + } + if (treeNode.image) { + de.billboard = { + image: treeNode.image, + scale: defaultValue(treeNode.imageScale, 1), + link: treeNode.link, + }; + } + } else { + de = await getSGStyle( + "point", + treeNode.sgStyleJSON, + treeNode.name + ); + } + } else if (treeNode.class === "polylineLayer") { + if (!treeNode.sgStyleJSON) { + color = colorTool.colorRgb( + defaultValue(treeNode.color, "#ffff00") + ); + de = { + polyline: { + material: { + red: color[0] / 255, + green: color[1] / 255, + blue: color[2] / 255, + alpha: 1, + }, + lineOpacity: defaultValue(treeNode.alpha, 1), + width: defaultValue(treeNode.width, 4), + clampToGround: defaultValue(treeNode.clampToGround, true), + }, + }; + } else { + de = await getSGStyle( + "polyline", + treeNode.sgStyleJSON, + treeNode.name + ); + } + } else if (treeNode.class === "polygonLayer") { + if (!treeNode.sgStyleJSON) { + color = colorTool.colorRgb( + defaultValue(treeNode.color, "#6bbeef") + ); + de = { + polygon: { + outlineColor: { + defaultValue: { + red: 1, + green: 1, + blue: 0, + alpha: 1, + }, + }, + outlineWidth: 1, + fill: { + defaultValue: defaultValue(treeNode.alpha, 1), + }, + extrudedHeight: treeNode.extrudedHeight || 0, + clampToGround: !treeNode.extrudedHeight ? true : false, + outline: true, + material: { + defaultValue: { + red: color[0] / 255, + green: color[1] / 255, + blue: color[2] / 255, + alpha: defaultValue(treeNode.alpha, 1), + }, + }, + fromKml: true, + }, + altitudeMethod: 2, + altitudeOffset: { + defaultValue: "0", + }, + }; + } else { + de = await getSGStyle( + "polygon", + treeNode.sgStyleJSON, + treeNode.name + ); + } + } + if (!de && treeNode.sgStyleJSON) { + console.log(treeNode.name + "鑾峰彇鏍峰紡澶辫触锛�"); + return; + } + if (de.position_x) { + treeNode.lon = de.position_x; + treeNode.lat = de.position_y; + treeNode.height = de.position_z; + } + layer = sgworld.CreateWfs( + Viewer, + defaultValue(treeNode.urls, de.urls), + defaultValue(treeNode.layer, de.layer), + { + min: defaultValue(treeNode.minimumLevel, de.minimumLevel || 0), + max: defaultValue(treeNode.maximumLevel, de.maximumLevel || 22), + }, + de, + defaultValue(treeNode.layer, de.layer), + pID, + treeNode.checked, + undefined + ); + break; + case "gis_mvt": + var geoOptions = { + id: treeNode.id, + url: treeNode.urls, + layer: treeNode.layer, + upperLevelLimit: treeNode.maximumLevel, + lowerLevelLimit: treeNode.minimumLevel, + minx: treeNode.minx, + miny: treeNode.miny, + maxx: treeNode.maxx, + maxy: treeNode.maxy, + }; + var data; + if (treeNode.class === "pointLayer") { + data = { + level_min: defaultValue(treeNode.minimumLevel, 0), + level_max: defaultValue(treeNode.maximumLevel, 22), + }; + if (treeNode.text) { + data.lable = { + text: treeNode.text, + font: " 20px sans-serif", + pixelOffset: new Cesium.Cartesian2( + defaultValue(treeNode.offsetX, 40), + defaultValue(treeNode.offsetY, -20) + ), + fillColor: defaultValue(treeNode.color, "#ffff00"), + scale: defaultValue(treeNode.scale, 1), + near: defaultValue(treeNode.near, 0), + far: defaultValue(treeNode.far, 99999999999999), + }; + } + if (treeNode.image) { + data.billboard = { + image: treeNode.image, + scale: defaultValue(treeNode.scale, 1), + near: defaultValue(treeNode.near, 0), + far: defaultValue(treeNode.far, 99999999999999), + }; + } + layer = sgworld.Creator.PointVectorGeoJsonFeatureLayerGis( + treeNode.name, + geoOptions, + data, + pID, + treeNode.checked, + function () {} + ); + } else if (treeNode.class === "polylineLayer") { + data = { + level_min: defaultValue(treeNode.minimumLevel, 0), + level_max: defaultValue(treeNode.maximumLevel, 22), + near: defaultValue(treeNode.near, 0), + far: defaultValue(treeNode.far, 99999999999999), + material: defaultValue(treeNode.color, "#ff0000"), + width: defaultValue(treeNode.width, 2), + classificationType: -1, + }; + layer = sgworld.Creator.PolylineVectorGeoJsonFeatureLayerGis( + treeNode.name, + geoOptions, + data, + pID, + treeNode.checked, + function () {} + ); + } else if (treeNode.class === "polygonLayer") { + data = { + effect: 0, + extrudedHeightReference: 1, + far: 9999999999999, + fill: "rgba(255, 0, 0, 1)", + ground: 1, + height: 1, + extrudedHeight: treeNode.extrudedHeight, + layertype: "polygonbase", + level_min: defaultValue(treeNode.minimumLevel, 0), + level_max: defaultValue(treeNode.maximumLevel, 22), + material: defaultValue(treeNode.color, "#ff0000"), + near: 0, + outline: false, + outlineColor: "rgba(68,66,66,0.5)", + outlineWidth: 1, + }; + layer = sgworld.Creator.createGeoJsonFeatureLayerProviderGisOptimization( + treeNode.name, + geoOptions, + data, + pID, + treeNode.checked, + function () {} + ); + } + treeNode.id = layer.treeobj.id; + break; + case "geojson": + var de = {}; + if (treeNode.class === "polylineVolume") { + de = { + id: treeNode.id, + material: defaultValue(treeNode.color, "#ff0000"), + slttype: "0", + number: "4", + exradius: "1", + inradius: "1", + orth_width: "2", + orth_height: "2", + radius: defaultValue(treeNode.radius, 5), + cornerType: "0", + heightReference: "0", + height: defaultValue(treeNode.lineHeight, 0), + near: "0", + far: "99999999999", + radiusScale: treeNode.radiusScale, + connect: true, + }; + layer = sgworld.Creator.createpolylineVolumeGeojsonPrimitiveLayer( + treeNode.name, + treeNode.urls, + de, + pID, + treeNode.checked, + function (data) {} + ); + } else if (treeNode.class === "model") { + de = { + id: treeNode.id, + collect: 0, + uri: defaultValue(treeNode.model, ""), + file: "", + color: defaultValue(treeNode.color, "#ffffff"), + scale: defaultValue(treeNode.scale, 1), + heightReference: 0, + height: defaultValue(treeNode.height, 0), + near: "0", + far: "99999999999", + }; + layer = sgworld.Creator.createModelPointGeoJsonFeatureLayer( + treeNode.name, + treeNode.urls, + de, + pID, + treeNode.checked, + function (data) {} + ); + } else if (treeNode.class === "polygon") { + de = { + id: treeNode.id, + collect: 0, + material: defaultValue(treeNode.color, "#ff0000"), + heightReference: 1, + height: defaultValue(treeNode.height, undefined), + classificationType: "0", + outline: defaultValue(treeNode.outline, false), + outlineColor: defaultValue(treeNode.outlineColor, "#ffff00"), + near: defaultValue(treeNode.near, 0), + far: defaultValue(treeNode.far, 999999), + }; + layer = sgworld.Creator.createPolygonGeoJsonFeatureLayer( + treeNode.name, + treeNode.urls, + de, + pID, + treeNode.checked, + function (data) {} + ); + } + layer && (treeNode.id = layer.treeobj.id); + break; + case "vector": + var de = {}; + let urls = { + url: treeNode.urls, + layer: treeNode.layer, + minx: treeNode.minx, + miny: treeNode.miny, + maxx: treeNode.maxx, + maxy: treeNode.maxy, + srs: treeNode.srs, + }; + if (treeNode.class === "label" || treeNode.class === "image") { + treeNode.disableDepthTestDistance === "Infinity" && + (treeNode.disableDepthTestDistance = Number.POSITIVE_INFINITY); + de = { + id: treeNode.id, + level_min: defaultValue(treeNode.minimumLevel, 10), + level_max: defaultValue(treeNode.maximumLevel, 22), + fillColor: defaultValue(treeNode.color, "#ffffff"), + color: defaultValue(treeNode.imageColor, undefined), + outlineColor: defaultValue(treeNode.outlineColor, "#ffffff"), + backgroundColor: defaultValue( + treeNode.backgroundColor, + "#ffffff" + ), + heightReference: defaultValue(treeNode.heightReference, 0), + pointHeight: defaultValue(treeNode.pointHeight, undefined), + near: defaultValue(treeNode.near, 0), + far: defaultValue(treeNode.far, 1000000), + showBackground: treeNode.showBackground, + outlineWidth: defaultValue(treeNode.outlineWidth, 1), + text: treeNode.text, + image: treeNode.image, + font_size: treeNode.size, + font_family: defaultValue(treeNode.font_family, "寰蒋闆呴粦"), + disableDepthTestDistance: 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, + pID, + treeNode.checked, + function () {} + ); + } else if (treeNode.class === "polylineVolume") { + de = { + id: treeNode.id, + level_min: defaultValue(treeNode.minimumLevel, 10), + level_max: defaultValue(treeNode.maximumLevel, 22), + material: defaultValue(treeNode.color, "#ff0000"), + slttype: "0", + number: "4", + exradius: "1", + inradius: "1", + orth_width: "2", + orth_height: "2", + radius: defaultValue(treeNode.radius, 0.5), + cornerType: "0", + heightReference: "0", + height: defaultValue(treeNode.lineHeight, 0), + near: "0", + far: "99999999999", + radiusScale: treeNode.radiusScale, + }; + urls.upperLevelLimit = de.level_max; + urls.lowerLevelLimit = de.level_min; + layer = sgworld.Creator.createVolumeGeoJsonFeatureLayerProvider( + treeNode.name, + urls, + de, + pID, + treeNode.checked, + function () {} + ); + } else if (treeNode.class === "polyline") { + de = { + id: treeNode.id, + layertype: "polylinelayer", + level_min: defaultValue(treeNode.minimumLevel, 10), + level_max: defaultValue(treeNode.maximumLevel, 22), + material: defaultValue(treeNode.color, "#ffffff"), + height: defaultValue(treeNode.height, undefined), + width: defaultValue(treeNode.width, 2), + clampToGround: defaultValue(treeNode.clampToGround, true), + near: defaultValue(treeNode.near, 0), + far: defaultValue(treeNode.far, 1000000), + }; + urls.upperLevelLimit = de.level_max; + urls.lowerLevelLimit = de.level_min; + + layer = sgworld.Creator.createPrimitivePolylineVectorGeoJsonFeatureLayerProvider( + treeNode.name, + urls, + de, + pID, + treeNode.checked, + function () {} + ); + } else if (treeNode.class === "polygon") { + de = { + id: treeNode.id, + layertype: "polygonlayer", + classificationType: 0, + level_min: defaultValue(treeNode.minimumLevel, 10), + level_max: defaultValue(treeNode.maximumLevel, 22), + material: defaultValue(treeNode.color, "#ff0000"), + fill: defaultValue(treeNode.color, "#ff0000"), + heightReference: "1", + height: defaultValue(treeNode.height, 0), + extrudedHeight: defaultValue(treeNode.extrudedHeight, 0), + extrudedHeightReference: "1", + clampToGround: defaultValue(treeNode.clampToGround, false), + near: "0", + far: "99999999999", + }; + urls.upperLevelLimit = de.level_max; + urls.lowerLevelLimit = de.level_min; + if (treeNode.extrudedHeight) { + layer = sgworld.Creator.createGeoJsonFeatureLayerProviderOptimization( + treeNode.name, + urls, + de, + pID, + treeNode.checked, + function () {} + ); + } else { + layer = sgworld.Creator.VolumeVectorGeoJsonFeatureLayerOptimizationGroundtest( + treeNode.name, + urls, + de, + pID, + treeNode.checked, + function () {} + ); + } + } else if (treeNode.class === "model") { + de = { + id: treeNode.id, + level_min: defaultValue(treeNode.minimumLevel, 10), + level_max: defaultValue(treeNode.maximumLevel, 22), + collect: 0, + uri: defaultValue(treeNode.model, ""), + file: "", + color: defaultValue(treeNode.color, "#ffffff"), + scale: defaultValue(treeNode.scale, 1), + heightReference: 0, + height: 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, + pID, + 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, + }, + pID, + true, + "" + ); + treeNode.id = layer.treeobj.id; + break; + case "sgsterrain": + layer = sgworld.Creator.sfsterrainprovider( + treeNode.name, + { + id: treeNode.id, + layerName: treeNode.layer, + requestVertexNormals: true, + url: treeNode.urls, + token: treeNode.token, + }, + pID, + treeNode.checked, + "" + ); + treeNode.id = layer.treeobj.id; + break; + case "arcgisterrain": + layer = sgworld.Creator.createArcGISTerrain( + treeNode.name, + { + id: treeNode.id, + requestVertexNormals: true, + url: treeNode.urls, + }, + pID, + treeNode.checked, + "" + ); + treeNode.id = layer.treeobj.id; + break; + case "b3dm": + layer = sgworld.Creator.create3DTilesets( + treeNode.name, + treeNode.urls, + { + id: treeNode.id, + Level: treeNode.Level, + maximumScreenSpaceError: treeNode.maximumScreenSpaceError || 50, + // preloadWhenHidden: true, + cullRequestsWhileMoving: false, + preferLeaves: true, + skipLevels: 2, + }, + { + groundCenter: treeNode.Center, + groundheight: treeNode.modelHeight, + colors: treeNode.alpha + ? "rgba(255,255,255," + treeNode.alpha + ")" + : treeNode.color || undefined, + }, + pID, + treeNode.checked, + function (data) {} + ); + treeNode.id = layer.treeobj.id; + break; + case "b3dm_copy": + var positions = []; + var index = 0; + + function addCopy_b3dm() { + var data = { + id: treeNode.id + index, + class: "modelLayer", + name: treeNode.name.replace("-1", "-" + (index + 2)), + sourceType: "b3dm", + Level: treeNode.Level, + Center: positions[index], + checked: false, + urls: treeNode.urls, + icon: treeNode.icon, + }; + zTreeObj1.addNodes(treeNode.getParentNode(), data); + if (++index < treeNode.copy_num) { + addCopy_b3dm(); + } + } + layer = sgworld.Creator.create3DTilesets( + treeNode.name, + treeNode.urls, + { + id: treeNode.id, + Level: treeNode.Level, + }, + {}, + pID, + treeNode.checked, + function (data) { + var cartographic = Cesium.Cartographic.fromCartesian( + layer.item.boundingSphere.center + ); + var degrees = { + lon: Cesium.Math.toDegrees(cartographic.longitude), + lat: Cesium.Math.toDegrees(cartographic.latitude), + height: cartographic.height, + }; + var position, num; + var row = (col = parseInt(Math.sqrt(treeNode.copy_num))); + num = treeNode.copy_num - row * col; + for (var i = 0; i < row; i++) { + for (var j = 0; j < col; j++) { + if (!i && !j) { + continue; + } + position = [ + degrees.lon + j * treeNode.offset, + degrees.lat + i * treeNode.offset, + degrees.height, + ]; + positions.push(position); + } + } + //treeNode.flyTo = [degrees.lon, degrees.lat, position[0], position[1]]; + for (var i = 0; i < num; i++) { + positions.push([ + position[0] + treeNode.offset, + position[1] - i * treeNode.offset, + position[2], + ]); + } + + treeNode.name += "-1"; + treeNode.id = layer.treeobj.id; + addCopy_b3dm(); + } + ); + 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, + }, + pID, + treeNode.name, + "" + ); + treeNode.id = layer.treeobj.id; + break; + } + if (treeNode.sourceType !== "gltf" && (treeNode.lon || treeNode.lat)) { + treeNode.flyTo = [ + treeNode.lon, + treeNode.lat, + defaultValue(treeNode.height, 10000), + ]; + } + if (treeNode.minx && treeNode.miny && treeNode.maxx && treeNode.maxy) { + treeNode.flyTo = [ + treeNode.minx, + treeNode.miny, + treeNode.maxx, + treeNode.maxy, + ]; + } + if (treeNode.sourceType === "wfs") { + addTreeData(treeNode, layer); + } + }, + }, +}; +</script> \ No newline at end of file diff --git a/src/components/rightNavigation/NavigationBar2.vue b/src/components/rightNavigation/NavigationBar2.vue new file mode 100644 index 0000000..386ddf7 --- /dev/null +++ b/src/components/rightNavigation/NavigationBar2.vue @@ -0,0 +1,273 @@ +<template> + <div class="navigationBar"> + <div class="menuBtn"> + <el-button class="right-menuBtn" @click="handleMenuListShow"> + <img src="@/assets/img/navigation/menuicon.png" /> + </el-button> + </div> + <div class="menuList" v-show="showMenuList.show"> + <ul> + <li + v-for="(value, key) in menuList" + :key="value.id" + @click="handleMenuClick(value.attr)" + @tap="handleMenuClick(key)" + > + <div class="menuItem"> + <img + :src="showState[value.attr].show ? value.imgActive : value.img" + :class="showState[value.attr].show ? 'Active' : 'noActive'" + /> + <span>{{ value.name }}</span> + </div> + </li> + + </ul> + </div> + </div> +</template> + +<script> +import store from "@/utils/store2.js"; +export default { + name: "NavigationBar", + data() { + return { + showMenuList: store.MenuList, + resetShowState: store.resetLink, + favoriteShowState: store.favorite, + menuList: [ + { + id: "0001tc", + name: "鍥惧眰", + attr: "layer", + img: require("@/assets/img/navigation/tuc.png"), + imgActive: require("@/assets/img/navigation/tucA.png"), + }, + // { + // id: "0002my", + // name: "婕父", + // attr: "roam", + // img: require("@/assets/img/navigation/my.png"), + // imgActive: require("@/assets/img/navigation/myA.png"), + // }, + // { + // id: '0003tj', + // name: '缁熻', + // attr: 'statistics', + // img: require("@/assets/img/navigation/tj.png"), + // imgActive: require("@/assets/img/navigation/tjA.png"), + // }, + { + id: "0004sc", + name: "浣嶇疆", + attr: "location", + img: require("@/assets/img/navigation/sc.png"), + imgActive: require("@/assets/img/navigation/scA.png"), + }, + // { + // id: '0005sz', + // name: '璁剧疆', + // attr: 'setting', + // img: require("@/assets/img/navigation/setting.png"), + // imgActive: require("@/assets/img/navigation/settingA.png") + // }, + // { + // id: '0006fw', + // name: '澶嶄綅', + // img: require("@/assets/img/navigation/u53.png") + // }, + // { + // id: '0006fw', + // name: '鏀惰棌', + // img: require("@/assets/img/navigation/u53.png") + // }, + ], + showState: { + layer: store.layerPanel, + roam: store.roamPanel, + statistics: store.statisticsPanel, + location: store.locationCollection, + setting: store.settingPanel, + }, + }; + }, + methods: { + // 鐐瑰嚮鍙充笂瑙掕彍鍗曟寜閽� + handleMenuListShow() { + // 娓呴櫎瀹氱偣缁曢 + // if (window.pointerFly) { + // window.pointerFly.end && window.pointerFly.end(); + // window.pointerFly = null; + // } + //娓呴櫎鎼滅储鐐� + flyPoint && Viewer.entities.remove(flyPoint); + flyPoint = undefined; + this.showMenuList.show = !this.showMenuList.show; + store.setMenuListShow(this.showMenuList.show); + }, + + // 鐐瑰嚮鍙充笂瑙掕彍鍗曢」 + handleMenuClick(attr) { + debugger; + console.log('鐐瑰嚮鍙充笂瑙掕彍鍗曢」'); + //娓呴櫎鎼滅储鐐� + flyPoint && Viewer.entities.remove(flyPoint); + flyPoint = undefined; + switch (attr) { + case "layer": + if (store.layerPanel.show) { + store.setLayerPanelShow(false); + } else { + store.setLayerPanelShow(true); + //鍏抽棴婕父 + store.setRoamPanelShow(false); + store.setStatisticsPanelShow(false); + store.setLocationCollectionShow(false); + store.setSettingPanelShow(false); + store.setAddFavoriteShow(false); + } + break; + case "roam": + if (store.roamPanel.show) { + store.setRoamPanelShow(false); + } else { + store.setRoamPanelShow(true); + store.setLayerPanelShow(false); + store.setStatisticsPanelShow(false); + store.setLocationCollectionShow(false); + store.setSettingPanelShow(false); + store.setAddFavoriteShow(false); + } + break; + case "statistics": + if (store.statisticsPanel.show) { + store.setStatisticsPanelShow(false); + } else { + store.setStatisticsPanelShow(true); + store.setLayerPanelShow(false); + store.setRoamPanelShow(false); + store.setLocationCollectionShow(false); + store.setSettingPanelShow(false); + store.setAddFavoriteShow(false); + } + break; + case "location": + if (store.locationCollection.show) { + store.setLocationCollectionShow(false); + } else { + store.setLocationCollectionShow(true); + store.setLayerPanelShow(false); + store.setRoamPanelShow(false); + store.setStatisticsPanelShow(false); + store.setSettingPanelShow(false); + store.setAddFavoriteShow(false); + } + + break; + case "setting": + if (store.settingPanel.show) { + store.setSettingPanelShow(false); + } else { + store.setSettingPanelShow(true); + store.setLayerPanelShow(false); + store.setRoamPanelShow(false); + store.setStatisticsPanelShow(false); + store.setLocationCollectionShow(false); + store.setAddFavoriteShow(false); + } + break; + case 5: + sgworld.Navigate.jumpTo({ + //璺宠浆瑙嗚 + destination: new Cesium.Cartesian3.fromDegrees( + 116.508368, + 39.79346, + 769687 + ), + }); + break; + case 6: + if (store.addFavorite.show) { + store.setAddFavoriteShow(false); + } else { + store.setAddFavoriteShow(true); + store.setLayerPanelShow(false); + store.setRoamPanelShow(false); + store.setStatisticsPanelShow(false); + store.setLocationCollectionShow(false); + store.setSettingPanelShow(false); + } + break; + } + }, + }, +}; +</script> + +<style scoped> +.navigationBar { + position: absolute; + top: 0.55rem; + right: 0.15rem; + /* width: 64px; */ +} +.menuBtn .el-button { + padding: 0 !important; + font-size: 0.24rem; + border: unset; + float: unset; + display: block; + background: rgba(18, 126, 255, 1); +} +.menuBtn img { + width: 24px; + margin: 3px; +} +/* .menuBtn { + margin-left: 25px; + width: 22px; + height: 20px; + background-image: url("~@/assets/img/navigation/menuicon.png"); + background-repeat: no-repeat; + background-size: 100% 100%; +} */ + +.menuList { + position: absolute; + width: 40px; + margin-top: 0.1rem; + right: -0.05rem; + background-color: white; + border-radius: 10px; +} + +.menuItem { + width: 32px; + color: black; + margin: 0px auto; + margin-top: 10px; + margin-bottom: 7px; + /* padding-bottom: 7px; */ + border-bottom: 1px solid #e8e8e9; + text-align: center; + cursor: pointer; + /* border-bottom: 1px solid #e8e8e9; */ + /* pointer-events:none */ +} + +li:last-child .menuItem { + border: none; +} + +img { + width: 24px; + /* height: 24px; */ + text-align: center; +} + +.menuItem span { + display: block; + text-align: center; +} +</style> diff --git a/src/components/sideMenu/layerMenu/layerPanel2.vue b/src/components/sideMenu/layerMenu/layerPanel2.vue index e4c3a1c..62a0d84 100644 --- a/src/components/sideMenu/layerMenu/layerPanel2.vue +++ b/src/components/sideMenu/layerMenu/layerPanel2.vue @@ -33,30 +33,6 @@ </div> </div> </div> - <!-- <div class="areaType" style="margin-top: 10px"> - <div class="title"> - 涓撻鍥惧眰 - <span class="more" @click.stop="showLayerTree" - >鏇村鍥惧眰<i class="el-icon-arrow-right"></i - ></span> - </div> - <div class="container"> - <div - class="layerItem" - :key="value1.id" - v-for="(value1, index1) in areaTypeList" - @click.stop="handleAreaClick(value1, index1)" - > - <img - :src="value1.src" - :class="{ active: curAreaTypeIndex == index1 }" - /> - <span :class="{ spanActive: curAreaTypeIndex == index1 }">{{ - value1.name - }}</span> - </div> - </div> - </div> --> <div class="areaType" style="margin-top: 10px"> <div class="title"> 涓撻搴旂敤 @@ -129,10 +105,16 @@ clearLayerByTypeId, clearLayerByTypeIdArr, } from "@/utils/map.js"; -import _GLOBAL from "@/assets/GLOBAL"; -import store from "@/utils/store.js"; -import ZTTitem from "@/utils/ztt.js"; +import _GLOBAL from "@/assets/GLOBAL2"; +import store from "@/utils/store2.js"; +import ZTTitem from "@/utils/ztt2.js"; import { layers } from "../../../../static/json/layer.js"; + +import Tile from "ol/layer/Tile"; +import XYZ from "ol/source/XYZ"; +import { get as getProjection, getTransform } from "ol/proj"; +import { createXYZ } from "ol/tilegrid"; + export default { name: "LayerPanel", data() { @@ -153,22 +135,7 @@ src: require("@/assets/img/layer/yxdt.png"), }, ], - sMapModelList: [ - // { - // id: "3Dcs", - // name: "3D鍩庡競", - // active: false, - // type: "san", - // src: require("@/assets/img/layer/3Dcs.png"), - // }, - // { - // id: "swmx", - // name: "涓夌淮妯″瀷", - // active: false, - // type: "san", - // src: require("@/assets/img/layer/swmx.png"), - // }, - ], + sMapModelList: [], areaTypeList: [ { id: "瑙勫垝鑼冨洿", @@ -225,7 +192,7 @@ ], zhuantiList: ZTTitem, //curMapModelIndex: 1, - curEMapModelIndex: 0, + curEMapModelIndex: 1, curSMapModelIndex: -1, curAreaTypeIndex: -1, curYjIndex: -1, @@ -286,31 +253,13 @@ }, // 浜岀淮搴曞浘閫夋嫨 handleEMapClick(result, index) { - let p = sgworld.Navigate.getCameraInfo(); - let pitch; - if (pitch !== -90) { - pitch = -90; - sgworld.Navigate.flyToPointsInterest({ - destination: new Cesium.Cartesian3.fromDegrees( - p.location.lon, - p.location.lat, - p.location.height - ), - orientation: { - heading: Cesium.Math.toRadians(0), - pitch: Cesium.Math.toRadians(pitch), - roll: Cesium.Math.toRadians(0), - }, - }); - } - // 璁剧疆鐩告満 if (result.name == "浜岀淮鍦板浘") { - window.Viewer.scene.globe.maximumScreenSpaceError = 4 / 3; - this.changeLayerView(25000, false); + window.map.getLayerByName("浜岀淮鍦板浘").setVisible(true); + window.map.getLayerByName("褰卞儚鍦板浘").setVisible(false); } else if (result.name == "褰卞儚鍦板浘") { - window.Viewer.scene.globe.maximumScreenSpaceError = 4 / 3; - this.changeLayerView(50000, false); + window.map.getLayerByName("褰卞儚鍦板浘").setVisible(true); + window.map.getLayerByName("浜岀淮鍦板浘").setVisible(false); } // 鍒囨崲鍥惧眰 const val = layers.filter((res) => { @@ -435,6 +384,7 @@ }, // 绗簩琛� 涓撻鍥� 鐐瑰嚮 handleZTlick(result, index) { + console.log(result, index); const val = layers.filter((res) => { if (res.name == result.name) { return res; @@ -443,38 +393,11 @@ const children = val[0].children; if (this.curZTIndex == index) { this.curZTIndex = -1; - // let _data = sgworld.ProjectTree.getObject(children[0].id); - // if (_data) { - // sgworld.ProjectTree.setVisibility(children[0].id, false); - // } + store.setThematicLayerItemId(""); } else { this.curZTIndex = index; store.setThematicLayerItemId(children); - - // //娓呴櫎 - // // let arr = [ - // // "GuiHuaFanWeiShiYiTu", - // // "XingZhengQuHuaTu", - // // "GuiHuaDanYuanHuaFenTu", - // // "ZhuYaoGongNengQuGuiHuaShiYiTu", - // // ]; - // // arr.forEach((item) => { - // // sgworld.ProjectTree.getObject(item) && - // // sgworld.ProjectTree.setVisibility(item, false); - // // }); - // let dataObj = sgworld.ProjectTree.getObject(result.id); - // if (dataObj) { - // sgworld.ProjectTree.setVisibility(result.id, true); - // } else { - // _GLOBAL.layers[result.id] = []; - // children.forEach((item) => { - // let itemLayer = loadLayer(item); - // _GLOBAL.layers[result.id].push(itemLayer); - // console.log(_GLOBAL.layers[result.id]); - // }); - // } - // // store.setThematicLayerItemId(result.id); } }, // 绗笁琛� 涓撻鍔熻兘 鐐瑰嚮 @@ -505,29 +428,79 @@ switch (index) { case 0: store.setSliderShow(true); - window.tdglLayer = sgworld.Creator.createImageryProvider( - layers[8].name, - "tms", - { - id: layers[8].children[0].id, - url: layers[8].children[0].urls, - fileExtension: layers[8].children[0].img || "png", - enablePickFeatures: false, - level: layers[8].children[0].Level, - minimumLevel: layers[8].children[0].minimumLevel, - maximumLevel: layers[8].children[0].maximumLevel, - tilingScheme: - layers[8].children[0].tileType === "Geo" - ? new Cesium.GeographicTilingScheme() - : new Cesium.WebMercatorTilingScheme(), - // alpha: layers[8].children[0].alpha, - alpha: this.alpha, - }, - "0", - layers[8].children[0].zIndex, - true, - "" - ); + // window.tdglLayer = sgworld.Creator.createImageryProvider( + // layers[8].name, + // "tms", + // { + // id: layers[8].children[0].id, + // url: layers[8].children[0].urls, + // fileExtension: layers[8].children[0].img || "png", + // enablePickFeatures: false, + // level: layers[8].children[0].Level, + // minimumLevel: layers[8].children[0].minimumLevel, + // maximumLevel: layers[8].children[0].maximumLevel, + // tilingScheme: + // layers[8].children[0].tileType === "Geo" + // ? new Cesium.GeographicTilingScheme() + // : new Cesium.WebMercatorTilingScheme(), + // // alpha: layers[8].children[0].alpha, + // alpha: this.alpha, + // }, + // "0", + // layers[8].children[0].zIndex, + // true, + // "" + // ); + + // console.log("gisserver-tms"); + // var url = layers[8].children[0].urls; + // var projection = getProjection("EPSG:4326"); + // var tileGrid = createXYZ({ + // extent: projection.getExtent(), + // }); + // var source = new XYZ({ + // projection: projection, + // tileGrid: tileGrid, + // tileUrlFunction: function (tileCoord, pixelRatio, proj) { + // return ( + // url + + // (tileCoord[0] - 1) + + // "/" + + // tileCoord[1] + + // "/" + + // (Math.pow(2, tileCoord[0] - 1) + tileCoord[2]) + + // ".jpeg" + // ); + // }, + // }); + // window.tdglLayer = new Tile({ + // source: source, + // }); + // window.map.addLayer(window.tdglLayer); + + var url = + "https://skyzt.bda.gov.cn/gisserver/tmsserver/chengshiguihua_dikuaibianhao_tms/"; + var projection = getProjection("EPSG:4326"); + var tmslayer = new Tile({ + source: new XYZ({ + projection: projection, + tileGrid: createXYZ({ + extent: projection.getExtent(), + }), + tileUrlFunction: function (tileCoord, pixelRatio, proj) { + return ( + url + + (tileCoord[0] - 1) + + "/" + + tileCoord[1] + + "/" + + (Math.pow(2, tileCoord[0] - 1) + tileCoord[2]) + + ".jpeg" + ); + }, + }), + }); + window.map.addLayer(tmslayer); //鏄剧ず婊戝姩鏉� store.setTdglFlag(true); break; diff --git a/src/components/sideMenu/layerMenu/main2.vue b/src/components/sideMenu/layerMenu/main2.vue index f60c681..f17b7b5 100644 --- a/src/components/sideMenu/layerMenu/main2.vue +++ b/src/components/sideMenu/layerMenu/main2.vue @@ -5,7 +5,7 @@ </template> <script> -import store from "@/utils/store.js"; +import store from "@/utils/store2.js"; import layerPanel from "./layerPanel2.vue"; export default { components: { diff --git a/src/components/sideMenu/layerTreePanel/layerTreePanel.vue b/src/components/sideMenu/layerTreePanel/layerTreePanel.vue index a9609ba..a811b29 100644 --- a/src/components/sideMenu/layerTreePanel/layerTreePanel.vue +++ b/src/components/sideMenu/layerTreePanel/layerTreePanel.vue @@ -410,6 +410,7 @@ } }, async addTreeData(treeNode) { + console.log('treeNode start',treeNode); // if (treeNode.disabled) return; let _data = sgworld.ProjectTree.getObject(treeNode.id); let pID = 0; @@ -1863,6 +1864,7 @@ if (treeNode.baseLayer) { layer.item.baseLayer = true; } + console.log('treeNode end',treeNode); }, initCluster(treeNode) { diff --git a/src/components/sideMenu/layerTreePanel/layerTreePanel2.vue b/src/components/sideMenu/layerTreePanel/layerTreePanel2.vue new file mode 100644 index 0000000..df8e56b --- /dev/null +++ b/src/components/sideMenu/layerTreePanel/layerTreePanel2.vue @@ -0,0 +1,2683 @@ +<template> + <div class="layerTreePanel"> + <div class="menutop"> + <div class="menuback" @click="back"> + <i class="el-icon-arrow-left"></i><span>杩斿洖</span> + </div> + <div class="menutitle">鏇村鍥惧眰</div> + </div> + <div class="layerTreeContainer"> + <div class="title">涓撻鍥惧眰鍒楄〃</div> + <div class="treeContainer"> + <el-tree + :data="treeData" + node-key="id" + ref="tree" + :default-checked-keys="arr" + show-checkbox + :render-content="renderContent" + :default-expanded-keys="defaultExpanded" + :props="defaultProps" + :default-expand-all="true" + @check="check" + > + </el-tree> + </div> + </div> + </div> +</template> + +<script> +let projectTreeData = []; +let clusterItemList = []; +//娣诲姞宸ョ▼鏍戞暟鎹� +function addTreeData(data, layer) { + var d = {}; + for (var key in data) { + d[key] = data[key]; + } + d.item = layer; + projectTreeData.push(d); +} +//閫氳繃id鑾峰彇鎸囧畾鍏冪礌 +function _getTreeData(id) { + for (var i = 0; i < projectTreeData.length; i++) { + if ( + projectTreeData[i].id === id || + (projectTreeData[i].datatype === "entity" && + projectTreeData[i].item && + projectTreeData[i].item.entity && + projectTreeData[i].item.entity.id === id) || + (projectTreeData[i].datatype === "editEntity" && + projectTreeData[i].item && + projectTreeData[i].item[projectTreeData[i].type] && + projectTreeData[i].item[projectTreeData[i].type].id === id) + ) { + return projectTreeData[i]; + } + } +} +function generatePosition(num) { + let list = []; + for (let i = 0; i < num; i++) { + let lon = 116.52217697339846 + Math.random() * 0.4; + let lat = 39.75979421847914 + Math.random() * 0.3; + list.push(new SmartEarth.Degrees(lon, lat)); + } + return list; +} + +import store from "@/utils/store2.js"; +import axios from "axios"; +import Vector from "ol/source/Vector"; +import GeoJSON from "ol/format/GeoJSON"; +import Cluster from "ol/source/Cluster"; +import Style from "ol/style/Style"; +import Circle from "ol/style/Circle"; +import Stroke from "ol/style/Stroke"; +import Fill from "ol/style/Fill"; +import Text from "ol/style/Text"; +import Icon from "ol/style/Icon"; +import VectorLayer from "ol/layer/Vector"; + +import ImageWMS from "ol/source/ImageWMS"; +import Image from "ol/layer/Image"; + +export default { + name: "LayerTreePanel", + data() { + return { + alldisabled: [], + arr: [], + treeData: [], + defaultExpanded: [], + defaultCheck: [], + defaultProps: { + children: "children", + label: "name", + }, + state: store.thematicLayer, + }; + }, + mounted() { + axios.get("./static/json/layers.json").then( + (res) => { + console.log("layers.json", res); + //鑾峰彇榛樿閫変腑鏁版嵁鐨刬d + this.parseJson(res.data.children); + + //鍦烘櫙閰嶇疆 + this.treeData = res.data && res.data.children; + this.setDefaultCheck(res.data); + setTimeout(() => { + let selectedLayers = this.$refs.tree.getCheckedNodes(); + + let filterSelectLayers = selectedLayers; + let filist = filterSelectLayers.filter((p) => { + return !p.children; + }); + let legendlist = []; + for (var i = 0; i < filist.length; i++) { + var getkeyList = keys[filist[i].id]; + if (getkeyList && getkeyList.list && getkeyList.list.length > 0) { + for (var j = 0; j < getkeyList.list.length; j++) { + legendlist.push(getkeyList.list[j]); + } + } + } + //store.setPoplayerListAction(legendlist); + }, 1000); + }, + (error) => { + console.log("鑾峰彇鍦烘櫙閰嶇疆澶辫触锛�" + error); + } + ); + }, + methods: { + // 閫掑綊閬嶅巻json锛屽緱鍒癱hecked:true鐨勬暟鎹殑id锛屾坊鍔犲埌arr涓� + parseJson(jsonObj) { + // 澹版槑鍙橀噺count锛岃褰昫isabled瀛樺湪鐨勮妭鐐圭殑鍏ㄩ儴鏁版嵁 + var count = 0; + for (var v in jsonObj) { + var element = jsonObj[v]; + if (element.expanded) { + this.defaultExpanded.push(element.id); + } + if (element.children == undefined || element.children.length == 0) { + if (element._children == undefined || element._children.length == 0) { + if (element.checked) { + this.arr.push(element.id); + } + if (element.urls == undefined || element.urls == "") { + element.disabled = true; + count++; + } + } else { + this.parseJson(element._children); + } + } else { + this.parseJson(element.children); + } + } + if (count !== 0) { + // 娣诲姞鍚湁disabled灞炴�х殑鑺傜偣鏁扮粍锛� + this.alldisabled.push(jsonObj); + } + }, + + async setDefaultCheck(node) { + this.ergodicNode(node); + this.$refs.tree.setCheckedKeys(this.defaultCheck); + // setTimeout(()=>{ + // this.$refs.tree.setCheckedKeys(['tc3857']); + // },1000) + }, + + ergodicNode(node) { + if (node.expanded) { + this.defaultExpanded.push(node.id); + } + if (node.checked && !node.children) { + this.defaultCheck.push(node.id); + if (!node.isAdd) { + if (node._children) { + if (node.thisView) { + if (node._children[0].children) { + node._children[0].children.forEach((item) => { + this.addTreeData(item); + }); + } else { + this.addTreeData(node._children[0]); + } + } else { + node._children.forEach((item) => { + this.addTreeData(item); + }); + } + } else { + this.addTreeData(node); + } + } + } + if (node.children && node.children.length) { + node.children.forEach((item) => { + this.ergodicNode(item); + }); + } + }, + + check(treeNode, data) { + let idsOnlyArr = [ + "GuiHuaFanWeiShiYiTu", + "XingZhengQuHuaTu", + "GuiHuaDanYuanHuaFenTu", + "ZhuYaoGongNengQuGuiHuaShiYiTu", + ]; + if (idsOnlyArr.includes(treeNode.id)) { + // 鑾峰彇涔嬪墠閫変腑鐨刵ode + let otherItem = idsOnlyArr + .filter((item) => { + return item != treeNode.id; + }) + .filter((item) => data.checkedKeys.includes(item)); + if (otherItem.length > 0) { + let item = this.$refs.tree.getNode(otherItem[0]).data; + // 绉婚櫎涔嬪墠閫変腑鐨� + this.setVisiable(item, false); + this.$refs.tree.setChecked(item.id, false, false); + } + // debugger; + let checkFlag = data.checkedKeys.indexOf(treeNode.id) > -1; + store.setThematicLayerItemId(checkFlag ? treeNode.id : ""); + } + // 鎵撳嬀閫変腑 + let isCheck = data.checkedKeys.indexOf(treeNode.id) > -1; + this.setVisiable(treeNode, isCheck); + }, + + setVisiable(treeNode, checked) { + if (checked !== undefined) { + treeNode.checked = checked; + } else { + treeNode.checked = !treeNode.checked; + } + if (treeNode.children) { + treeNode.children.forEach((item) => { + this.setVisiable(item, treeNode.checked); + }); + return; + } else if (treeNode._children) { + if (treeNode.thisView === "ewzj") { + treeNode._children[0].checked = treeNode.checked; + if (treeNode._children[0].children) { + treeNode._children[0].children.forEach((item) => { + item.checked = treeNode.checked; + this.addTreeData(item); + }); + } else { + this.addTreeData(treeNode._children[0]); + } + } else if (treeNode.thisView === "swzj") { + for (let i = 1; i < treeNode._children.length; i++) { + treeNode._children[i].checked = treeNode.checked; + } + treeNode._children.forEach((item, index) => { + index !== 0 && this.addTreeData(item); + }); + } else if (!treeNode.thisView) { + treeNode._children.forEach((item, index) => { + item.checked = treeNode.checked; + if (item.children) { + item.children.forEach((_item) => { + _item.checked = item.checked; + this.addTreeData(_item); + }); + } else { + this.addTreeData(item); + } + }); + } + return; + } + + if (!treeNode.isAdd) { + this.addTreeData(treeNode); + return; + } + + let data = _getTreeData(treeNode.id); + if (data) { + data.item && + data.item.setVisibility && + data.item.setVisibility(treeNode.checked); + data.item && + data.item.setVisible && + data.item.setVisible(treeNode.checked); + data.item && + data.item.show !== undefined && + (data.item.show = treeNode.checked); + if (data.datatype === "particle") { + data.item.forEach((item) => { + item.show = treeNode.checked; + }); + } + } else { + if ( + treeNode.id && + treeNode.id.indexOf && + treeNode.id.indexOf("---") > -1 + ) { + var ids = id.split("---"); + ids.forEach((item) => { + sgworld.ProjectTree.setVisibility(item, treeNode.checked); + }); + } else { + sgworld.ProjectTree.setVisibility(treeNode.id, treeNode.checked); + var dd = Viewer.dataSources._dataSources.filter((item) => { + return item.name == treeNode.id; + }); + if (dd && dd.length > 0) { + dd[0].show = treeNode.checked; + } + //鍒ゆ柇鍕鹃�夌殑鏄惁涓鸿仛鍚� + var jhdd = clusterItemList.filter((item) => { + return item.name == treeNode.id; + }); + if (jhdd && jhdd.length > 0) { + jhdd[0].dataSource.show = treeNode.checked; + } + } + } + }, + + flyTo(treeNode) { + if (treeNode.children) return; + if (treeNode._children && treeNode._children[0]) { + this.flyTo(treeNode._children[0]); + return; + } + if (treeNode && treeNode.flyTo) { + if (treeNode && treeNode.flyTo.length === 3) { + sgworld.Navigate.flyToPosition( + treeNode.flyTo[0], + treeNode.flyTo[1], + treeNode.flyTo[2] + ); + } else if (treeNode && treeNode.flyTo.length === 4) { + sgworld.Navigate.flyToPointsInterest({ + destination: Cesium.Rectangle.fromDegrees( + treeNode.flyTo[0], + treeNode.flyTo[1], + treeNode.flyTo[2], + treeNode.flyTo[3] + ), + }); + } else { + sgworld.Navigate.flyToPointsInterest({ + destination: Cesium.Cartesian3.fromDegrees( + treeNode.flyTo[0], + treeNode.flyTo[1], + treeNode.flyTo[2] + ), + orientation: { + heading: treeNode.flyTo[3], + pitch: treeNode.flyTo[4], + roll: treeNode.flyTo[5], + }, + }); + } + return; + } + let data = sgworld.ProjectTree.getObject(treeNode.id); + data && data.item + ? sgworld.Navigate.flyToObj(data.item) + : sgworld.Navigate.flyToObj(data); + if (data && data.datatype === "editEntity") { + data && data.item && sgworld.Navigate.flyToObj(data.item[data.type]); + } + }, + + renderContent(h, { node, data, store }) { + if (data.icon) { + return ( + <span class="TreeNodeClass" on-dblclick={() => this.flyTo(data)}> + <span class="typeIcon"> + <img src={data.icon} /> + </span> + <span class="treeName" style="font-size:16px"> + {data.name} + </span> + </span> + ); + } else if (data.disabled) { + return ( + <span + class="TreeNodeClass custom_hide" + on-dblclick={() => this.flyTo(data)} + > + <span class="treeName" style="font-size:16px"> + {data.name} + </span> + <i + slot="reference" + class="el-icon-info" + style="font-size:16px;margin-right:16px" + on-click={() => this.showLayerInfo(data)} + ></i> + </span> + ); + } else { + if (data.children) { + return ( + <span class="TreeNodeClass" on-dblclick={() => this.flyTo(data)}> + <span class="treeName" style="font-size:16px"> + {data.name} + </span> + </span> + ); + } else { + return ( + <span + class="TreeNodeClass" + style="flex: 1;display: flex;align-items: center;justify-content: space-between;" + on-dblclick={() => this.flyTo(data)} + > + <span class="treeName" style="font-size:16px"> + {data.name} + </span> + </span> + ); + } + } + }, + + async addTreeData(treeNode) { + switch (treeNode.sourceType) { + case "tms": + layer = sgworld.Creator.createImageryProvider( + treeNode.name, + "tms", + { + id: treeNode.id, + url: treeNode.urls, + fileExtension: treeNode.img || "png", + enablePickFeatures: false, + alpha: treeNode.alpha, + }, + "0", + undefined, + true, + "" + ); + + break; + case "local-map": + // 娣诲姞鏈湴鍦板浘 + if (treeNode.tms) { + layer = sgworld.Creator.createImageryProvider( + treeNode.name, + "tms", + { + id: treeNode.id, + url: treeNode.urls, + fileExtension: treeNode.img || "png", + enablePickFeatures: false, + level: treeNode.Level, + minimumLevel: treeNode.minimumLevel, + maximumLevel: treeNode.maximumLevel, + tilingScheme: + treeNode.tileType === "Geo" + ? new Cesium.GeographicTilingScheme() + : new Cesium.WebMercatorTilingScheme(), + alpha: treeNode.alpha, + }, + "0", + treeNode.zIndex, + true, + "" + ); + } else { + layer = sgworld.Creator.createUrlTemplateImageryProvider( + treeNode.name, + { + id: treeNode.id, + url: `${treeNode.urls}/${treeNode.tile || "{z}/{x}/{y}"}.${ + treeNode.img || "png" + }`, + enablePickFeatures: false, + level: treeNode.Level, + minimumLevel: treeNode.minimumLevel, + maximumLevel: treeNode.maximumLevel, + tilingScheme: + treeNode.tileType === "Geo" + ? new Cesium.GeographicTilingScheme() + : new Cesium.WebMercatorTilingScheme(), + alpha: treeNode.alpha, + }, + "0", + treeNode.zIndex, + true, + "" + ); + } + break; + case "kml": + // 娣诲姞kml鏁版嵁 + layer = sgworld.Creator.addKmlLayer( + treeNode.name, + { + id: treeNode.id, + url: treeNode.urls, + }, + true + ); + break; + case "google": + // 娣诲姞璋锋瓕鍦板浘 + layer = sgworld.Creator.createUrlTemplateImageryProvider( + treeNode.name, + { + id: treeNode.id, + url: treeNode.urls, + enablePickFeatures: false, + level: treeNode.Level, + minimumLevel: treeNode.minimumLevel, + maximumLevel: treeNode.maximumLevel, + alpha: treeNode.alpha, + tilingScheme: sgworld.Core.getOffsetTilingScheme(), + }, + "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, // 鏄惁浣跨敤鏈嶅姟鐨勫唴缃殑鍒囩墖鏂规锛屽亸绉荤籂姝i渶瑕佷娇鐢ㄥ涓嬭嚜瀹氫箟鐨勬柟妗� + tilingScheme: treeNode.GCJ02 + ? sgworld.Core.getOffsetTilingScheme() + : undefined, // 鍋忕Щ绾犳 + minimumLevel: treeNode.minimumLevel, + maximumLevel: treeNode.maximumLevel, + alpha: treeNode.alpha, + }, + "0", + treeNode.zIndex, + true, + "" + ); + break; + case "mapbox": + // mapbox鍦板浘 + layer = sgworld.Creator.createImageryProvider( + treeNode.name, + "MapBox", + { + id: treeNode.id, + name: treeNode.name, + level: treeNode.Level, + enablePickFeatures: false, + mapId: treeNode.mapId, + minimumLevel: treeNode.minimumLevel, + maximumLevel: treeNode.maximumLevel, + alpha: treeNode.alpha, + accessToken: + treeNode.token || + "pk.eyJ1IjoibWFyc2dpcyIsImEiOiJja2Fod2xlanIwNjJzMnhvMXBkMnNqcjVpIn0.WnxikCaN2KV_zn9tLZO77A", + }, + "0", + treeNode.zIndex, + true, + "" + ); + break; + case "tdmap": + // 澶╁湴鍥� + layer = sgworld.Creator.createWebMapTileServerImageLayer( + treeNode.name, + { + id: treeNode.id, + url: treeNode.urls, + level: treeNode.Level, + minimumLevel: treeNode.minimumLevel, + maximumLevel: 18, + style: treeNode.style, + layer: treeNode.layer, + format: treeNode.format, + enablePickFeatures: false, + tileMatrixSetID: "tiff", + show: true, + subdomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"], + alpha: treeNode.alpha, + }, + "0", + treeNode.zIndex, + true, + "" + ); + break; + case "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 "cluster": + layer = this.initCluster(treeNode); + break; + case "ldgcluster": + layer = this.initLdgCluster(treeNode); + break; + case "qiyeinfo": + layer = this.qiyeCluster(treeNode); + // layer = this.testSDKcluster(treeNode); + 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, + "" + ); + break; + case "gdmap": + // 楂樺痉鍦板浘 + layer = sgworld.Creator.createUrlTemplateImageryProvider( + treeNode.name, + { + id: treeNode.id, + url: treeNode.urls, + enablePickFeatures: false, + level: treeNode.Level, + minimumLevel: treeNode.minimumLevel, + maximumLevel: 18, + tilingScheme: sgworld.Core.getOffsetTilingScheme(), // 鍋忕Щ绾犳 + alpha: treeNode.alpha, + }, + "0", + treeNode.zIndex, + true, + "" + ); + break; + case "bdmap": + // 鐧惧害鍦板浘 + layer = sgworld.Creator.createImageryProvider( + treeNode.name, + "BaiduMap", + { + id: treeNode.id, + level: treeNode.Level, + enablePickFeatures: false, + style: treeNode.style, + minimumLevel: treeNode.minimumLevel, + maximumLevel: treeNode.maximumLevel, + alpha: treeNode.alpha, + }, + "0", + treeNode.zIndex, + true, + "" + ); + break; + case "cesiumblack": + // cesiumIon榛戝鍦板浘 + layer = sgworld.Creator.createImageryProvider( + treeNode.name, + "cesiumBlack", + { + id: treeNode.id, + url: treeNode.urls, + flipXY: true, + enablePickFeatures: false, + level: treeNode.Level, + minimumLevel: treeNode.minimumLevel, + maximumLevel: treeNode.maximumLevel, + alpha: treeNode.alpha, + }, + "0", + treeNode.zIndex, + true, + "" + ); + break; + case "osm": + // osm鍦板浘 + layer = sgworld.Creator.createImageryProvider( + treeNode.name, + "OpenStreetMap", + { + id: treeNode.id, + url: treeNode.urls, + enablePickFeatures: false, + level: treeNode.Level, + minimumLevel: treeNode.minimumLevel, + maximumLevel: treeNode.maximumLevel, + alpha: treeNode.alpha, + }, + "0", + treeNode.zIndex, + true, + "" + ); + break; + case "wmts": + // wmts褰卞儚 + layer = sgworld.Creator.createWebMapTileServerImageLayer( + treeNode.name, + { + id: treeNode.id, + url: treeNode.urls, + level: treeNode.Level, + style: treeNode.style, + layer: treeNode.layer, + enablePickFeatures: false, + format: treeNode.format, + tileMatrixSetID: treeNode.srs, + tilingScheme: + treeNode.tileType === "Geo" + ? new Cesium.GeographicTilingScheme() + : new Cesium.WebMercatorTilingScheme(), + show: true, + minimumLevel: treeNode.minimumLevel, + maximumLevel: treeNode.maximumLevel, + alpha: treeNode.alpha, + }, + "0", + treeNode.zIndex, + true, + "" + ); + break; + case "gis_wmts": + // gisserver wmst褰卞儚 + layer = sgworld.Creator.createUrlTemplateImageryProvider( + treeNode.name, + { + id: treeNode.id, + url: Cesium.buildModuleUrl( + treeNode.urls + "/{z}/{x}/{reverseY}.png" + ), + enablePickFeatures: false, + level: treeNode.Level, + minimumLevel: treeNode.minimumLevel, + maximumLevel: treeNode.maximumLevel, + alpha: treeNode.alpha, + }, + "0", + treeNode.zIndex, + true, + "" + ); + break; + case "wmts_zj": + // 琛屽垪鍙峰樊涓ゅ�嶇殑wmts + var geotil = new Cesium.GeographicTilingScheme({ + rectangle: Cesium.Rectangle.MAX_VALUE, + }); + if (treeNode.addLevel && treeNode.addLevel === 2) { + geotil.positionToTileXY = function (position, level, result) { + level > 0 && level++; + var rectangle = this._rectangle; + if (!Cesium.Rectangle.contains(rectangle, position)) { + // outside the bounds of the tiling scheme + return undefined; + } + + var xTiles = this.getNumberOfXTilesAtLevel(level); + var yTiles = this.getNumberOfYTilesAtLevel(level); + + var xTileWidth = rectangle.width / xTiles; + var yTileHeight = rectangle.height / yTiles; + + var longitude = position.longitude; + if (rectangle.east < rectangle.west) { + longitude += Cesium.Math.TWO_PI; + } + + var xTileCoordinate = + ((longitude - rectangle.west) / xTileWidth) | 0; + if (xTileCoordinate >= xTiles) { + xTileCoordinate = xTiles - 1; + } + + var yTileCoordinate = + ((rectangle.north - position.latitude) / yTileHeight) | 0; + if (yTileCoordinate >= yTiles) { + yTileCoordinate = yTiles - 1; + } + + if (!Cesium.defined(result)) { + return new Cesium.Cartesian2(xTileCoordinate, yTileCoordinate); + } + + result.x = xTileCoordinate; + result.y = yTileCoordinate; + return result; + }; + geotil.tileXYToRectangle = function (x, y, level, result) { + level > 0 && level++; + var rectangle = this._rectangle; + + var xTiles = this.getNumberOfXTilesAtLevel(level); + var yTiles = this.getNumberOfYTilesAtLevel(level); + + var xTileWidth = rectangle.width / xTiles; + var west = x * xTileWidth + rectangle.west; + var east = (x + 1) * xTileWidth + rectangle.west; + + var yTileHeight = rectangle.height / yTiles; + var north = rectangle.north - y * yTileHeight; + var south = rectangle.north - (y + 1) * yTileHeight; + + if (!Cesium.defined(result)) { + result = new Cesium.Rectangle(west, south, east, north); + } + + result.west = west; + result.south = south; + result.east = east; + result.north = north; + return result; + }; + } + layer = sgworld.Creator.createWebMapTileServerImageLayer( + treeNode.name, + { + id: treeNode.id, + url: treeNode.urls, + layer: treeNode.layer, + level: treeNode.Level, + minimumLevel: treeNode.minimumLevel, + maximumLevel: treeNode.maximumLevel, + style: "default", + tileMatrixSetID: "esritilematirx", + format: "image/png", + tilingScheme: geotil, + addLevel: treeNode.addLevel || 1, //灞傜骇鍔犱竴 + enablePickFeatures: false, + show: true, + alpha: treeNode.alpha, + }, + "0", + treeNode.zIndex, + true, + "" + ); + break; + case "wms": + case "wmsc": + // wms鏁版嵁 + var parameters = { + service: "WMS", + format: "image/png", + transparent: true, + }; + if (treeNode.removeNullValue) { + if (treeNode.nullvalue) { + treeNode.nullvalue = treeNode.nullvalue.replace("rgb(", ""); + treeNode.nullvalue = treeNode.nullvalue.replace(")", ""); + } + parameters.nullvalue = sgworld.Core.defaultValue( + treeNode.nullvalue, + "0,0,0" + ); + parameters.nulltolerance = sgworld.Core.defaultValue( + treeNode.nulltolerance, + 0 + ); + } + treeNode.token && (treeNode.urls += "?token=" + treeNode.token); + if (treeNode.sourceType === "wmsc") { + layer = sgworld.Creator.createCacheImageryProvider( + treeNode.name, + { + id: treeNode.id, + url: treeNode.urls || "", + layers: treeNode.layer || "", + level: treeNode.Level, + enablePickFeatures: false, + cacheUrl: treeNode.cacheUrl || treeNode.urls, + fileExtension: treeNode.fileExtension, + cacheMaxLevel: treeNode.cacheMaxLevel || 16, + alpha: treeNode.alpha, + }, + "0", + treeNode.zIndex, + treeNode.checked, + "" + ); + } else { + layer = sgworld.Creator.createImageryProvider( + treeNode.name, + "wms", + { + id: treeNode.id, + url: treeNode.urls, + layers: treeNode.layer || "", + level: treeNode.Level, + minimumLevel: treeNode.minimumLevel, + maximumLevel: treeNode.maximumLevel, + enablePickFeatures: false, + parameters: parameters, + alpha: treeNode.alpha, + }, + "0", + treeNode.zIndex, + true, + "" + ); + } + break; + case "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, + // "" + // ); + debugger; + var layer = new Image({ + source: new ImageWMS({ + //涓嶈兘璁剧疆涓�0锛屽惁鍒欏湴鍥句笉灞曠ず銆� + ratio: 1, + url: "http://127.0.0.1:8080/geoserver/province/wms", + params: { + LAYERS: "province:鏂扮枂", + STYLES: "", + VERSION: "1.1.1", + FORMAT: "image/png", + }, + serverType: "geoserver", + }), + }); + window.map.addLayer(layer); + break; + case "wfs": + // wfs鏁版嵁 + // console.log(treeNode); + layer = sgwfs.CreateWfs(treeNode.class, treeNode); + break; + case "yinjing": + axios + .get( + treeNode.urls + + "?version=1.3.0&request=GetFeature&format=json&typename=" + + treeNode.layer + ) + .then((data) => { + console.log(data); + + let features = data.data.features; + features.forEach((feature) => { + let geom = feature.geometry.coordinates; + let properties = feature.properties; + let point = new SmartEarth.Degrees(geom[0], geom[1], 0); + let imgUrl; + // console.log(point); + if (feature.featureType == "绐ㄤ簳") { + switch (feature.properties["浜曠被鍨�"]) { + case "闆ㄦ按浜�": + imgUrl = + SmartEarthRootUrl + + "Workers/image/csyxj/鍒囩墖/闆ㄦ按浜曠洊.png"; + break; + case "鐢靛姏浜�": + imgUrl = + SmartEarthRootUrl + + "Workers/image/csyxj/鍒囩墖/鐢靛姏浜曠洊.png"; + break; + case "浜ら�氫簳": + imgUrl = + SmartEarthRootUrl + + "Workers/image/csyxj/鍒囩墖/浜ら�氫簳鐩�.png"; + break; + case "璺伅浜�": + imgUrl = + SmartEarthRootUrl + + "Workers/image/csyxj/鍒囩墖/璺伅浜曠洊.png"; + break; + case "閫氫俊浜�": + imgUrl = + SmartEarthRootUrl + + "Workers/image/csyxj/鍒囩墖/閫氫俊浜曠洊.png"; + break; + case "姹℃按浜�": + imgUrl = + SmartEarthRootUrl + + "Workers/image/csyxj/鍒囩墖/姹℃按浜曠洊.png"; + break; + case "鐩戞帶浜�": + imgUrl = + SmartEarthRootUrl + + "Workers/image/csyxj/鍒囩墖/鐩戞帶浜曠洊.png"; + break; + case "鐕冩皵浜�": + imgUrl = + SmartEarthRootUrl + + "Workers/image/csyxj/鍒囩墖/鐕冩皵浜曠洊.png"; + break; + case "鐑姏浜�": + imgUrl = + SmartEarthRootUrl + + "Workers/image/csyxj/鍒囩墖/鐑姏浜曠洊.png"; + break; + default: + imgUrl = treeNode.image; + break; + } + } + + var position = sgworld.Creator.CreatePosition( + geom[0], + geom[1], + 0 + ); + var label = sgworld.Creator.CreateLabel( + position, + feature.properties["count"], + feature.featureType == "绐ㄤ簳" ? imgUrl : treeNode.image, + { + imageScale: 0.5, + disableDepthTestDistance: "Infinity", + minimumLevel: 16, + maximumLevel: 22, + // 鏃犺閬尅 + disableDepthTestDistance: Infinity, + }, + 0, + "鏂囨湰" + ); + }); + }); + 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: 1, + heading: treeNode.heading, + pitch: treeNode.pitch, + roll: treeNode.roll, + effects: treeNode.effects || false, + effectsMaxHeight: treeNode.effectsMaxHeight || 150, + colors: treeNode.alpha + ? "rgba(255,255,255," + treeNode.alpha + ")" + : treeNode.color || undefined, + }, + "0", + true + ); + break; + case "s3m": + layer = sgworld.Creator.createS3MLayer( + treeNode.urls, + sgworld._Viewer.scene, + function () {} + ); + break; + case "gltf": + var position = [treeNode.lon, treeNode.lat, treeNode.height]; + layer = sgworld.Creator.createModel( + position, + treeNode.urls, + { + id: treeNode.id, + scale: treeNode.scale || 1, + heading: treeNode.heading, + pitch: treeNode.pitch, + roll: treeNode.roll, + }, + "0", + treeNode.name, + "" + ); + break; + case "SimpleGraphic": + treeNode.type = treeNode.class; + layer = sgworld.Creator.SimpleGraphic.addFeature(treeNode); + break; + case "videoPolygon": + layer = sgworld.Creator.addVideoPolygon(treeNode.positions, { + url: treeNode.url, + angle: treeNode.angle, + }); + break; + case "MilitaryPlotting": + if (!treeNode.feature.id) { + treeNode.feature.id = treeNode.id; + } + if (!treeNode.feature.name) { + treeNode.feature.name = treeNode.name; + } + layer = sgworld.Creator.MilitaryPlotting.addFeature(treeNode.feature); + break; + case "ParticleEffect": + layer = sgworld.Analysis.createParticleEffect( + treeNode.name, + treeNode.position, + { + translation: Cesium.Cartesian3.fromElements(0, 0, 0), //骞崇Щ + } + ); + layer.name = treeNode.name; + break; + case "FlowField": + layer = sgworld.Creator.createTrailLine( + treeNode.positions, + treeNode.style + ); + layer.boundingSphere = Cesium.BoundingSphere.fromPoints( + treeNode.positions + ); + + break; + case "MobileWall": + layer = sgworld.Creator.createTrailLineWall( + treeNode.LineInterpolation.positions, + treeNode.style + ); + layer.boundingSphere = Cesium.BoundingSphere.fromPoints( + treeNode.LineInterpolation.positions + ); + break; + case "link": + layer = sgworld.Creator.createLinkPro( + sgworld.Core.toDegrees(treeNode.posisitons[0]), + sgworld.Core.toDegrees(treeNode.posisitons[1]), + { + clampToGround: true, + } + ); + break; + case "DiffusionSource": + layer = sgworld.Analysis.createMultiCircleScan( + treeNode.position, + treeNode.maxRadius, + treeNode.maxRadius.color, + 3000, + true + ); + break; + case "RiskDiffusion": + case "CircularDiffusion": + layer = sgworld.Analysis.createCircleScan( + treeNode.position, + treeNode.maxRadius, + treeNode.color, + 3000, + true + ); + break; + case "FanDiffusion": + layer = sgworld.Analysis.createSectorScan( + treeNode.position, + treeNode.distance, + "#ff0000", + 60, + treeNode.angle, + true, + 4000, + true + ); + break; + case "RadarMask": + layer = sgworld.Creator.createRectangularSensor( + treeNode.position, + treeNode.cylinder + ); + break; + case "DynamicSatellite": + let dtwxzsData = sgworld.Creator.createConeRadar(treeNode.position, { + color: "#7b9ef7", + radius: 200000, + }); + let weixin = sgworld.Creator.createModel( + treeNode.position, + window.SmartEarthRootUrl + "Workers/Model/weixin.gltf", + { scale: 15 }, + "0", + "鍗槦" + ); + layer = { dtwxzsData, weixin }; + layer.sourceType = "DynamicSatellite"; + break; + case "excavate": + var position = [treeNode.lon, treeNode.lat, treeNode.height]; + layer = sgworld.Creator.createModel( + position, + treeNode.urls, + { + id: treeNode.id, + scale: treeNode.scale || 1, + }, + pID, + treeNode.name, + "" + ); + treeNode.id = layer.treeobj.id; + break; + } + if (treeNode.sourceType !== "gltf" && (treeNode.lon || treeNode.lat)) { + treeNode.flyTo = [ + treeNode.lon, + treeNode.lat, + sgworld.Core.defaultValue(treeNode.height, 10000), + ]; + } + if (treeNode.minx && treeNode.miny && treeNode.maxx && treeNode.maxy) { + treeNode.flyTo = [ + treeNode.minx, + treeNode.miny, + treeNode.maxx, + treeNode.maxy, + ]; + } + if (treeNode.sourceType === "wfs") { + addTreeData(treeNode, layer); + } + if (treeNode.baseLayer) { + layer.item.baseLayer = true; + } + }, + initLdgCluster(treeNode) { + if (treeNode.checked == false) { + window.map.removeLayer(window.ldgclusterLayer); + window.map.removeLayer(window.tldgclusterLayer); + return; + } + const loading = this.$loading({ + lock: true, + text: "Loading", + spinner: "el-icon-loading", + background: "rgba(0, 0, 0, 0.7)", + }); + + // 鍔犺浇 GeoJSON 鏁版嵁 + var vectorSource = new Vector({ + format: new GeoJSON(), + url: + treeNode.urls + + "?version=1.3.0&request=GetFeature&format=json&typename=" + + treeNode.layer, + }); + + // 鍒涘缓鑱氬悎灞� + var clusterSource = new Cluster({ + distance: 40, + source: vectorSource, + }); + + // 鍒涘缓鑱氬悎鏄剧ず鏍峰紡 + var styleCache = {}; + if (treeNode.name == "璺伅鏉� ") { + window.ldgclusterLayer = new VectorLayer({ + source: clusterSource, + style: function (feature) { + var size = feature.get("features").length; + if (size == 1) { + return new Style({ + image: new Icon({ + anchor: [0.5, 1], + src: treeNode.image, + }), + }); + } + if (size > 1000) { + var style = styleCache[size]; + if (!style) { + style = new Style({ + image: new Icon({ + scale: 0.4, + src: require("@/assets/img/right/test01.png"), + }), + text: new Text({ + text: size.toString(), + fill: new Fill({ + color: "#fff", + }), + }), + }); + styleCache[size] = style; + } + return style; + } + var style = styleCache[size]; + if (!style) { + style = new Style({ + image: new Icon({ + // anchor: [0.5, 1], + scale: 0.3, + src: require("@/assets/img/right/jh.png"), + }), + text: new Text({ + text: size.toString(), + fill: new Fill({ + color: "#fff", + }), + }), + }); + styleCache[size] = style; + } + return style; + }, + }); + + window.map.addLayer(window.ldgclusterLayer); + } else if (treeNode.name == "璺悕鐗屾潌 ") { + window.tldgclusterLayer = new VectorLayer({ + source: clusterSource, + style: function (feature) { + var size = feature.get("features").length; + if (size == 1) { + return new Style({ + image: new Icon({ + anchor: [0.5, 1], + src: treeNode.image, + }), + }); + } + if (size > 1000) { + var style = styleCache[size]; + if (!style) { + style = new Style({ + image: new Icon({ + scale: 0.4, + src: require("@/assets/img/right/test01.png"), + }), + text: new Text({ + text: size.toString(), + fill: new Fill({ + color: "#fff", + }), + }), + }); + styleCache[size] = style; + } + return style; + } + var style = styleCache[size]; + if (!style) { + style = new Style({ + image: new Icon({ + // anchor: [0.5, 1], + scale: 0.3, + src: require("@/assets/img/right/jh.png"), + }), + text: new Text({ + text: size.toString(), + fill: new Fill({ + color: "#fff", + }), + }), + }); + styleCache[size] = style; + } + return style; + }, + }); + + window.map.addLayer(window.tldgclusterLayer); + } + + // 灏嗚仛鍚堝眰鍔犲叆鍦板浘 + window.map.removeLayer(window.jkspclusterLayer); + window.map.removeLayer(window.qiyeclusterLayer); + loading.close(); + }, + initCluster(treeNode) { + if (treeNode.checked == false) { + window.map.removeLayer(window.jkspclusterLayer); + return; + } + const loading = this.$loading({ + lock: true, + text: "Loading", + spinner: "el-icon-loading", + background: "rgba(0, 0, 0, 0.7)", + }); + // 鍔犺浇 GeoJSON 鏁版嵁 + var vectorSource = new Vector({ + format: new GeoJSON(), + url: + treeNode.urls + + "?version=1.3.0&request=GetFeature&format=json&typename=" + + treeNode.layer, + }); + + // 鍒涘缓鑱氬悎灞� + var clusterSource = new Cluster({ + distance: 40, + source: vectorSource, + }); + + // 鍒涘缓鑱氬悎鏄剧ず鏍峰紡 + var styleCache = {}; + window.jkspclusterLayer = new VectorLayer({ + source: clusterSource, + style: function (feature) { + var size = feature.get("features").length; + if (size == 1) { + return new Style({ + image: new Icon({ + anchor: [0.5, 1], + src: "./static/SmartEarthSDK/Workers/image/xzspj/spjk.png", + }), + }); + } + if (size > 1000) { + var style = styleCache[size]; + if (!style) { + style = new Style({ + image: new Icon({ + // anchor: [0.5, 1], + scale: 0.4, + src: require("@/assets/img/right/test01.png"), + }), + text: new Text({ + text: size.toString(), + fill: new Fill({ + color: "#fff", + }), + }), + }); + styleCache[size] = style; + } + return style; + } + var style = styleCache[size]; + if (!style) { + style = new Style({ + image: new Icon({ + // anchor: [0.5, 1], + scale: 0.3, + src: require("@/assets/img/right/jh.png"), + }), + text: new Text({ + text: size.toString(), + fill: new Fill({ + color: "#fff", + }), + }), + }); + styleCache[size] = style; + } + return style; + }, + }); + + // 灏嗚仛鍚堝眰鍔犲叆鍦板浘 + window.map.removeLayer(window.ldgclusterLayer); + window.map.removeLayer(window.tldgclusterLayer); + window.map.removeLayer(window.qiyeclusterLayer); + window.map.addLayer(window.jkspclusterLayer); + loading.close(); + // new Cesium.GeoJsonDataSource.load( + // treeNode.urls + + // "?version=1.3.0&request=GetFeature&format=json&typename=" + + // treeNode.layer + // ) + // .then((dataSource) => { + // Viewer.dataSources.add(dataSource); + // clusterItemList.push({ name: treeNode.id, dataSource: dataSource }); + // // window.clusterItem = dataSource; + // // 璁剧疆鑱氬悎鍙傛暟 + // dataSource.clustering.enabled = true; + // window.dataClustering = dataSource.clustering; + // dataSource.clustering.pixelRange = 10; + // dataSource.clustering.minimumClusterSize = 10; + + // // foreach鐢ㄤ簬璋冪敤鏁扮粍鐨勬瘡涓厓绱狅紝骞跺皢鍏冪礌浼犻�掔粰鍥炶皟鍑芥暟銆� + // dataSource.entities.values.forEach((entity) => { + // if (entity.featureType == "yz浜曟暟鎹�") { + // switch (feature.properties["浜曠被鍨�"]) { + // default: + // imgUrl = treeNode.image; + // break; + // } + // } + // // 灏嗙偣鎷変几涓�瀹氶珮搴︼紝闃叉琚湴褰㈠帇鐩� + // entity.position._value.z += 10.0; + // // 浣跨敤澶у皬涓�64*64鐨刬con锛岀缉灏忓睍绀簆oi + // entity.billboard = { + // image: entity.featureType == "yz浜曟暟鎹�" ? imgUrl : treeNode.image, + // scale: treeNode.imageScale, + // width: 30, + // height: 30, + // distanceDisplayCondition: new Cesium.DistanceDisplayCondition( + // 0, + // 5000.0 + // ), + // disableDepthTestDistance: Number.POSITIVE_INFINITY, + // }; + // entity.tag = treeNode.id; + // // entity.label = { + // // // text: "POI", + // // font: "bold 15px Microsoft YaHei", + // // // 绔栫洿瀵归綈鏂瑰紡 + // // verticalOrigin: Cesium.VerticalOrigin.CENTER, + // // // 姘村钩瀵归綈鏂瑰紡 + // // horizontalOrigin: Cesium.HorizontalOrigin.LEFT, + // // // 鍋忕Щ閲� + // // pixelOffset: new Cesium.Cartesian2(15, 0), + // // }; + // }); + + // // 娣诲姞鐩戝惉鍑芥暟 + // dataSource.clustering.clusterEvent.addEventListener(function ( + // clusteredEntities, + // cluster + // ) { + // // 鍏抽棴鑷甫鐨勬樉绀鸿仛鍚堟暟閲忕殑鏍囩 + + // cluster.label.show = true; + // cluster.label.font = "bold 20px Microsoft YaHei"; + + // cluster.label.color = Cesium.Color.WHITE; + // cluster.label.outlineColor = Cesium.Color.BLACK; + // cluster.label.outlineWidth = 3.0; + // cluster.label.style = Cesium.LabelStyle.FILL_AND_OUTLINE; + // cluster.label.eyeOffset = new Cesium.Cartesian3(0, 0, -100); + // cluster.label.disableDepthTestDistance = Number.POSITIVE_INFINITY; + // cluster.billboard.disableDepthTestDistance = + // Number.POSITIVE_INFINITY; + // cluster.billboard.show = true; + // cluster.billboard.id = cluster.label.id; + // cluster.billboard.horizontalOrigin = Cesium.HorizontalOrigin.LEFT; + // cluster.billboard.verticalOrigin = Cesium.VerticalOrigin.CENTER; + // var reg1 = new RegExp(",", "g"); + // cluster.label.text = cluster.label.text.replace(reg1, ""); + // // 鏍规嵁鑱氬悎鏁伴噺鐨勫灏戣缃笉鍚屽眰绾х殑鍥剧墖浠ュ強澶у皬 + // if (clusteredEntities.length >= 10000) { + // // cluster.billboard.image = require("@/assets/img/right/test01.png"); + // cluster.billboard.image = require("@/assets/img/right/jh.png"); + // cluster.billboard.pixelOffset = new Cesium.Cartesian2(-20, -8); + // cluster.billboard.width = 95; + // cluster.billboard.height = 95; + // } else if (clusteredEntities.length >= 1000) { + // // cluster.billboard.image = require("@/assets/img/right/jh.png"); + // cluster.billboard.image = require("@/assets/img/right/test01.png"); + // cluster.billboard.pixelOffset = new Cesium.Cartesian2(-18, -10); + // // that.combineIconAndLabel( + // // require("@/assets/img/right/jh.png"), + // // clusteredEntities.length, + // // 192, + // // "test01" + // // ); + // cluster.billboard.width = 80; + // cluster.billboard.height = 80; + // } else if (clusteredEntities.length >= 100) { + // cluster.billboard.image = require("@/assets/img/right/jh.png"); + // // cluster.billboard.image = require("@/assets/img/right/test01.png"); + // cluster.billboard.pixelOffset = new Cesium.Cartesian2(-13, -8); + // // that.combineIconAndLabel( + // // require("@/assets/img/right/test01.png"), + // // clusteredEntities.length, + // // 192, + // // "test01" + // // ); + // cluster.billboard.width = 60; + // cluster.billboard.height = 60; + // } + // // else if (clusteredEntities.length >= 40) { + // // cluster.billboard.image = require("@/assets/img/right/test02.png"); + // // cluster.billboard.pixelOffset = new Cesium.Cartesian2(-0, 0); + // // // that.combineIconAndLabel( + // // // require("@/assets/img/right/test02.png"), + // // // clusteredEntities.length, + // // // 192, + // // // "test02" + // // // ); + // // cluster.billboard.width = 92; + // // cluster.billboard.height = 92; + // // } + // // else if (clusteredEntities.length >= 20) { + // // cluster.billboard.image = require("@/assets/img/right/test03.png"); + // // cluster.billboard.pixelOffset = new Cesium.Cartesian2(-15, 0); + // // // that.combineIconAndLabel( + // // // require("@/assets/img/right/test03.png"), + // // // clusteredEntities.length, + // // // 192, + // // // "test03" + // // // ); + // // cluster.billboard.width = 82; + // // cluster.billboard.height = 82; + // // } + // else if (clusteredEntities.length >= 10) { + // cluster.billboard.image = require("@/assets/img/right/jh.png"); + // // cluster.billboard.image = require("@/assets/img/right/test04.png"); + // cluster.billboard.pixelOffset = new Cesium.Cartesian2(-15, -8); + // cluster.billboard.width = 50; + // cluster.billboard.height = 50; + // } else { + // // cluster.billboard.image = require("@/assets/img/right/test04.png"); + // cluster.billboard.image = require("@/assets/img/right/jh.png"); + // cluster.billboard.pixelOffset = new Cesium.Cartesian2(-25, -10); + // cluster.billboard.width = 40; + // cluster.billboard.height = 40; + // } + // }); + // loading.close(); + // }) + // .catch((err) => { + // this.$message({ + // showClose: true, + // message: "鏁版嵁璇锋眰澶辫触", + // type: "error", + // offset: 80, + // }); + // loading.close(); + // }); + }, + testSDKcluster() { + let clusterLayer1 = new SmartEarth.ClusterLayer(Viewer, { + style: "clustering", + }); + axios + .get( + window.gisBaseUrl + + "/gisserver/wfsserver/qiyelianqiye?version=1.3.0&request=GetFeature&format=json&typename=浼佷笟閾句紒涓�" + ) + .then((res) => { + let positions = generatePosition(20000); + positions.forEach((item) => { + clusterLayer1.add(item, { + image: "./static/SmartEarthSDK/Workers/image/xzspj/qiye.png", + }); + }); + // res.data.features.forEach((item) => { + // clusterLayer1.add( + // new SmartEarth.Degrees( + // item.geometry.coordinates[0], + // item.geometry.coordinates[1] + // ), + // { + // 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", + // } + // ); + // }); + }); + }, + qiyeCluster(treeNode) { + if (treeNode.checked == false) { + window.map.removeLayer(window.qiyeclusterLayer); + return; + } + const loading = this.$loading({ + lock: true, + text: "Loading", + spinner: "el-icon-loading", + background: "rgba(0, 0, 0, 0.7)", + }); + // 鍔犺浇 GeoJSON 鏁版嵁 + var vectorSource = new Vector({ + format: new GeoJSON(), + url: + treeNode.urls + + "?version=1.3.0&request=GetFeature&format=json&typename=" + + treeNode.layer, + }); + + // 鍒涘缓鑱氬悎灞� + var clusterSource = new Cluster({ + distance: 40, + source: vectorSource, + }); + + // 鍒涘缓鑱氬悎鏄剧ず鏍峰紡 + var styleCache = {}; + window.qiyeclusterLayer = new VectorLayer({ + source: clusterSource, + style: function (feature) { + var size = feature.get("features").length; + if (size == 1) { + return new Style({ + image: new Icon({ + anchor: [0.5, 1], + src: treeNode.image, + }), + }); + } + if (size > 1000) { + var style = styleCache[size]; + if (!style) { + style = new Style({ + image: new Icon({ + // anchor: [0.5, 1], + scale: 0.4, + src: require("@/assets/img/right/test01.png"), + }), + text: new Text({ + text: size.toString(), + fill: new Fill({ + color: "#fff", + }), + }), + }); + styleCache[size] = style; + } + return style; + } + var style = styleCache[size]; + if (!style) { + style = new Style({ + image: new Icon({ + // anchor: [0.5, 1], + scale: 0.3, + src: require("@/assets/img/right/jh.png"), + }), + text: new Text({ + text: size.toString(), + fill: new Fill({ + color: "#fff", + }), + }), + }); + styleCache[size] = style; + } + return style; + // var style = styleCache[size]; + // if (!style) { + // style = new Style({ + // image: new Circle({ + // radius: 20, + // stroke: new Stroke({ + // color: "#fff", + // }), + // fill: new Fill({ + // color: "#3399CC", + // }), + // }), + // text: new Text({ + // text: size.toString(), + // fill: new Fill({ + // color: "#fff", + // }), + // }), + // }); + // styleCache[size] = style; + // } + // return style; + }, + }); + + // 灏嗚仛鍚堝眰鍔犲叆鍦板浘 + window.map.removeLayer(window.ldgclusterLayer); + window.map.removeLayer(window.tldgclusterLayer); + window.map.removeLayer(window.jkspclusterLayer); + window.map.addLayer(window.qiyeclusterLayer); + loading.close(); + + // let dataSource; + // if (treeNode.layer == "浼佷笟閾句紒涓�") { + // // console.log(store.qiyeJsonInfo); + // dataSource = store.qiyeJsonInfo; + // } + // Viewer.dataSources.add(dataSource); + // clusterItemList.push({ name: treeNode.id, dataSource: dataSource }); + // // window.clusterItem = dataSource; + // // 璁剧疆鑱氬悎鍙傛暟 + // dataSource.clustering.enabled = true; + // window.dataClustering = dataSource.clustering; + // dataSource.clustering.pixelRange = 10; + // dataSource.clustering.minimumClusterSize = 10; + // // foreach鐢ㄤ簬璋冪敤鏁扮粍鐨勬瘡涓厓绱狅紝骞跺皢鍏冪礌浼犻�掔粰鍥炶皟鍑芥暟銆� + // dataSource.entities.values.forEach((entity) => { + // if (entity.featureType == "yz浜曟暟鎹�") { + // switch (feature.properties["浜曠被鍨�"]) { + // default: + // imgUrl = treeNode.image; + // break; + // } + // } + // // 灏嗙偣鎷変几涓�瀹氶珮搴︼紝闃叉琚湴褰㈠帇鐩� + // entity.position._value.z += 10.0; + // // 浣跨敤澶у皬涓�64*64鐨刬con锛岀缉灏忓睍绀簆oi + // entity.billboard = { + // image: entity.featureType == "yz浜曟暟鎹�" ? imgUrl : treeNode.image, + // scale: treeNode.imageScale, + // width: 30, + // height: 30, + // distanceDisplayCondition: new Cesium.DistanceDisplayCondition( + // 0, + // 5000.0 + // ), + // disableDepthTestDistance: Number.POSITIVE_INFINITY, + // }; + // entity.tag = treeNode.id; + // }); + // // 娣诲姞鐩戝惉鍑芥暟 + // dataSource.clustering.clusterEvent.addEventListener(function ( + // clusteredEntities, + // cluster + // ) { + // // 鍏抽棴鑷甫鐨勬樉绀鸿仛鍚堟暟閲忕殑鏍囩 + + // var reg1 = new RegExp(",", "g"); + // cluster.label.text = cluster.label.text.replace(reg1, ""); + // cluster.label.show = true; + // cluster.label.font = "bold 20px Microsoft YaHei"; + // cluster.label.color = Cesium.Color.WHITE; + // cluster.label.outlineColor = Cesium.Color.BLACK; + // cluster.label.outlineWidth = 3.0; + // cluster.label.style = Cesium.LabelStyle.FILL_AND_OUTLINE; + // cluster.label.eyeOffset = new Cesium.Cartesian3(0, 0, -100); + // cluster.label.disableDepthTestDistance = Number.POSITIVE_INFINITY; + // // cluster.label.showBackground = false; + // // cluster.label.backgroundColor = new Cesium.Color.fromCssColorString( + // // "#30afff" + // // ); + // // cluster.label.style = Cesium.LabelStyle.FILL; + // // cluster.label.backgroundPadding = new Cesium.Cartesian2(5, 5); //璁剧疆鑳屾櫙鍐呰竟璺� + // cluster.billboard.disableDepthTestDistance = Number.POSITIVE_INFINITY; + // cluster.billboard.show = true; + // cluster.billboard.id = cluster.label.id; + // cluster.billboard.horizontalOrigin = Cesium.HorizontalOrigin.LEFT; + // cluster.billboard.verticalOrigin = Cesium.VerticalOrigin.CENTER; + // // 鏍规嵁鑱氬悎鏁伴噺鐨勫灏戣缃笉鍚屽眰绾х殑鍥剧墖浠ュ強澶у皬 + // if (clusteredEntities.length >= 10000) { + // cluster.billboard.image = require("@/assets/img/right/jh.png"); + // cluster.billboard.pixelOffset = new Cesium.Cartesian2(-20, -8); + // cluster.billboard.width = 95; + // cluster.billboard.height = 95; + // } else if (clusteredEntities.length >= 1000) { + // cluster.billboard.image = require("@/assets/img/right/jh.png"); + // cluster.billboard.pixelOffset = new Cesium.Cartesian2(-18, -10); + // cluster.billboard.width = 80; + // cluster.billboard.height = 80; + // } else if (clusteredEntities.length >= 100) { + // cluster.billboard.image = require("@/assets/img/right/jh.png"); + // cluster.billboard.pixelOffset = new Cesium.Cartesian2(-13, -8); + // cluster.billboard.width = 60; + // cluster.billboard.height = 60; + // } else if (clusteredEntities.length >= 10) { + // cluster.billboard.image = require("@/assets/img/right/jh.png"); + // cluster.billboard.pixelOffset = new Cesium.Cartesian2(-15, -8); + // cluster.billboard.width = 50; + // cluster.billboard.height = 50; + // } else { + // cluster.billboard.image = require("@/assets/img/right/jh.png"); + // cluster.billboard.pixelOffset = new Cesium.Cartesian2(-25, -10); + // cluster.billboard.width = 40; + // cluster.billboard.height = 40; + // } + // }); + }, + // initCluster(treeNode) { + // let that = this; + // let imgUrl; + // new Cesium.GeoJsonDataSource.load( + // treeNode.urls + + // "?version=1.3.0&request=GetFeature&format=json&typename=" + + // treeNode.layer + // ).then((dataSource) => { + // Viewer.dataSources.add(dataSource); + // clusterItemList.push({ name: treeNode.id, dataSource: dataSource }); + + // // window.clusterItem = dataSource; + + // // 璁剧疆鑱氬悎鍙傛暟 + // dataSource.clustering.enabled = true; + // window.dataClustering = dataSource.clustering; + // dataSource.clustering.pixelRange = 20; + // dataSource.clustering.minimumClusterSize = 20; + + // // foreach鐢ㄤ簬璋冪敤鏁扮粍鐨勬瘡涓厓绱狅紝骞跺皢鍏冪礌浼犻�掔粰鍥炶皟鍑芥暟銆� + // dataSource.entities.values.forEach((entity) => { + // if (entity.featureType == "yz浜曟暟鎹�") { + // switch (feature.properties["浜曠被鍨�"]) { + // default: + // imgUrl = treeNode.image; + // break; + // } + // } + // // 灏嗙偣鎷変几涓�瀹氶珮搴︼紝闃叉琚湴褰㈠帇鐩� + // entity.position._value.z += 50.0; + // // 浣跨敤澶у皬涓�64*64鐨刬con锛岀缉灏忓睍绀簆oi + // entity.billboard = { + // image: entity.featureType == "yz浜曟暟鎹�" ? imgUrl : treeNode.image, + + // scale: treeNode.imageScale, + // // width: 50, + // // height: 50, + // distanceDisplayCondition: new Cesium.DistanceDisplayCondition( + // 0, + // 5000.0 + // ), + // disableDepthTestDistance: Number.POSITIVE_INFINITY, + // }; + // entity.tag = treeNode.id; + // // entity.label = { + // // // text: "POI", + // // font: "bold 15px Microsoft YaHei", + // // // 绔栫洿瀵归綈鏂瑰紡 + // // verticalOrigin: Cesium.VerticalOrigin.CENTER, + // // // 姘村钩瀵归綈鏂瑰紡 + // // horizontalOrigin: Cesium.HorizontalOrigin.LEFT, + // // // 鍋忕Щ閲� + // // pixelOffset: new Cesium.Cartesian2(15, 0), + // // }; + // }); + + // // 娣诲姞鐩戝惉鍑芥暟 + // dataSource.clustering.clusterEvent.addEventListener(function ( + // clusteredEntities, + // cluster + // ) { + // // 鍏抽棴鑷甫鐨勬樉绀鸿仛鍚堟暟閲忕殑鏍囩 + // cluster.label.show = false; + // cluster.billboard.show = true; + // cluster.billboard.id = cluster.label.id; + // cluster.billboard.verticalOrigin = Cesium.VerticalOrigin.BOTTOM; + // // console.log("-----", cluster); + // // 鏍规嵁鑱氬悎鏁伴噺鐨勫灏戣缃笉鍚屽眰绾х殑鍥剧墖浠ュ強澶у皬 + // if (clusteredEntities.length >= 50) { + // cluster.billboard.image = that.combineIconAndLabel( + // require("@/assets/img/right/test01.png"), + // clusteredEntities.length, + // 192, + // "test01" + // ); + // cluster.billboard.width = 102; + // cluster.billboard.height = 102; + // } else if (clusteredEntities.length >= 40) { + // cluster.billboard.image = that.combineIconAndLabel( + // require("@/assets/img/right/test02.png"), + // clusteredEntities.length, + // 192, + // "test02" + // ); + // cluster.billboard.width = 92; + // cluster.billboard.height = 92; + // } else if (clusteredEntities.length >= 20) { + // cluster.billboard.image = that.combineIconAndLabel( + // require("@/assets/img/right/test03.png"), + // clusteredEntities.length, + // 192, + // "test03" + // ); + // cluster.billboard.width = 82; + // cluster.billboard.height = 82; + // } else { + // cluster.billboard.image = that.combineIconAndLabel( + // require("@/assets/img/right/test04.png"), + // clusteredEntities.length, + // 192, + // "test04" + // ); + // cluster.billboard.width = 62; + // cluster.billboard.height = 62; + // } + // }); + // }); + // }, + /** + * @description: 灏嗗浘鐗囧拰鏂囧瓧鍚堟垚鏂板浘鏍囦娇鐢� + * @param {*} url锛氬浘鐗囧湴鍧� + * @param {*} label锛氭枃瀛� + * @param {*} size锛氱敾甯冨ぇ灏� + * @return {*} 杩斿洖canvas + */ + combineIconAndLabel(url, label, size, val) { + // 鍒涘缓鐢诲竷瀵硅薄 + let canvas = document.createElement("canvas"); + canvas.width = size; + canvas.height = size; + + let ctx = canvas.getContext("2d"); + let promise = new Cesium.Resource.fetchImage(url).then((image) => { + // 寮傚父鍒ゆ柇 + try { + ctx.drawImage(image, 0, 0); + } catch (e) { + console.log(e); + } + // console.log("-----", ctx); + // 娓叉煋瀛椾綋 + ctx.fillStyle = Cesium.Color.WHITE.toCssColorString(); + if (val.indexOf("jh") != -1) { + ctx.font = "bold 15px Microsoft YaHei"; + } else if (val.indexOf("jh") != -1) { + ctx.font = "bold 15px jh YaHei"; + } else if (val.indexOf("test03") != -1) { + ctx.font = "bold 15px Microsoft YaHei"; + } else if (val.indexOf("test04") != -1) { + ctx.font = "bold 15px Microsoft YaHei"; + } + ctx.textAlign = "center"; + ctx.textBaseline = "middle"; + ctx.fillText(label, size / 3, size / 2.7); + + return canvas.toDataURL("image/png"); + }); + return promise; + }, + back() { + store.setLayerTreeShow(false); + }, + }, + watch: { + "state.itemId": { + handler: function (newVal, oldVal) { + console.log("state.itemId"); + if (oldVal != "") { + oldVal.forEach((item) => { + this.setVisiable(item, false); + }); + } + if (newVal != "") { + newVal.forEach((item) => { + this.setVisiable(item, true); + }); + } + }, + }, + }, +}; +</script> + +<style scoped> +.layerTreePanel { + position: absolute; + color: black; + width: 100%; + height: 100%; + background-color: white; + z-index: 1001; +} + +.layerTreeContainer { + /* margin-top: 0.2rem; */ + padding: 0.1rem; +} + +.title { + height: 35px; + font-size: 16px; + font-family: Source Han Sans SC; + font-weight: 700; + color: #888888; + line-height: 25px; + margin: 10px 0px 10px 0; + border-bottom: 1px solid #e5e5e6; +} +.treeContainer { + height: 82vh; + overflow: auto; +} +</style> \ No newline at end of file diff --git a/src/components/sideMenu/layerTreePanel/main2.vue b/src/components/sideMenu/layerTreePanel/main2.vue new file mode 100644 index 0000000..0d3f8bf --- /dev/null +++ b/src/components/sideMenu/layerTreePanel/main2.vue @@ -0,0 +1,23 @@ +<template> + <div v-show="state.show"> + <layerTreePanel></layerTreePanel> + </div> +</template> + +<script> +import store from "@/utils/store2.js"; +import layerTreePanel from "./layerTreePanel2.vue"; +export default { + components: { + layerTreePanel, + }, + data() { + return { + state: store.layerTree, + }; + }, +}; +</script> + +<style> +</style> \ No newline at end of file diff --git a/src/components/viewer.vue b/src/components/viewer.vue index ab57aa2..277feaa 100644 --- a/src/components/viewer.vue +++ b/src/components/viewer.vue @@ -101,7 +101,7 @@ "my-layer-tree-panel": layerTreePanel, "my-history": history, "my-land-admin-info": landAdminInfo, - "my-slider":sliderAlpha + "my-slider": sliderAlpha, }, data() { return { @@ -170,7 +170,7 @@ Viewer.shadows = false; Viewer.scene.fxaa = false; Viewer.scene.postProcessStages.fxaa.enabled = false; - window.Viewer.scene.globe.maximumScreenSpaceError = 4/3; + window.Viewer.scene.globe.maximumScreenSpaceError = 4 / 3; that.showBottom(); window.Viewer.scene.screenSpaceCameraController.minimumZoomDistance = 100; //鐩告満鐨勯珮搴︾殑鏈�灏忓�� // window.Viewer.scene.screenSpaceCameraController.maximumZoomDistance = 38000; //鐩告満楂樺害鐨勬渶澶у�� diff --git a/src/components/viewer2.vue b/src/components/viewer2.vue index 5937e50..158d9f6 100644 --- a/src/components/viewer2.vue +++ b/src/components/viewer2.vue @@ -14,9 +14,9 @@ <img class="searchBtn" src="@/assets/closeinput1.png" /> </div> --> <!-- 鍙充晶瀵艰埅妗� --> - <!-- <my-navigation-bar></my-navigation-bar> --> + <my-navigation-bar></my-navigation-bar> <!-- 鎼滅储妗� --> - <!-- <my-sousuo v-if="!state.show" v-show="childrendata.ssval"></my-sousuo> --> + <my-sousuo v-if="!state.show" v-show="childrendata.ssval"></my-sousuo> <!-- 鍙充笂蹇嵎鍖哄煙锛堝伐绋嬫爲銆佺┖闂村垎鏋愶級 --> <!-- <div class="right-top"> <my-layertree :rightshowzy="childrendata"></my-layertree> @@ -24,47 +24,47 @@ <!-- 鍘熷乏涓嬭彍鍗� --> <!-- <my-menu v-on:getshowsta="datafromchild" ref="menu"></my-menu> --> <!-- 宸︿笅蹇嵎鍖哄煙锛堝浣嶃�佹寚鍖楃瓑锛� --> - <!-- <my-left-bottom :test="childrendata"></my-left-bottom> --> + <my-left-bottom :test="childrendata"></my-left-bottom> <!-- 鍙充笅蹇嵎鍖哄煙锛堟斁澶х缉灏忥級 --> - <!-- <my-right-bottom :test="childrendata"></my-right-bottom> --> + <my-right-bottom :test="childrendata"></my-right-bottom> <!-- 鍚勭闈㈡澘 --> <!-- 璁剧疆闈㈡澘 --> - <!-- <my-setting-panel></my-setting-panel> --> + <my-setting-panel></my-setting-panel> <!-- 浣嶇疆闈㈡澘 --> - <!-- <my-collection-panel></my-collection-panel> --> + <my-collection-panel></my-collection-panel> <!-- 鎸囧寳閽堥潰鏉� --> <!-- <my-direction-panel></my-direction-panel> --> <!-- 鏂板鏀惰棌闈㈡澘 --> - <!-- <my-add-collection-panel></my-add-collection-panel> --> + <my-add-collection-panel></my-add-collection-panel> <!-- 绐ㄤ簳銆佹憚鍍忓ご缁熻闈㈡澘 --> - <!-- <my-statistics-panel></my-statistics-panel> --> + <my-statistics-panel></my-statistics-panel> <!-- 绐ㄤ簳缁熻鍒嗘瀽闈㈡澘 --> - <!-- <my-manhole-panel></my-manhole-panel> --> + <my-manhole-panel></my-manhole-panel> <!-- 鎽勫儚澶寸粺璁″垎鏋愰潰鏉� --> - <!-- <my-video-panel></my-video-panel> --> + <my-video-panel></my-video-panel> <!-- 鍥惧眰闈㈡澘 --> - <!-- <my-layer-panel></my-layer-panel> --> + <my-layer-panel></my-layer-panel> <!-- 婕父闈㈡澘 --> - <!-- <my-roam-panel></my-roam-panel> --> + <my-roam-panel></my-roam-panel> <!-- 鍥惧眰鏍戦潰鏉� --> - <!-- <my-layer-tree-panel></my-layer-tree-panel> --> + <my-layer-tree-panel></my-layer-tree-panel> <!-- 鍦熷湴绠$悊寮圭獥 --> - <!-- <my-land-admin-info></my-land-admin-info> - <my-slider></my-slider> --> + <my-land-admin-info></my-land-admin-info> + <my-slider></my-slider> </div> </template> <script> -import store from "@/utils/store.js"; +import store from "@/utils/store2.js"; -import _GLOBAL from "@/assets/GLOBAL"; +import _GLOBAL from "@/assets/GLOBAL2"; import { leftClick, loadLayer } from "@/utils/map.js"; -import leftBottom from "@/components/leftMenu/bottom.vue"; -import rightBottom from "@/components/rightMenu/bottom.vue"; -import sousuo from "@/components/leftMenu/sousuo.vue"; +import leftBottom from "@/components/leftMenu/bottom2.vue"; +import rightBottom from "@/components/rightMenu/bottom2.vue"; +import sousuo from "@/components/leftMenu/sousuo2.vue"; import menu from "@/components/menu/menu.vue"; -import NavigationBar from "./rightNavigation/NavigationBar.vue"; -import layertree from "@/components/rightMenu/layerTree.vue"; +import NavigationBar from "./rightNavigation/NavigationBar2.vue"; +import layertree from "@/components/rightMenu/layerTree2.vue"; import settingPanel from "./sideMenu/settingMenu/main.vue"; import collectionPanel from "./sideMenu/collectionMenu/main.vue"; import directionPanel from "./sideMenu/directionMenu/main.vue"; @@ -74,7 +74,7 @@ import videoPanel from "./sideMenu/videoStatistics/main.vue"; import layerPanel from "./sideMenu/layerMenu/main2.vue"; import roamPanel from "./sideMenu/roamPanel/main.vue"; -import layerTreePanel from "./sideMenu/layerTreePanel/main.vue"; +import layerTreePanel from "./sideMenu/layerTreePanel/main2.vue"; import history from "./poplayer/history.vue"; import landAdminInfo from "./poplayer/landAdmin.vue"; import sliderAlpha from "./sideMenu/sliderAlpha/main.vue"; @@ -83,19 +83,10 @@ import Map from "ol/Map.js"; import TileLayer from "ol/layer/Tile.js"; import View from "ol/View.js"; -import { - get as getProjection, - getTransform -} from 'ol/proj'; -import { - getWidth, - getTopLeft, - applyTransform -} from 'ol/extent'; -import - WMTS - from 'ol/source/WMTS'; -import WMTSTileGrid from 'ol/tilegrid/WMTS'; +import { get as getProjection, getTransform } from "ol/proj"; +import { getWidth, getTopLeft, applyTransform } from "ol/extent"; +import WMTS from "ol/source/WMTS"; +import WMTSTileGrid from "ol/tilegrid/WMTS"; export default { name: "viewer2", @@ -144,19 +135,28 @@ created() {}, mounted() { this.$nextTick(function () { - - console.log('openlayer init'); + console.log("openlayer init"); + + Map.prototype.getLayerByName = function (name) { + var layer; + this.getLayers().array_.forEach(function (lyr) { + if (name == lyr.values_.name) { + layer = lyr; + } + }); + return layer; + }; const layers = []; - const TDTKey = 'f234b950740b8c2e0d9959a51c169d21'; - const tiandituUrl = 'http://t0.tianditu.gov.cn'; - let options = {proj:'EPSG:4326',layer:'cia',matrixSets:"c"}; + const TDTKey = "f234b950740b8c2e0d9959a51c169d21"; + const tiandituUrl = "http://t0.tianditu.gov.cn"; + let options = { proj: "EPSG:4326", layer: "img", matrixSets: "c" }; let _proj = options.proj; let _layer = options.layer; let _key = TDTKey; let _matrixSets = options.matrixSets; - + let projection = getProjection(_proj); let projectionExtent = projection.getExtent(); let origin = projectionExtent ? getTopLeft(projectionExtent) : [-180, 90]; @@ -176,7 +176,10 @@ resolutions: resolutions, matrixIds: matrixIds, }); - console.log('url:',`${tiandituUrl}/${_layer}_${_matrixSets}/wmts?tk=${_key}`); + console.log( + "url:", + `${tiandituUrl}/${_layer}_${_matrixSets}/wmts?tk=${_key}` + ); let wmtsSource = new WMTS({ url: `${tiandituUrl}/${_layer}_${_matrixSets}/wmts?tk=${_key}`, layer: _layer, @@ -189,13 +192,14 @@ tileGrid: wmtsTileGrid, }); let wmtsLayer = new TileLayer({ + name: "褰卞儚鍦板浘", id: _layer + "_" + _matrixSets, source: wmtsSource, }); let wmtsSource1 = new WMTS({ - url: `${tiandituUrl}/img_${_matrixSets}/wmts?tk=${_key}`, - layer: 'img', + url: `${tiandituUrl}/cia_${_matrixSets}/wmts?tk=${_key}`, + layer: "cia", version: "1.0.0", matrixSet: _matrixSets, format: "tiles", @@ -205,24 +209,46 @@ tileGrid: wmtsTileGrid, }); let wmtsLayer1 = new TileLayer({ - id: _layer + "_" + _matrixSets, + name: "璺綉鍥惧眰", + id: "cia_c", source: wmtsSource1, }); - layers.push(wmtsLayer1); + + let wmtsSource2 = new WMTS({ + url: `${tiandituUrl}/vec_c/wmts?tk=${_key}`, + layer: "vec", + version: "1.0.0", + matrixSet: _matrixSets, + format: "tiles", + projection: projection, + requestEncoding: "KVP", + style: "default", + tileGrid: wmtsTileGrid, + }); + let wmtsLayer2 = new TileLayer({ + name: "浜岀淮鍦板浘", + id: "cva_c", + source: wmtsSource2, + }); + wmtsLayer2.setVisible(false); + ////鍗槦褰卞儚 layers.push(wmtsLayer); - - + ////浜岀淮鍦板浘 + layers.push(wmtsLayer2); + ////璺綉 + layers.push(wmtsLayer1); const map = new Map({ layers: layers, target: "openlayerContainer", view: new View({ - center: [-6655.5402445057125, 6709968.258934638], + center: [116.505348, 39.795592], + projection: "EPSG:4326", zoom: 12, }), }); - + window.map = map; window.layerOpen = function (name, options) { layuiLayer.close(SmartEarthPopupData.layerProp); diff --git a/src/utils/map.js b/src/utils/map.js index fd9327b..097ebc7 100644 --- a/src/utils/map.js +++ b/src/utils/map.js @@ -4,7 +4,7 @@ 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 tdglLine, qiyexinxi, qysl, ydbm, ydlx, cyfx, jszt, ydmj, crnx, crnf, rjl, jzxg, jzmd; let objdata; window.tdglLine = tdglLine @@ -450,7 +450,8 @@ 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.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.gisBaseUrl + "cs/geowinmap_xncs/ds?&lng=" + window.clickPOI.lon + "&lat=" + window.clickPOI.lat + @@ -497,7 +498,8 @@ axios .get( // "http://10.10.4.115:8022//poisearch/guihuacon/getInfo?ydbm=" + - window.gisBaseUrl + "yzxncsApi/poisearch/guihuacon/getInfo?ydbm=" + + // window.gisBaseUrl + "yzxncsApi/poisearch/guihuacon/getInfo?ydbm=" + + window.gisBaseUrl + "cs/poisearch/guihuacon/getInfo?ydbm=" + response.data.NO ) .then( @@ -514,7 +516,8 @@ qiyexinxi = info.data.data.qiyexinxi; qysl = data.qiyexinxi.length; if (qysl > 0) { - ydbm = data.qiyexinxi[0]["鍦板潡缂栧彿"]; + // ydbm = data.qiyexinxi[0]["鍦板潡缂栧彿"]; + ydbm = data.qiyexinxi[0]["ydbh"]; } else { ydbm = data.churangxinxi["ydbh"]; } @@ -525,15 +528,15 @@ cyfx = data.yongdishuju["cyfx"]; } catch (e) { } try { - // this.crzt = response.data["ZT"]; - switch (response.data["ZT"]) { - case 3: - crzt = "宸插嚭璁�"; - break; - case 4: - crzt = "鏈嚭璁�"; - break; - } + jszt = response.data["ZT"]; + // switch (response.data["ZT"]) { + // case "宸插缓": + // jszt = "宸插嚭璁�"; + // break; + // case "鍦ㄥ缓": + // jszt = "鏈嚭璁�"; + // break; + // } } catch (e) { } try { ydmj = parseFloat( @@ -560,7 +563,7 @@ ydbm, ydlx, cyfx, - crzt, + jszt, ydmj, ydbm, crnx, diff --git a/src/utils/map2.js b/src/utils/map2.js new file mode 100644 index 0000000..d9bef5e --- /dev/null +++ b/src/utils/map2.js @@ -0,0 +1,2193 @@ +import Vue from 'vue'; +import axios from "axios"; +import _GLOBAL from '@/assets/GLOBAL2'; +import poiLayer from '@/components/poplayer/main'; +import store from "@/utils/store2"; +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: {//璁剧疆鐩告満鐨凥eading锛孭itch锛孯oll锛屽弬鐓т笂鍥� + 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: {//璁剧疆鐩告満鐨凥eading锛孭itch锛孯oll锛屽弬鐓т笂鍥� + 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: {//璁剧疆鐩告満鐨凥eading锛孭itch锛孯oll锛屽弬鐓т笂鍥� + 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 => { + // 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: {//璁剧疆鐩告満鐨凥eading锛孭itch锛孯oll锛屽弬鐓т笂鍥� + 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 => { +// // 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: {//璁剧疆鐩告満鐨凥eading锛孭itch锛孯oll锛屽弬鐓т笂鍥� +// 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 => { + 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: {//璁剧疆鐩告満鐨凥eading锛孭itch锛孯oll锛屽弬鐓т笂鍥� + 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); + // if (nPickFeature == undefined) { + // window.flyPoint && Viewer.entities.remove(window.flyPoint); + // window.flyPoint = undefined; + // } + // 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 || nPickFeature.id.show) { + 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 = { + // 鐐逛綅绫诲瀷锛堜腑鑻辨枃閰嶇疆琛╬oiKeys.js) + 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, + } + } else if (propertyNames.includes("id")) { + objdata = { + POITYPE: "POINT", + name: properties["_name"]._value, + address: properties["_address"]._value, + lat: properties["_lat"]._value, + lon: properties["_lng"]._value, + } + } + 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) { + console.log('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, + minificationFilter: Cesium.TextureMinificationFilter.NEAREST_MIPMAP_LINEAR, + magnificationFilter: Cesium.TextureMinificationFilter.NEAREST_MIPMAP_LINEAR, + 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, // 鏄惁浣跨敤鏈嶅姟鐨勫唴缃殑鍒囩墖鏂规锛屽亸绉荤籂姝i渶瑕佷娇鐢ㄥ涓嬭嚜瀹氫箟鐨勬柟妗� + 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); + }) + } +} diff --git a/src/utils/poiKeys.js b/src/utils/poiKeys.js index 6311f74..4555419 100644 --- a/src/utils/poiKeys.js +++ b/src/utils/poiKeys.js @@ -17,7 +17,7 @@ 鐢ㄥ湴缂栫爜: 'ydbm', 鐢ㄥ湴绫诲瀷: 'ydlx', 浜т笟鏂瑰悜: 'cyfx', - 鍑鸿鐘舵��: 'crzt', + 寤鸿鐘舵��: 'jszt', 鐢ㄥ湴闈㈢Н: 'ydmj', 鍑鸿骞撮檺: 'crnx', 鍑鸿骞翠唤: 'crnf', diff --git a/src/utils/store2.js b/src/utils/store2.js new file mode 100644 index 0000000..b5fcfde --- /dev/null +++ b/src/utils/store2.js @@ -0,0 +1,174 @@ +const store = { + /**鍦板潃椤甸潰 */ + locationCollection: { + show: false + }, + setLocationCollectionShow(val) { + this.locationCollection.show = val; + }, + /**璁剧疆椤甸潰 */ + settingPanel: { + show: false + }, + setSettingPanelShow(val) { + this.settingPanel.show = val; + }, + /**缁熻椤甸潰 */ + statisticsPanel: { + show: false + }, + setStatisticsPanelShow(val) { + this.statisticsPanel.show = val; + }, + /**绐ㄤ簳缁熻 */ + manholeStatistics: { + show: false + }, + setManholeStatisticsShow(val) { + this.manholeStatistics.show = val; + }, + /**鎽勫儚澶寸粺璁� */ + videoStatistics: { + show: false + }, + setVideoStatisticsShow(val) { + this.videoStatistics.show = val; + }, + /*鍙充笂瑙掕彍鍗�*/ + MenuList: { + show: false + }, + setMenuListShow(val) { + this.MenuList.show = val; + }, + /**鍥惧眰椤甸潰 */ + layerPanel: { + show: false + }, + setLayerPanelShow(val) { + this.layerPanel.show = val; + }, + /**婕父闈㈡澘 */ + roamPanel: { + show: false + }, + setRoamPanelShow(val) { + this.roamPanel.show = val; + }, + /**澶嶄綅蹇嵎鏂瑰紡 */ + resetLink: { + show: true + }, + setResetLinkShow(val) { + this.resetLink.show = val; + }, + /**鎸囧寳閽堝揩鎹锋柟寮� */ + pointLink: { + show: true + }, + setPointLinkShow(val) { + this.pointLink.show = val; + }, + /**鍏ㄥ睆蹇嵎鏂瑰紡 */ + fullScreen: { + show: false + }, + setFullScreenShow(val) { + this.fullScreen.show = val; + }, + /**鏀惰棌蹇嵎鏂瑰紡 */ + favorite: { + show: false + }, + setFavoriteShow(val) { + this.favorite.show = val; + }, + /**娣诲姞鏀惰棌椤甸潰 */ + addFavorite: { + show: false + }, + setAddFavoriteShow(val) { + this.addFavorite.show = val; + }, + /**鎼滅储妗� */ + searchPanel: { + show: true, + }, + setSearchPanelShow(val) { + this.searchPanel.show = val; + }, + Poplayer: { + list: {}, + show: false + }, + setPoplayerListAction(newValue) { + this.Poplayer.list = newValue + }, + setPoplayerShowAction(newValue) { + this.Poplayer.show = newValue + }, + /** + * 涓撻鍥惧眰閫夋嫨鎯呭喌 + */ + thematicLayer: { + itemId: '' + }, + setThematicLayerItemId(val) { + this.thematicLayer.itemId = val; + }, + /** + * 鍥惧眰鏍� + */ + layerTree: { + show: false + }, + setLayerTreeShow(val) { + this.layerTree.show = val; + }, + /** + * 鍦熷湴绠$悊 + */ + tdglInfo: { + flag: false, + show: false, + sliderShow: false, + alpha: 1, + info: {} + }, + setAlpha(val) { + this.tdglInfo.alpha = val; + }, + setSliderShow(val) { + this.tdglInfo.sliderShow = val; + }, + setTdglFlag(val) { + this.tdglInfo.flag = val; + }, + setTdglShow(val) { + this.tdglInfo.show = val; + }, + setTdlgInfo(val) { + this.tdglInfo.info = val; + }, + /** + * 鍘嗗彶褰卞儚 + */ + history: { + show: false, + }, + setHistoryShow(val) { + this.history.show = val; + }, + qiyeJsonInfo: {}, + /* + 鍩虹鍥惧眰閫夋嫨鎯呭喌 + */ + basicMapChecked: { + val: "", + }, + setBasicMap(val) { + this.basicMapChecked.val = val; + } +}; + +export default store; \ No newline at end of file diff --git a/src/utils/ztt2.js b/src/utils/ztt2.js new file mode 100644 index 0000000..75e148c --- /dev/null +++ b/src/utils/ztt2.js @@ -0,0 +1,21 @@ +const ZTTitem = [ + { + id: "shipinjiankong", + name: "瑙嗛鐩戞帶", + active: false, + src: require("@/assets/img/layer/shipinjiankong.png"), + }, + { + id: "qiyexinxi", + name: "浼佷笟淇℃伅", + active: false, + src: require("@/assets/img/layer/qiyefenbu.png"), + }, + { + id: "shizhengganti", + name: "甯傛斂鏉嗕綋", + active: false, + src: require("@/assets/img/layer/shizhengganti.png"), + }, +] +export default ZTTitem \ No newline at end of file diff --git a/static/json/layer.js b/static/json/layer.js index 6c2dfa2..eb8c80f 100644 --- a/static/json/layer.js +++ b/static/json/layer.js @@ -365,7 +365,7 @@ "id": "chengshiguihua_dikuaibianhao_tms", "name": "浜﹀簞鏂板煄瑙勫垝鍥�", "sourceType": "local-map", - "urls": "https://skyzt.bda.gov.cn/gisserver/tmsserver/chengshiguihua_dikuaibianhao_tms", + "urls": "https://skyzt.bda.gov.cn/gisserver/tmsserver/chengshiguihua_dikuaibianhao_tms/", "tile": "{z}/{x}/{y}", "tileType": "Mercator", "img": "jpeg", @@ -563,7 +563,7 @@ }, { "id": "ludenggan", - "sourceType": "cluster", + "sourceType": "ldgcluster", "alpha": 1, "name": "璺伅鏉� ", "class": "point", @@ -588,7 +588,7 @@ }, { "id": "lumingpaigan", - "sourceType": "cluster", + "sourceType": "ldgcluster", "alpha": 1, "name": "璺悕鐗屾潌", "class": "point", diff --git a/static/json/layers.json b/static/json/layers.json index be26f73..768942e 100644 --- a/static/json/layers.json +++ b/static/json/layers.json @@ -334,7 +334,7 @@ "children": [ { "id": "ludenggan", - "sourceType": "cluster", + "sourceType": "ldgcluster", "alpha": 1, "name": "璺伅鏉� ", "class": "point", -- Gitblit v1.9.3