import { getPublickey, getSecurityLogin, getListCanview, getmapConfig, getQueryEentity, getSettingPublickey } from "../../../api/modelBase.js"; import JSEncrypt from "jsencrypt"; import store from "../../../store/index.js"; import { getToken, setToken } from "../../../utils/auth.js"; import mapConfig from "./mapConfig.js"; import axios from "axios"; import mapServer from "./mapServer.js"; const modelLayer = { modelBase: null, dbid: null, geom: null, layers: null, publickey: null, layerList: [], init() { this.modelBase = config.modelBase; this.getSettingPublicKey(); const token = getToken(); if (token) { this.getModelLayerList(); } else { getPublickey().then((response) => { const password = this.modelBase.password; const userId = this.modelBase.userId; this.publickey = response.data; const encrypt = new JSEncrypt(); encrypt.setPublicKey(this.publickey); let encrypted = encrypt.encrypt(password.substring(0, 50)) + ""; let submit = { userid: userId, password: encrypted }; this.setLoginsubmit(submit); }); } }, getSettingPublicKey() { getSettingPublickey().then((response) => { this.publickey = response.data; }); }, // 获取Token setLoginsubmit(res) { getSecurityLogin(res).then((response) => { const val = response.data.token; setToken(val); this.getModelLayerList(); }); }, // 获取列表 getModelLayerList() { const token = getToken(); getListCanview({ token: token }).then((response) => { const data = response.data; const obj = data.filter((item) => { if (item.name == this.modelBase.modelLayer) { return item; } }); console.log("dbid", response); if (obj.length > 0) { this.dbid = obj[0].dbid; this.getmapConfig(); } }); }, getmapConfig() { getmapConfig({ dbid: this.dbid, token: getToken() }).then((response) => { if (response.code != 200) return; const layers = response.data.layers; this.layers = layers; console.log(layers); for (var i in layers) { if (layers[i].name == config.modelLayer) { var url = null; for (var key in layers[i].lod_url["3d"]) { url = layers[i].lod_url["3d"][key]; } mapServer.addServer({ sourceType: "Tileset", url: url, id: layers[i].id }); } else { if (layers[i].lod_url) { if (layers[i].lod_url["3d"]) { if (layers[i].name != "底图" && layers[i].name != "FW12") { for (var key in layers[i].lod_url["3d"]) { var mdurl = layers[i].lod_url["3d"][key]; if (mdurl) { const tileset = new Cesium.Cesium3DTileset({ url: mdurl }); tileset.show = false; earthCtrl.primitives.add(tileset); this.layerList.push(tileset); } } } } } } } }); }, getQueryGroupBy(layer, filed, ction) { const layerId = this.layers.filter((item) => { if (item.name == layer) { return item; } }); if (layerId.length <= 0) { return; } const url = config.modelBase.url + config.modelBase.geo + "/entitydbdata/query/entity"; const obj = [ { type: "count", field: filed, outfield: "count_" + filed } ]; axios .post( url, { layerid: layerId[0].id, dbid: this.dbid, token: getToken(), statistics: JSON.stringify(obj), containCount: true, groupby: filed }, { headers: { Authorization: getToken(), "Content-Type": "application/x-www-form-urlencoded" } } ) .then((response) => { ction(response); }) .catch((error) => { error; }); }, setLayerQuery() { const token = getToken(); this.geom = mapConfig.setPointToCrical(120.27, 14.79, null); // const obj = { // type: "FeatureCollection", // totalFeatures: 1086, // features: [this.geom] // }; // earthCtrl.factory.createFeatureLayer({ // sourceType: "geojson", // url: obj, // style: { // layerType: "polygon", // material: new SmartEarth.Cesium.ColorMaterialProperty( // new SmartEarth.Cesium.Color.fromCssColorString("#00f") // ), // outlineColor: new SmartEarth.Cesium.Color.fromCssColorString("#fff"), // outline: true // } // }); this.configTooles = { url: config.modelBase.url + config.modelBase.geo + "/entitydbdata/query/entity", layerid: "432a7d4f-b136-4649-91a3-52709db9c3ef", dbid: "a02c1f922bd64a0ea5979dbebc60d337", geometry: this.geom.geometry, start: 1, token: token, outfields: "*", containCount: true, contentType: "application/x-www-form-urlencoded" }; this.getLayerModelCount(this.configTooles); }, getLayerModelCount(res) { axios .post( res.url, { dbid: res.dbid, geometry: res.geometry, layerid: res.layerid, returnCountOnly: res.containCount, token: res.token }, { headers: { Authorization: res.token, "Content-Type": res.contentType } } ) .then((response) => { if (response.status === 200) { this.getLayerModelList(res, response.data.data); } else { this.getLayerModelList(res, 200); } }); }, getLayerModelList(res, count) { const that = this; axios .post( res.url, { dbid: res.dbid, geometry: res.geometry, layerid: res.layerid, containCount: res.containCount, token: res.token, count: count, start: 1, outfields: res.outfields }, { headers: { Authorization: res.token, "Content-Type": res.contentType } } ) .then((response) => { that.setLayerFilter(response.data.data.items); }); }, setLayerFilter(rs) { const obj = mapServer.listData.filter((item) => { if (item.type == "Tileset") { return item; } }); if (!obj) return; const tileset = obj[0].layer; const a = []; // rs.filter((item) => { // if (item.targettype == "军事目标") { // // a.push(["${id} === '" + item.sid + "'", "color('#FF0000', 0.5)"]); // } // }); // a.push([ // "${id} == '1_b092c0c26de646b984801e29fba37f82'", "${id} == 1_b092c0c26de646b984801e29fba37f82", 'color("purple", 0.5)' ]); a.push(["true", "color('#E8F1F2', 0.5)"]); tileset.style = new Cesium.Cesium3DTileStyle({ // color: "vec4(1.0,1.0,1.0, 1.0)", // 红色 color: { conditions: [ [ // "${id} == '1_b092c0c26de646b984801e29fba37f82'", '${targettype} == "军事目标"', 'color("purple", 0.5)' ] ] } }); // window.Cesium.when(tileset.readyPromise, function(tileset) { // var tilesetId = tileset.id; // }); // tileset.readyPromise.then( (item)=> { // tileset.tileVisible.addEventListener( (tile)=> { // }) // }) } }; export default modelLayer;