|
@@ -95,7 +95,6 @@
|
|
|
<script>
|
|
|
import axios from "axios";
|
|
|
import { GetGDlnfo, GetXzqhTree, GetHouseInfo } from "../../../api/map";
|
|
|
-import { Getfiledslist } from "@/api/shared.js";
|
|
|
import { keys } from "lodash";
|
|
|
import { handModel, handnew, clearTranslate, keyName } from "./modelLayering";
|
|
|
import CockpitVector from "./CockpitVector.vue";
|
|
@@ -104,11 +103,20 @@ import {
|
|
|
loadGeoJSON,
|
|
|
removeGeoJSON,
|
|
|
str2Unicode,
|
|
|
+ bbox,
|
|
|
} from "@/utils/MapHelper/help.js";
|
|
|
import * as pick_cockpit_vector from "./pick_cockpit_vector.js";
|
|
|
import * as tdsy from "@/views/cockpit/js/tdsy";
|
|
|
import * as turf from "@turf/turf";
|
|
|
-import { bbox } from "@/utils/MapHelper/help.js";
|
|
|
+import {
|
|
|
+ calcIserverURI,
|
|
|
+ getfieldList,
|
|
|
+ cartesianToCartographic84,
|
|
|
+ superQuery,
|
|
|
+ mapQuery,
|
|
|
+ cartesian3ToWGS84,
|
|
|
+} from "@/utils/MapHelper/clickQuery.js";
|
|
|
+// import { cartesian3ToWGS84 } from "@/utils/MapHelper/MapHelper.js";
|
|
|
let gwtype;
|
|
|
let query_click = null;
|
|
|
let manager_layer_png = null;
|
|
@@ -420,6 +428,7 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
async mapSelect(pos, obj) {
|
|
|
+ console.log("mapSelect", "---");
|
|
|
// let obj = window.tempSelect;
|
|
|
let queryByIDParameters = {
|
|
|
// getFeatureMode: "BUFFER",
|
|
@@ -434,16 +443,16 @@ export default {
|
|
|
bufferDistance: 0.00005,
|
|
|
hasGeometry: true,
|
|
|
};
|
|
|
- let url2 = this.calcIserverURI(obj.url);
|
|
|
+ let url2 = calcIserverURI(obj.url);
|
|
|
let e;
|
|
|
- e = await this.mapQuery(url2, queryByIDParameters);
|
|
|
+ e = await mapQuery(url2, queryByIDParameters);
|
|
|
if (e && e.totalCount > 0) {
|
|
|
this.addLayerList(obj.title, obj);
|
|
|
let queryData = [];
|
|
|
let geoms = [];
|
|
|
let parts = [];
|
|
|
// let parseJson = JSON.parse(obj.legend);
|
|
|
- let parseJson = await this.getfieldList(obj.id, false);
|
|
|
+ let parseJson = await getfieldList(obj.id, false);
|
|
|
for (let u = 0; u < e.features.length; u++) {
|
|
|
let cur = [];
|
|
|
var linSAr = JSON.parse(JSON.stringify(e.features[u]));
|
|
@@ -486,7 +495,7 @@ export default {
|
|
|
for (let y = 0; y < e.features[u].geometry.points.length; y++) {
|
|
|
let c = {};
|
|
|
if (serCode == 3857) {
|
|
|
- c = that.cartesianToCartographic84(
|
|
|
+ c = cartesianToCartographic84(
|
|
|
e.features[u].geometry.points[y].x,
|
|
|
e.features[u].geometry.points[y].y
|
|
|
);
|
|
@@ -540,7 +549,7 @@ export default {
|
|
|
datasetNames: [str3],
|
|
|
ids: [pickedFeature.id],
|
|
|
};
|
|
|
- let e = await this.mapQuery(url2, queryByIDParameters);
|
|
|
+ let e = awaitmapQuery(url2, queryByIDParameters);
|
|
|
if (e && e.totalCount > 0) {
|
|
|
// that.layerList.push(store.state.vectorlayerlist[i]);
|
|
|
that.layerList.push(obj);
|
|
@@ -612,7 +621,7 @@ export default {
|
|
|
// let pickRay = viewer.camera.getPickRay(movement.position);
|
|
|
// let artesian3 = viewer.scene.globe.pick(pickRay, viewer.scene);
|
|
|
let artesian3 = viewer.scene.pickPosition(movement.position);
|
|
|
- let xy = this.cartesian3ToWGS84(artesian3);
|
|
|
+ let xy = cartesian3ToWGS84(artesian3);
|
|
|
//TODO wanger 分图层查询
|
|
|
for (let i = 0; i < store.state.vectorlayerlist.length; i++) {
|
|
|
let obj = store.state.vectorlayerlist[i];
|
|
@@ -624,114 +633,23 @@ export default {
|
|
|
if (!obj.fwgzkj && !obj.fwmc) {
|
|
|
continue;
|
|
|
}
|
|
|
- this.superQuery(xy, obj);
|
|
|
+ superQuery(xy, obj, (data) => this.superQfun(data, obj));
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
- async getfieldList(zymlBsm, resetType) {
|
|
|
- this.fieldList = [];
|
|
|
- let res = await Getfiledslist({ zymlBsm, resetType });
|
|
|
- return res.data;
|
|
|
- },
|
|
|
- async superQuery(xy, obj) {
|
|
|
- console.log(
|
|
|
- obj.source.split(","),
|
|
|
- `${obj.fwgzkj}:${obj.fwmc}`,
|
|
|
- obj.source.split(",") == `${obj.fwgzkj}:${obj.fwmc}`
|
|
|
- );
|
|
|
- let that = this;
|
|
|
- let queryByIDParameters = {
|
|
|
- getFeatureMode: "BUFFER",
|
|
|
- // getFeatureMode: "SPATIAL",
|
|
|
- spatialQueryMode: "INTERSECT",
|
|
|
- datasetNames: [`${obj.fwgzkj}:${obj.fwmc}`], //obj.source.split(","),
|
|
|
- geometry: {
|
|
|
- parts: [1],
|
|
|
- points: [{ y: xy.lat, x: xy.lng }],
|
|
|
- type: "POINT",
|
|
|
- },
|
|
|
- bufferDistance: 0.00005,
|
|
|
- hasGeometry: true,
|
|
|
- };
|
|
|
- let e;
|
|
|
-
|
|
|
- if (obj.type == "S3M") {
|
|
|
- e = await that.mapQuery(
|
|
|
- window.baseModelQueryLayer,
|
|
|
- queryByIDParameters
|
|
|
- );
|
|
|
- } else {
|
|
|
- e = await that.mapQuery(
|
|
|
- that.calcIserverURI(obj.url),
|
|
|
- queryByIDParameters
|
|
|
- );
|
|
|
+ superQfun({ parts, queryData, geoms, e }, obj) {
|
|
|
+ if (!e.features[0].fieldNames) {
|
|
|
+ this.$message({
|
|
|
+ message: "查询结果为空!",
|
|
|
+ type: "warning",
|
|
|
+ customClass: "messageIndex",
|
|
|
+ });
|
|
|
}
|
|
|
if (e && e.totalCount > 0) {
|
|
|
this.addLayerList(obj.title, obj);
|
|
|
- let queryData = [];
|
|
|
- let geoms = [];
|
|
|
- let parts = [];
|
|
|
- // let parseJson = JSON.parse(obj.legend);
|
|
|
- let parseJson = await this.getfieldList(obj.id, false);
|
|
|
- for (let u = 0; u < e.features.length; u++) {
|
|
|
- let cur = [];
|
|
|
- var linSAr = JSON.parse(JSON.stringify(e.features[u]));
|
|
|
- function condition(ci) {
|
|
|
- return ci.status != undefined && ci.status;
|
|
|
- }
|
|
|
- if (e.features[u].fieldNames) {
|
|
|
- linSAr.fieldNames.forEach((fieldName, i) => {
|
|
|
- let perjson = parseJson.filter(
|
|
|
- (p) => p.filedName.toUpperCase() == fieldName
|
|
|
- );
|
|
|
- if (perjson.length > 0) {
|
|
|
- var show = condition(perjson[0]);
|
|
|
- var order = perjson[0].order || linSAr.fieldNames.length;
|
|
|
- if (fieldName != perjson[0].filedNameZh)
|
|
|
- fieldName = perjson[0].filedNameZh;
|
|
|
- }
|
|
|
- if (show) {
|
|
|
- let v = linSAr.fieldValues[i];
|
|
|
- if (v != "" && !isNaN(parseFloat(v))) {
|
|
|
- v = Math.round(parseFloat(v) * 100) / 100;
|
|
|
- }
|
|
|
- cur.push({ name: fieldName, value: v, order });
|
|
|
- }
|
|
|
- });
|
|
|
- } else {
|
|
|
- that.$message({
|
|
|
- message: "查询结果为空!",
|
|
|
- type: "warning",
|
|
|
- customClass: "messageIndex",
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- //排序
|
|
|
- cur.sort((a, b) => a.order - b.order);
|
|
|
- let urlNew = obj.url + ".json";
|
|
|
- let resNew = await axios.get(urlNew);
|
|
|
- let serCode = resNew.data.prjCoordSys.epsgCode;
|
|
|
- let points = [];
|
|
|
- for (let y = 0; y < e.features[u].geometry.points.length; y++) {
|
|
|
- let c = {};
|
|
|
- if (serCode == 3857) {
|
|
|
- c = that.cartesianToCartographic84(
|
|
|
- e.features[u].geometry.points[y].x,
|
|
|
- e.features[u].geometry.points[y].y
|
|
|
- );
|
|
|
- } else {
|
|
|
- c = e.features[u].geometry.points[y];
|
|
|
- }
|
|
|
- points.push([c.x, c.y]);
|
|
|
- }
|
|
|
- parts.push(e.features[u].geometry.parts);
|
|
|
- geoms.push(points);
|
|
|
- queryData.push(cur);
|
|
|
- }
|
|
|
-
|
|
|
- that.queryResultsGeomPart[obj.id] = parts;
|
|
|
- that.queryResults[obj.id] = queryData;
|
|
|
- that.queryResultsGeom[obj.id] = geoms;
|
|
|
+ this.queryResultsGeomPart[obj.id] = parts;
|
|
|
+ this.queryResults[obj.id] = queryData;
|
|
|
+ this.queryResultsGeom[obj.id] = geoms;
|
|
|
}
|
|
|
this.setactiveLayerId();
|
|
|
},
|
|
@@ -899,21 +817,14 @@ export default {
|
|
|
if (!dataUrl) {
|
|
|
completed(null);
|
|
|
} else {
|
|
|
- let e = await this.mapQuery(dataUrl, queryByIDParameters);
|
|
|
+ let e = await mapQuery(dataUrl, queryByIDParameters);
|
|
|
if (completed) {
|
|
|
completed(e, Fields);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
- async mapQuery(url, queryObj) {
|
|
|
- let response = await axios.post(url, queryObj);
|
|
|
- if (response.data.featureCount > 0) {
|
|
|
- return response.data;
|
|
|
- } else {
|
|
|
- return null;
|
|
|
- }
|
|
|
- },
|
|
|
+
|
|
|
convertCoordinates(coordArray) {
|
|
|
return coordArray.map((coord) => [coord.x, coord.y]);
|
|
|
},
|
|
@@ -932,51 +843,7 @@ export default {
|
|
|
removeGeoJSON("geoserver");
|
|
|
viewer.dataSources.remove(dataSourceLayer);
|
|
|
},
|
|
|
- /**
|
|
|
- * 笛卡尔坐标系转WGS84坐标系(经纬度)
|
|
|
- * @author
|
|
|
- * @param {object} point 点,笛卡尔坐标{x:x,y:y,z:z}
|
|
|
- * @returns {object} -lat: lat, lng: lng, alt: alt
|
|
|
- */
|
|
|
- cartesian3ToWGS84(point) {
|
|
|
- var cartesian3 = new Cesium.Cartesian3(point.x, point.y, point.z);
|
|
|
- var cartographic = Cesium.Cartographic.fromCartesian(cartesian3);
|
|
|
- var lat = Cesium.Math.toDegrees(cartographic.latitude);
|
|
|
- var lng = Cesium.Math.toDegrees(cartographic.longitude);
|
|
|
- var alt = cartographic.height;
|
|
|
- return {
|
|
|
- lat: lat,
|
|
|
- lng: lng,
|
|
|
- alt: alt,
|
|
|
- };
|
|
|
- },
|
|
|
- /**
|
|
|
- * 墨卡托坐标系转WGS84坐标系(经纬度)
|
|
|
- * @author
|
|
|
- * @param number x
|
|
|
- * @param number y
|
|
|
- * @returns {object} x: x, y: y, z: z
|
|
|
- */
|
|
|
- cartesianToCartographic84(x, y) {
|
|
|
- let cartesian3InMercator = new Cesium.Cartesian3(x, y, 0);
|
|
|
- let mercator = new Cesium.WebMercatorProjection();
|
|
|
- let p = mercator.unproject(cartesian3InMercator);
|
|
|
- // 将墨卡托坐标转换为WGS84坐标
|
|
|
- // let cartesian3InWGS84 =
|
|
|
- // Cesium.Ellipsoid.WGS84.cartesianToCartographic(mercator.unproject(cartesian3InMercator));
|
|
|
- return {
|
|
|
- x: Cesium.Math.toDegrees(p.longitude),
|
|
|
- y: Cesium.Math.toDegrees(p.latitude),
|
|
|
- z: p.height,
|
|
|
- };
|
|
|
- },
|
|
|
- calcIserverURI(url) {
|
|
|
- let uriArr = url.split("/");
|
|
|
- uriArr[5] = uriArr[5].replace("map-", "data-");
|
|
|
- uriArr[7] = "data";
|
|
|
- uriArr[8] = "featureResults.rjson?returnContent=true";
|
|
|
- return uriArr.join("/");
|
|
|
- },
|
|
|
+
|
|
|
remove_query_click() {
|
|
|
for (var i = 0; i < 10; i++) {
|
|
|
query_click.entities.values.forEach((res) => {
|
|
@@ -1078,7 +945,7 @@ export default {
|
|
|
console.log(res.positions, points);
|
|
|
this.getGeoserver({ points }, obj);
|
|
|
} else {
|
|
|
- this.mapSelect(nReaions,obj);
|
|
|
+ this.mapSelect(nReaions, obj);
|
|
|
}
|
|
|
});
|
|
|
},
|