From 023e57a24b3ce05de8a8921387538ec7558f8fd3 Mon Sep 17 00:00:00 2001 From: 少年 <1392120328@qq.com> Date: 星期二, 06 二月 2024 17:27:51 +0800 Subject: [PATCH] 11 --- src/components/viewer2.vue | 63 + src/components/poplayer/poplayer2.vue | 138 +++ src/components/poplayer/main2.vue | 26 src/utils/map2.js | 44 src/utils/map2 copy.js | 2331 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 2,552 insertions(+), 50 deletions(-) diff --git a/src/components/poplayer/main2.vue b/src/components/poplayer/main2.vue new file mode 100644 index 0000000..89169de --- /dev/null +++ b/src/components/poplayer/main2.vue @@ -0,0 +1,26 @@ +<template> + <div v-if="state.show"> + <poplayer :list="list" /> + </div> +</template> + +<script> +import poplayer from "./poplayer2.vue"; +import store from "@/utils/store"; +export default { + name: "Main", + components: { + poplayer, + }, + data() { + return { + state: store.Poplayer, + }; + }, + mounted() { + }, +}; +</script> + +<style scoped> +</style> diff --git a/src/components/poplayer/poplayer2.vue b/src/components/poplayer/poplayer2.vue new file mode 100644 index 0000000..f045059 --- /dev/null +++ b/src/components/poplayer/poplayer2.vue @@ -0,0 +1,138 @@ +<template> + <div style="z-index: 100000000"> + <div class="Poplayer"> + <div class="close" @click.stop="closehandle"></div> + <div class="title">鐐逛綅璇︽儏</div> + <div class="content"> + <div class="con-item" v-for="(item, index) in KEY" :key="index"> + <span class="name">{{ index }}锛�</span> + <span class="value">{{ state.list[item] }}</span> + </div> + </div> + </div> + </div> +</template> + +<script> +import store from "@/utils/store2"; +import keys from "@/utils/poiKeys"; +export default { + name: "Main", + components: {}, + props: { + keys: { + type: Object, + }, + list: { + type: Object, + }, + }, + data() { + return { + state: store.Poplayer, + KEY: {}, + }; + }, + computed: {}, + mounted() { + if (this.list) { + this.state.list = this.list; + } + this.KEY = keys[this.state.list.POITYPE]; + }, + watch: { + "state.list": function (val) { + this.KEY = keys[val.POITYPE]; + }, + }, + methods: { + closehandle() { + if (window.pickFeature && window.pickFeature.primitive) { + window.pickFeature.primitive.image = window.imgUrl; + window.pickFeature = null; + } + store.setPoplayerListAction({}); + divPoint3 && divPoint3.deleteObject(); + store.setPoplayerShowAction(false); + if (window.tdglLine) { + sgworld.Creator.DeleteObject(window.tdglLine); + window.tdglLine = null; + } + }, + }, +}; +</script> + +<style scoped> +.Poplayer { + /* min-width: 350px; */ + width: 80vw; + /* min-height: 180px; */ + background-repeat: no-repeat; + background-size: 100% 100%; + background-image: url("./img/bg.png"); + z-index: 999; + color: #fff; + font-family: SourceHanSansSC-R; + /* padding: 20px; */ + padding: 10px 5px 10px 5px; + box-sizing: border-box; + font-size: 16px; + pointer-events: all; +} + +.title { + text-align: center; + font-size: 20px; + font-weight: 700; + letter-spacing: 4px; + padding-left: 26px; +} + +/* .title { + display: none; + width: 100%; + height: 30px; + line-height: 30px; + padding-left: 20px; + margin-top: 10px; +} */ + +.close { + pointer-events: all; + width: 28px; + height: 28px; + background-repeat: no-repeat; + background-size: 100% 100%; + background-image: url("./img/close.png"); + float: right; + margin-top: 8px; + margin-right: 5px; + cursor: pointer; +} + +.content { + width: 100%; + margin: auto; +} + +.con-item { + width: 90%; + overflow: hidden; + margin-bottom: 7px; + margin-left: 25px; + margin-right: 20px; + word-break: break-all; +} + +.name { + /* min-width: 100px; */ + float: left; +} + +.value { + max-width: 400px; + float: left; + color: aqua; +} +</style> diff --git a/src/components/viewer2.vue b/src/components/viewer2.vue index bd213aa..b8e22f5 100644 --- a/src/components/viewer2.vue +++ b/src/components/viewer2.vue @@ -4,8 +4,9 @@ <div id="openlayerContainer" @click="clicktoclose"></div> <div id="ponitPanel"> + <div id="ponitPanel-close" @click.stop="closehandle"></div> <div class="title">鐐逛綅璇︽儏</div> - <div class="content"> + <div id="ponitPanel-content"> </div> @@ -86,7 +87,7 @@ import layerTreePanel from "./sideMenu/layerTreePanel/main2.vue"; import history from "./poplayer/history.vue"; import landAdminInfo from "./poplayer/landAdmin.vue"; -import poplayer from "./poplayer/main.vue"; +import poplayer from "./poplayer/main2.vue"; import sliderAlpha from "./sideMenu/sliderAlpha/main.vue"; import Axios from "axios"; @@ -184,7 +185,7 @@ resolutions[z] = width / (256 * Math.pow(2, z)); matrixIds[z] = z; } - let wmtsTileGrid = new ol.tilegrid.WMTS({ + let wmtsTileGrid = new ol.tilegrid.WMTS({ origin: origin, resolutions: resolutions, matrixIds: matrixIds, @@ -265,7 +266,7 @@ setClick(true) // var url = // "https://skyzt.bda.gov.cn/gisserver/tmsserver/chengshiguihua_dikuaibianhao_tms/"; - + // var tmslayer = new ol.layer.Tile({ // source: new ol.source.XYZ({ // projection: projection, @@ -418,7 +419,7 @@ width: 100%; height: 100%; background: black; - position: absolute !important; + /* position: absolute !important; */ z-index: 0; } @@ -456,7 +457,7 @@ } #ponitPanel { - display: none; + /* display: none; */ width: 80vw; background-repeat: no-repeat; background-size: 100% 100%; @@ -465,13 +466,55 @@ color: #fff; font-family: SourceHanSansSC-R; padding: 10px 5px 10px 5px; - box-sizing: border-box; font-size: 16px; pointer-events: all; - position: absolute; - bottom: 12px; - left: -50px; +} + +.title { + width: 100%; + text-align: center; + font-size: 20px; + font-weight: 700; + letter-spacing: 4px; + padding-left: 26px; } +#ponitPanel-close { + pointer-events: all; + width: 28px; + height: 28px; + background-repeat: no-repeat; + background-size: 100% 100%; + background-image: url("./poplayer/img/close.png"); + margin-top: 8px; + margin-right: 5px; + float: right; + cursor: pointer; +} + +#ponitPanel-content { + width: 100%; + margin: auto; +} + +.ponitPanel-item { + width: 90%; + overflow: hidden; + margin-bottom: 7px; + margin-left: 25px; + margin-right: 20px; + word-break: break-all; +} + +.ponitPanel-name { + /* min-width: 100px; */ + float: left; +} + +.ponitPanel-value { + max-width: 400px; + float: left; + color: aqua; +} </style> diff --git a/src/utils/map2 copy.js b/src/utils/map2 copy.js new file mode 100644 index 0000000..89f6cf8 --- /dev/null +++ b/src/utils/map2 copy.js @@ -0,0 +1,2331 @@ +// import { Feature } from "ol"; +// import VectorLayer from "ol/layer/Vector"; +// import VectorSource from "ol/source/Vector"; +// import { Style, Icon, Fill, Stroke, Text, Circle as CircleStyle } from "ol/style"; +// import { Point, LineString } from "ol/geom"; +// import Overlay from 'ol/Overlay.js'; +// import { unByKey } from "ol/Observable.js"; //绉婚櫎浜嬩欢 +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; +var clickEvent; + +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); + }) + } +} + + +var pointArr = []; +//openlayer 鍒涘缓鐐逛綅 +export function createPointMarker(position, obj) { + let startFeature = new ol.Feature({ + geometry: new ol.geom.Point(position), + }); + startFeature.setProperties({ + desc: obj, + }); + + if(pointArr && pointArr.length > 0){ + pointArr.forEach(item=>{ + window.map.removeLayer(item); + }) + pointArr = [] + } + let MarkerLayer = new ol.layer.Vector({ + id: 'LocationPoint', + name: '鏍囪鐐�', + source: new ol.source.Vector({ + features: [startFeature], + }), + style: new ol.style.Style({ + image: new ol.style.Icon({ + src: require('@/assets/img/collection/scdw.png'), + anchorOrigin: "top-left", + anchorXUnits: "fraction", + anchorYUnits: "fraction", + offsetOrigin: "bottom-right", + scale: 0.6, + opacity: 1, + }) + }), + zIndex: 1099, + }) + pointArr.push(MarkerLayer) + return MarkerLayer; +} + +//openlayer 鍦板浘鐐瑰嚮浜嬩欢 +export function setClick(state) { + let container = document.getElementById('ponitPanel'); + let close = document.getElementById('ponitPanel-close'); + let content = document.getElementById('ponitPanel-content'); + + let overlay = new ol.Overlay({ + element: container, + autoPan: { + animation: { + duration: 250, + }, + }, + }); + window.map.addOverlay(overlay); + + // let _clickCallback = callback; + function handleClick(e) { + window.map.forEachFeatureAtPixel(e.pixel, function (feature) { + // console.log(feature, '111111') + if (feature && feature.values_.desc) { + ponitPanel.style.display = 'block' + let obj = feature.values_.desc + // content.innerHTML = ` + // <div class="ponitPanel-item"> + // <span>鍚嶇О锛�</span> + // <span>${obj.name}</span> + // </div> + // <div class="ponitPanel-item"> + // <span>鍦板潃锛�</span> + // <span>${obj.address}</span> + // </div>` + + setTimeout(() => { + overlay.setPosition(e.coordinate); + }, 0) + + // close.addEventListener("click", function () { + // overlay.setPosition(undefined); + // }); + + + // store.setPoplayerShowAction(true); + // store.setPoplayerListAction(objdata); + // if (window.instance) { + // window.instance.$destroy(); + // } + // window.instance = new PoiLayerConstructor({ + // data: { + // list: objdata + // } + // }); + // window.instance.$mount(); + } + }); + } + if (state) { + clickEvent = window.map.on('click', handleClick); + } else { + ol.Observable.unByKey(clickEvent) + clickEvent = null + } +} + + +export function flyToPoint(posisitons) { + // let zoom = window.map.getView().getZoom(); + // if (zoom >= 16) { + // zoom = 12 + // } + // let duration = 2000; + window.map.getView().animate({ + center: posisitons, + zoom: 12, + duration: 1500 + }) + // window.map.getView().animate( + // //鍔ㄧ敾寮�濮嬫椂 + // { + // zoom: zoom > 16 ? zoom - 0.01 : zoom + 0.01, + // duration: duration / 2, + // }, + // //鍔ㄧ敾缁撴潫鏃� + // { + // zoom: zoom >= 16 ? 16 : zoom + 4, + // duration: duration / 2, + // } + // ); +} \ No newline at end of file diff --git a/src/utils/map2.js b/src/utils/map2.js index 19e3c86..f7996ae 100644 --- a/src/utils/map2.js +++ b/src/utils/map2.js @@ -2244,14 +2244,10 @@ }, }); window.map.addOverlay(overlay); - - // let _clickCallback = callback; function handleClick(e) { window.map.forEachFeatureAtPixel(e.pixel, function (feature) { - // console.log(feature, '111111') if (feature && feature.values_.desc) { ponitPanel.style.display = 'block' - let obj = feature.values_.desc objdata = { POITYPE: "POINT", @@ -2260,24 +2256,9 @@ lon: obj.lng, lat: obj.lat } - - - ponitPanel.innerHTML = ` - <div class="ponitPanel-name"> - <span>鍚嶇О锛�</span> - <span>${objdata.name}</span> - </div> - <div class="ponitPanel-value"> - <span>鍦板潃锛�</span> - <span>${objdata.address}</span> - </div>` - - setTimeout(() => { - overlay.setPosition(e.coordinate); - }, 0) - - // store.setPoplayerShowAction(true); - // store.setPoplayerListAction(objdata); + overlay.setPosition(e.coordinate); + store.setPoplayerShowAction(true); + store.setPoplayerListAction(objdata); // if (window.instance) { // window.instance.$destroy(); // } @@ -2300,26 +2281,9 @@ export function flyToPoint(posisitons) { - // let zoom = window.map.getView().getZoom(); - // if (zoom >= 16) { - // zoom = 12 - // } - // let duration = 2000; window.map.getView().animate({ center: posisitons, - zoom: 12, + zoom: 15, duration: 1500 }) - // window.map.getView().animate( - // //鍔ㄧ敾寮�濮嬫椂 - // { - // zoom: zoom > 16 ? zoom - 0.01 : zoom + 0.01, - // duration: duration / 2, - // }, - // //鍔ㄧ敾缁撴潫鏃� - // { - // zoom: zoom >= 16 ? 16 : zoom + 4, - // duration: duration / 2, - // } - // ); } \ No newline at end of file -- Gitblit v1.9.3