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;
|