| | |
| | | url: null, |
| | | coord: null, |
| | | rectangularSensor: null, |
| | | targetList: [], |
| | | linePath: null, |
| | | richTextPoint1: null, |
| | | wfsLayer: null, |
| | | init(url) { |
| | | this.url = url; |
| | | this.getJsonLayer(); |
| | |
| | | }); |
| | | }, |
| | | setQyeryData(res) { |
| | | this.setTitleSetRest(); |
| | | // this.setTitleSetRest(); |
| | | if (res.indexOf("海军陆战队") > -1) { |
| | | this.setQueryExtent2(); |
| | | } else if (res.indexOf("军事目标") > -1) { |
| | |
| | | encrypt.setPublicKey(modelLayer.publickey + ""); |
| | | return encrypt.encrypt(res); |
| | | }, |
| | | setQueryTF2(name) { |
| | | const obj = "weaponname = '" + name + "'" + ""; |
| | | async setQueryFlywire() { |
| | | const obj = "ejfl = '美空军指挥中心'" + ""; |
| | | const filed = this.getPublickey(obj); |
| | | const layer = modelLayer.layers.filter((item) => { |
| | | if (item.name == "建筑") { |
| | | return item; |
| | | } |
| | | }); |
| | | if (layer.length <= 0) return; |
| | | const data = getQueryEentity({ |
| | | token: getToken(), |
| | | start: 1, |
| | | count: 0, |
| | | containCount: true, |
| | | layerid: layer[0].id, |
| | | dbid: modelLayer.dbid, |
| | | where: filed |
| | | }); |
| | | }, |
| | | setQueryTF2(name) { |
| | | // const obj = "weaponname like '%" + name + "%'" + ""; |
| | | const filed = this.getPublickey(name); |
| | | const layer = modelLayer.layers.filter((item) => { |
| | | if (item.name == "武器点") { |
| | | return item; |
| | |
| | | }).then((response) => { |
| | | if (response.code != 200) return; |
| | | const geom = response.data.items[0]; |
| | | |
| | | const position = [geom._x, geom._y, 0]; |
| | | const cylinder = { |
| | | radius: 1000, //半径 |
| | | radius: 1500, //半径 |
| | | angle: 30, //扫描角度(可选) |
| | | speed: 5, //倍速(可选) |
| | | stackPartitions: 80, //横向网格数(可选) |
| | |
| | | position, |
| | | cylinder |
| | | ); |
| | | Viewer.zoomTo(this.rectangularSensor.item); |
| | | // Viewer.zoomTo(this.rectangularSensor.item); |
| | | }); |
| | | }, |
| | | setQueryByFiled(name, color, label) { |
| | | setQueryByFiled(name, color) { |
| | | const filed = this.getPublickey(name); |
| | | var objItem = mapServer.listData.filter((item) => { |
| | | if (item.type === "Tileset") { |
| | | return item; |
| | | } |
| | | }); |
| | | if (objItem.length <= 0) return; |
| | | var tileset = objItem[0]; |
| | | getQueryEentity({ |
| | | token: getToken(), |
| | | start: 1, |
| | | count: 0, |
| | | containCount: true, |
| | | layerid: tileset.layerId, |
| | | dbid: modelLayer.dbid, |
| | | where: filed |
| | | }).then((response) => { |
| | | if (response.code != 200) return; |
| | | var std = []; |
| | | const items = response.data.items; |
| | | items.map((item) => { |
| | | std.push(item.seid); |
| | | }); |
| | | nextTick(() => { |
| | | if (std.length > 0) { |
| | | this.setTilesetColorChange(tileset, std, color); |
| | | } |
| | | }); |
| | | }); |
| | | }, |
| | | setQueryByFiledList(list, flag) { |
| | | const result = list[flag]; |
| | | const name = result.name; |
| | | const color = result.color; |
| | | const obj = "targettype = '" + name + "'" + ""; |
| | | const filed = this.getPublickey(obj); |
| | | var objItem = mapServer.listData.filter((item) => { |
| | |
| | | var std = []; |
| | | const items = response.data.items; |
| | | items.map((item) => { |
| | | if (item.targettype == name) { |
| | | std.push(item.seid); |
| | | } |
| | | // if (item.targettype == name) { |
| | | std.push(item.seid); |
| | | // }. |
| | | }); |
| | | nextTick(() => { |
| | | if (std.length <= 0) return; |
| | | this.setTilesetColorChange(tileset, std, color); |
| | | if (std.length > 0) { |
| | | this.targetList.push({ |
| | | ids: std, |
| | | color: color |
| | | }); |
| | | } |
| | | flag = flag + 1; |
| | | |
| | | if (flag >= list.length) { |
| | | this.setTilesetColorChangeTarget(); |
| | | } else { |
| | | this.setQueryByFiledList(list, flag); |
| | | } |
| | | }); |
| | | }); |
| | | }, |
| | | setTitleSetRest() { |
| | | this.targetList = []; |
| | | if (this.wfsLayer) { |
| | | // this.wfsLayer.removeFromMap(); |
| | | this.wfsLayer.destroy(); |
| | | } |
| | | if (this.linePath) { |
| | | this.linePath.clear(); |
| | | this.linePath = null; |
| | | } |
| | | if (this.richTextPoint1) { |
| | | this.richTextPoint1.deleteObject(); |
| | | this.richTextPoint1 = null; |
| | | } |
| | | if (this.rectangularSensor) { |
| | | this.rectangularSensor.wall.forEach((wall) => { |
| | | Viewer.entities.remove(wall); |
| | |
| | | const id = feature.getProperty("id"); |
| | | if (ids.indexOf(id) > -1) { |
| | | return new SmartEarth.Cesium.Color.fromCssColorString(color); |
| | | } else { |
| | | return new SmartEarth.Cesium.Color.fromCssColorString("#FFFFFF"); |
| | | } |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | setTilesetColorChangeTarget() { |
| | | var objItem = mapServer.listData.filter((item) => { |
| | | if (item.type === "Tileset") { |
| | | return item; |
| | | } |
| | | }); |
| | | if (objItem.length <= 0) return; |
| | | var tileset = objItem[0].layer; |
| | | const list = this.targetList; |
| | | |
| | | tileset.style = new Cesium.Cesium3DTileStyle({ |
| | | color: { |
| | | evaluateColor: (feature) => { |
| | | const id = feature.getProperty("id"); |
| | | for (var i in list) { |
| | | if (list[i].ids.indexOf(id) > -1) { |
| | | return new SmartEarth.Cesium.Color.fromCssColorString( |
| | | list[i].color |
| | | ); |
| | | } |
| | | } |
| | | // if (ids.indexOf(id) > -1) { |
| | | // return new SmartEarth.Cesium.Color.fromCssColorString(color); |
| | | // } |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | setAddWfsLayer() { |
| | | this.wfsLayer = earthCtrl.factory.createWfsLayer("polygon", { |
| | | urls: "https://cim.smartearth.cn/SEserver/wfsserver/SubicBayWeapon_wfs", |
| | | layer: "weapons", |
| | | outlineColor: "#ff0000", |
| | | alpha: 0 |
| | | }); |
| | | }, |
| | | setAddWfsJson() { |
| | | const url = this.getQueryUrl("SubicBayWeapon_wfs", "weapons"); |
| | | |
| | | Cesium.GeoJsonDataSource.load(url, { |
| | | fill: Cesium.Color.fromCssColorString("#FFFFFF00"), |
| | | stroke: Cesium.Color.fromCssColorString("#FFFFFF00"), //多边形或线的颜色 |
| | | |
| | | strokeWidth: 0 //多边形或线 宽度 |
| | | }).then((dataSource) => { |
| | | const entities = dataSource.entities.values; |
| | | entities.map((item) => { |
| | | item.polygon._material.color = |
| | | Cesium.Color.fromCssColorString("#FFFFFF00"); |
| | | |
| | | item.polygon.heightReference = |
| | | Cesium.HeightReference.RELATIVE_TO_GROUND; // 贴地 |
| | | item.polygon.height = 0; // 距地高度0米 |
| | | var polyPositions = item.polygon.hierarchy.getValue().positions; |
| | | var polyCenter = Cesium.BoundingSphere.fromPoints(polyPositions).center; //中心点 |
| | | polyCenter = Cesium.Ellipsoid.WGS84.scaleToGeodeticSurface(polyCenter); |
| | | item.position = polyCenter; |
| | | let positions = item.polygon.hierarchy._value.positions; |
| | | // 设置面轮廓 |
| | | item.polyline = new Cesium.PolylineGraphics({ |
| | | positions: positions, |
| | | clampToGround: true, // 贴地 |
| | | width: 5, |
| | | material: Cesium.Color.fromCssColorString("#FF0000") |
| | | }); |
| | | console.log(item._name); |
| | | const label_name = item.name ?item.name :""; |
| | | item.label = { |
| | | text: label_name, |
| | | font: "500 16x sans-serif", |
| | | style: Cesium.LabelStyle.FILL_AND_OUTLINE, // 字体样式 |
| | | fillColor: new Cesium.Color.fromCssColorString("#FFFFFF"), |
| | | outlineWidth: 1, // 字体外圈线宽度(同样也有颜色可设置) |
| | | outlineColor: new Cesium.Color.fromCssColorString("#FFFFFF"), |
| | | verticalOrigin: Cesium.VerticalOrigin.BOTTOM, // 垂直位置 |
| | | pixelOffset: new Cesium.Cartesian2(0, 0), // 中心位置 |
| | | disableDepthTestDistance: Number.POSITIVE_INFINITY, |
| | | distanceDisplayCondition: new Cesium.DistanceDisplayCondition( |
| | | 500.0, |
| | | 3000.0 |
| | | ), |
| | | // showBackground:true, |
| | | // backgroundColor: new Cesium.Color(26 / 255, 196 / 255, 228 / 255, 1.0) //背景顔色 |
| | | }; |
| | | }); |
| | | |
| | | Viewer.dataSources.add(dataSource); |
| | | }); |
| | | }, |
| | | getTileSet() { |
| | |
| | | } |
| | | return objItem[0]; |
| | | }, |
| | | setQueryExtent2() { |
| | | setQueryExtent2(res, boolen) { |
| | | const tileset = this.getTileSet(); |
| | | if (!tileset) { |
| | | return; |
| | | } |
| | | const obj = "ejfl like '%空军基地%'"; |
| | | const filed = this.getPublickey(obj); |
| | | // |
| | | const filed = this.getPublickey(res); |
| | | getQueryEentity({ |
| | | token: getToken(), |
| | | start: 1, |
| | |
| | | }).then((response) => { |
| | | if (response.code != 200) return; |
| | | const items = response.data.items[0]; |
| | | |
| | | this.getQueryGeomExtent(items, tileset.layerId); |
| | | const obj_val = response.data.items.filter((rs) => { |
| | | if (rs.seid == "1_b810b88e1c7144bcb1c73eb6f45c3cf0") { |
| | | return rs; |
| | | } |
| | | }); |
| | | if (boolen) { |
| | | this.getQueryGeomExtent(obj_val[0], tileset.layerId); |
| | | } else { |
| | | this.getshowQueryExtentLabel(obj_val[0]); |
| | | } |
| | | }); |
| | | }, |
| | | getshowQueryExtentLabel(res) { |
| | | this.richTextPoint1 = earthCtrl.factory.createRichTextPoint( |
| | | res.ejfl, |
| | | [res.lon, res.lat], |
| | | { |
| | | fontColor: "#ffff00", |
| | | fontSize: 18 |
| | | }, |
| | | "0" |
| | | ); |
| | | const center = { lon: res.lon, lat: res.lat }; |
| | | const cities = [ |
| | | { |
| | | lon: 120.26923413, |
| | | lat: 14.7887635155 |
| | | }, |
| | | { |
| | | lon: 120.266906151, |
| | | lat: 14.799529948 |
| | | }, |
| | | { |
| | | lon: 120.267382051, |
| | | lat: 14.788105695 |
| | | }, |
| | | { |
| | | lon: 120.26710735, |
| | | lat: 14.7993756478 |
| | | }, |
| | | { |
| | | lon: 120.286842844, |
| | | lat: 14.7924281921 |
| | | }, |
| | | { |
| | | lon: 120.286923225, |
| | | |
| | | lat: 14.7933412456 |
| | | }, |
| | | { |
| | | lon: 120.266707102, |
| | | |
| | | lat: 14.7996392512 |
| | | }, |
| | | { |
| | | lon: 120.268701861, |
| | | |
| | | lat: 14.7886095373 |
| | | }, |
| | | { |
| | | lon: 120.270684963, |
| | | |
| | | lat: 14.7919831852 |
| | | }, |
| | | { |
| | | lon: 120.266265954, |
| | | |
| | | lat: 14.7999317012 |
| | | }, |
| | | { |
| | | lon: 120.269896499, |
| | | |
| | | lat: 14.7901043245 |
| | | }, |
| | | { |
| | | lon: 120.286600837, |
| | | |
| | | lat: 14.7926858017 |
| | | }, |
| | | { |
| | | lon: 120.286991515, |
| | | |
| | | lat: 14.7927451318 |
| | | }, |
| | | { |
| | | lon: 120.286760149, |
| | | |
| | | lat: 14.7930139536 |
| | | }, |
| | | { |
| | | lon: 120.28633835, |
| | | |
| | | lat: 14.7929774056 |
| | | }, |
| | | { |
| | | lon: 120.266684567, |
| | | |
| | | lat: 14.7877010021 |
| | | }, |
| | | { |
| | | lon: 120.283448259, |
| | | |
| | | lat: 14.7972858134 |
| | | }, |
| | | { |
| | | lon: 120.286503613, |
| | | |
| | | lat: 14.7932728306 |
| | | }, |
| | | { |
| | | lon: 120.286649886, |
| | | lat: 14.7935912152 |
| | | } |
| | | ]; |
| | | let pathOption = { |
| | | width: 3, //线宽(可选) |
| | | color: "#00ffff", //线颜色(可选), |
| | | LightSpot: true, //是否使用光点效果(可选) |
| | | LightSpotColor: "#ffffff", //光点颜色(可选) |
| | | height: 100 |
| | | }; |
| | | this.linePath = earthCtrl.factory.createTrailLinePath( |
| | | center, |
| | | cities, |
| | | pathOption |
| | | ); |
| | | }, |
| | | getQueryGeomExtent(items, layerid) { |
| | | var geom = mapConfig.setPointToCrical(items.lon, items.lat, 1); |
| | | const token = getToken(); |