From 1d0db2268bc114753f1f2b0fce056cfbaf519a64 Mon Sep 17 00:00:00 2001 From: Surpriseplus <845948745@qq.com> Date: 星期二, 10 十月 2023 11:06:22 +0800 Subject: [PATCH] 代码更新 --- src/assets/js/rpc.js | 584 +++++---------------------------------------------------- 1 files changed, 59 insertions(+), 525 deletions(-) diff --git a/src/assets/js/rpc.js b/src/assets/js/rpc.js index c01bffd..e3377ed 100644 --- a/src/assets/js/rpc.js +++ b/src/assets/js/rpc.js @@ -2,11 +2,10 @@ import coord from "@/components/poplayer/coord"; import store from "@/utils/store"; import mapData from "../../../static/mapData"; -import { liushisijiayuanqudizhibianmafuwu, findAddressCandidates, getDiKuanFanWei, ent_selectByName } from "../../api/api"; -import vueEvents from '@/utils/vueEvent.js' let PoiLayerConstructor = Vue.extend(coord); -const rpc = { +window.rpc = { timeout: 500, + url: "http://localhost:8999/RPC2", method: "get_statue", divPoint: null, instance: null, @@ -14,482 +13,31 @@ position: null, marksIndex: null, pitchValue: null, - unsubscribeTicks: null, - LineRoaming: null,//绾胯矾婕父 - dataQuery: [],//鍏抽敭瀛楁煡璇㈢粨鏋� - pointerFly: null,//瀹氱偣婕父 - isShow: false, - //鍏抽敭瀛楁煡璇� - getFuzzyQuery(res) { - if (!res.baidu_keys) return - this.setClearAllMsg(); - if (this.dataQuery.length > 0) { - - if (res.message.indexOf('绗�') > -1 && res.message.indexOf('鏉�') > -1) { - var data = mapData.msgMach.localPage - for (var i in data) { - if (res.message.indexOf(data[i]) > -1) { - - this.setClearAllMsg(); - setTimeout(() => { - vueEvents.$emit('queryLayer', true) - this.setLocation(this.dataQuery[i]) - return - }, 1000); - break; - } - } - } else { - for (var i in this.dataQuery) { - var name = this.dataQuery[i].name; - for (var j = 0; j < length; j++) { - var world = keyWorld[j].word; - if (name.indexOf(world) > -1) { - - this.setClearAllMsg(); - // setTimeout(() => { - vueEvents.$emit('queryLayer', true) - this.setLocation(this.dataQuery[i]) - break; - return - // }, 1000); - - - } - } - } + //娑堟伅瀵规帴 + initMessage() { + var that = this; + window.addEventListener("message", res => { + if (res.data.status === "ok") { + console.log(res.data.params, "褰撳墠浜嬩欢鏁版嵁"); + // that.setLocation(); } - - - } - var keyWorld = res.baidu_keys.results; - console.log("baidu_keys", res.baidu_keys) - - if (keyWorld) { - var length = keyWorld.length; - vueEvents.$emit('queryLayer', false) - this.dataQuery = []; - for (var i = 0; i < length; i++) { - var world = keyWorld[i].word; - console.log("world", world) - this.setFuzzyQueryData(world, i, length - 1); - } - } - - }, - async setFuzzyQueryData(res, index, length) { - Promise.all([ - ent_selectByName(res),//浼佷笟 - liushisijiayuanqudizhibianmafuwu(res),//鍥尯 - findAddressCandidates(res),//鍦板潡 - ]).then(result => { - let objArr = [] - //浼佷笟 - var EntArr = result[0].result.filter((item) => { - return item.entName.includes(res); - }) - EntArr.forEach((val) => { - let itemObj = { - type: "浼佷笟", - name: val.entName, - address: val.address, - lon: val.x, - lat: val.y, - }; - objArr.push(itemObj); - }); - //鍥尯 - var YQArr = result[1].candidates.filter((item) => { - return item.attributes.YQmingchen.includes(res); - }); - YQArr.forEach((val) => { - let itemObj = { - type: "鍥尯", - name: val.attributes.YQmingchen, - address: val.attributes.YQdizhi, - lon: val.location.x, - lat: val.location.y, - }; - objArr.push(itemObj); - }); - //鍦板潡 - var LandArr = result[2].candidates.filter((item) => { - return item.attributes.QYMC.includes(res); - }) - // 缁撴灉鏍规嵁QYMC浠庣煭鍒伴暱鎺掑簭 - LandArr.sort((a, b) => (b.attributes.QYMC.length === a.attributes.QYMC.length ? 0 : a.attributes.QYMC.length > b.attributes.QYMC.length ? 1 : -1)) - LandArr.forEach((val) => { - let itemObj = { - type: "鍦板潡", - name: val.attributes.QYMC, - area: val.attributes.area, - code: val.attributes["鍦板潡缂�"], - lon: val.location.x, - lat: val.location.y, - }; - objArr.push(itemObj); - }); - console.log(EntArr); - console.log(YQArr); - console.log(LandArr); - console.log(objArr); - debugger - }) - - - // var data = await - // if (data.candidates.length <= 0) { - // this.setClearAllMsg(); - // this.getLandmass(res) - // } else { - // this.getFuzzyQueryData(data.candidates, index, length, 1) - // } - }, - - getFuzzyQueryData(res, index, length, flag) { - if (!res || res.length <= 0) return - for (var i in res) { - if (this.dataQuery.length < 6) { - this.dataQuery.push(res[i]) - } - } - if (index == length) { - if (this.dataQuery.length <= 0) { - vueEvents.$emit('queryLayer', false) - return - } - - - store.queryLayer.data = this.dataQuery; - this.setClearAllMsg(); - vueEvents.$emit('queryLayer', true) - setTimeout(() => { - - this.setLocation(this.dataQuery[0]) - }, 1000); - } - }, - // 鏄剧ず鍦板潡鑼冨洿 - getLandmass(res) { - let that = this; - findAddressCandidates(res).then((locationInfo) => { - - - // if (locationInfo.candidates.length > 0) { - // // 鍒掔嚎 - // getDiKuanFanWei( - // locationInfo.candidates[0].location.x, - // locationInfo.candidates[0].location.y - // ).then((response) => { - // let center = { lon: 0, lat: 0 }; - // let polygon = that.read(response.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 (that.lacationLine) { - // sgworld.Creator.DeleteObject(that.lacationLine); - // line = null; - // } - // that.lacationLine = sgworld.Creator.createPolyline( - // geometry, - // "#ff0000", - // 1, - // 0, - // "绾�" - // ); - // } - // }); - - // var objdata = { - // POITYPE: "dikuaixinxi", - // name: locationInfo.candidates[0].attributes.QYMC, - // yijilei: locationInfo.candidates[0].attributes.yijilei, - // yongdixing: locationInfo.candidates[0].attributes["鐢ㄥ湴鎬�"], - // // LXR: locationInfo.candidates[0].name, - // // DIZHI: locationInfo.candidates[0].address, - // lat: locationInfo.candidates[0].location.y, - // lon: locationInfo.candidates[0].location.x, - // }; - // // //娣诲姞瀹氫綅寮圭獥 - // that.setAddPointLocation(objdata); - // // 寮规 - // console.log(objdata); - // debugger; - // } else { - // this.getAllEntity(res) - // } }); }, - async getAllEntity(res) { - var obj = { - request: "bdPoi", - query: res, - output: "json", - coord: "cgcs2000", - page_num: 0, - page_size: 20, - } - const data = await yzAdapter_Navigation(obj) - debugger - }, - 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; - }, - - //鍦板浘澶嶄綅 setMapRest() { const data = mapData.mapRest; sgworld.Navigate.flyToPointsInterest({ destination: { "x": data.lng, - "y": data.lat, - "z": data.alt, + "y": data.lat, "z": data.alt }, orientation: { heading: data.heading, pitch: data.pitch, roll: data.roll, }, - duration: 8, //椋炶鏃堕棿8s + duration: 5, //椋炶鏃堕棿8s }); - }, - - //鍔ㄧ敾瀵艰埅 - setLineRoaming() { - var valdata = mapData.animaNavigation; - this.marksIndex = 1; - this.pitchValue = -20; - this.setShowPathLine(valdata); - var geom = []; - for (var i in valdata) { - geom.push(valdata[i].lng, valdata[i].lat, valdata[i].height) - } - - var that = this; - sgworld.Creator.getFlyData(geom, data => { - data.showPoint = false; - data.showLine = false; - data.mode = 1; - data.pitch = -10; - data.height = 75; - data.speed = 25; - - that.LineRoaming = sgworld.Creator.createDynamicObject(data, null, (res) => { - if (res.time >= res.Totaltime) { - that.setCloseLineRomaing(); - that.setMapRest() - - } - }) - }) }, //鐐瑰嚮鑾峰彇鍧愭爣 clickToCoordinates() { @@ -510,23 +58,40 @@ }, Cesium.ScreenSpaceEventType.LEFT_CLICK); }, //瀹氫綅寮圭獥 - setLocation(res) { - + setLocation() { + var data = mapData.pointPop; var objdata = { - name: res.attributes.YQmingchen, - address: res.attributes.YQdizhi, - // LXR: res.name, - // DIZHI: res.address, - lat: res.location.y, - lon: res.location.x + POITYPE: data.text, + SSDW: data.text, + LXR: data.text, + DIZHI: res, + lat: data.lat, + lon: data.lng }; - //娣诲姞瀹氫綅寮圭獥 this.setAddPointLocation(objdata); + // //娣诲姞璺緞绾� + // this.setShowPathLine(marks); + // //椋炶婕父 + // window.Viewer.scene.camera.flyTo({ + // destination: Cesium.Cartesian3.fromDegrees( + // marks[0].lng, + // marks[0].lat, + // marks[0].height + // ), //瀹氫綅鍧愭爣鐐癸紝寤鸿浣跨敤璋锋瓕鍦扮悆鍧愭爣浣嶇疆鏃犲亸宸� + // duration: 7 //瀹氫綅鐨勬椂闂撮棿闅� + // }); + // this.marksIndex = 1; + // this.pitchValue = -20; + // setTimeout(() => { + // this.setflyExtent(marks); + // }, 7000); + }, setAddPointLocation(res) { // 娓呴櫎鏂规硶 + this.setClearPathlayer(); store.setlocalLayerShowAction(false); store.setlocalLayerListAction({}); store.setlocalLayerShowAction(true); @@ -554,7 +119,7 @@ ); this.position = window.Viewer.entities.add({ name: "FLYToMap", - position: Cesium.Cartesian3.fromDegrees(res.lon, res.lat, 200), + position: Cesium.Cartesian3.fromDegrees(objdata.lon, objdata.lat), point: { pixelSize: 1, color: Cesium.Color.WHITE.withAlpha(0), @@ -566,23 +131,15 @@ offset: { heading: Cesium.Math.toRadians(0.0), pitch: Cesium.Math.toRadians(-45), - range: 700 - }, - duration: 3 + range: 600 + } }); setTimeout(() => { window.Viewer.entities.remove(this.position) - }, 1000); - setTimeout(() => { - this.setPointFly(res) - }, 4000); }, setflyExtent(res) { - if (this.unsubscribeTicks) { - window.Viewer.clock.onTick.removeEventListener(this.unsubscribeTicks); - this.unsubscribeTicks = null; - } + // 鐩告満鐪嬬偣鐨勮搴︼紝濡傛灉澶т簬0閭d箞鍒欐槸浠庡湴搴曞線涓婄湅锛屾墍浠ヨ涓鸿礋鍊� var pitch = Cesium.Math.toRadians(this.pitchValue); // 鏃堕棿闂撮殧2绉掗挓 @@ -638,7 +195,7 @@ window.Viewer.clock.stopTime ) >= 0 ) { - this.unsubscribeTicks = window.Viewer.clock.onTick.removeEventListener(Exection); + window.Viewer.clock.onTick.removeEventListener(Exection); this.changeCameraHeading(res); } @@ -646,29 +203,21 @@ } window.Viewer.clock.onTick.addEventListener(Exection); }, - setPointFly(res) { - var that = this; - this.pointerFly = window.sgworld.Analysis.setPointFly({ - position: Cesium.Cartesian3.fromDegrees(res.lon, res.lat, 200), - // scale: 0, - hideImage: true, - limitTime: true, - time: 4, - end: () => { - that.pointerFly = null - } + setPointFly() { + var alll + = { lng: 116.802948, lat: 36.550064, height: 100, flytime: 15 } + window.sgworld.Analysis.setPointFly({ + position: Cesium.Cartesian3.fromDegrees(alll.lng, alll.lat, 50), + hideImage: false }) }, changeCameraHeading(res) { - var nextIndex = this.marksIndex + 1; if (this.marksIndex == res.length - 1) { - if (this.unsubscribeTicks) { - window.Viewer.clock.onTick.removeEventListener(this.unsubscribeTicks); - this.unsubscribeTicks = null; - } + // 婕父瀹屾垚 + this.setPointFly(res); return } // 璁$畻涓ょ偣涔嬮棿鐨勬柟鍚� @@ -733,6 +282,8 @@ toDegrees(radians) { return (radians * 180) / Math.PI; }, + + setExtentTime(time) { var startTime = Cesium.JulianDate.fromDate(new Date()); var stopTime = Cesium.JulianDate.addSeconds( @@ -773,8 +324,8 @@ far: 50000 }); }, - //缁撴潫浜嬩欢 - setClearAllMsg() { + + setClearPathlayer() { if (this.divPoint) { this.divPoint && this.divPoint.deleteObject(); this.divPoint = null; @@ -783,30 +334,13 @@ this.instance && this.instance.$destroy(); this.instance = null; } - // 杞ㄨ抗绾� - this.setClosePathLine(); - // 婕父 - this.setCloseLineRomaing(); - //瀹氱偣婕父 - this.setClearPointFly() - vueEvents.$emit('queryLayer', false) - }, - setClearPointFly() { - if (this.pointerFly) { - this.pointerFly && this.pointerFly.end(); - this.pointerFly = null; - } - }, - setCloseLineRomaing() { - if (this.LineRoaming) { - this.LineRoaming && this.LineRoaming.exit(); - this.LineRoaming = null - } - }, - setClosePathLine() { if (this.pathLayer) { this.pathLayer && this.pathLayer.deleteObject(); } - }, + if (this.position) { + window.Viewer.entities.remove(this.position); + this.position = null; + } + } }; export default rpc; -- Gitblit v1.9.3