|
@@ -415,14 +415,93 @@ export default {
|
|
|
this.pickPosition(movement);
|
|
|
}
|
|
|
},
|
|
|
- mapSelect(movement) {
|
|
|
- console.log(window.tempSelect, "window.tempSelect");
|
|
|
- let url1 = window.tempSelect.url.replace("3D-", "data-");
|
|
|
- let url2 = url1.replace(
|
|
|
- "realspace",
|
|
|
- "data/featureResults.rjson?returnContent=true"
|
|
|
- );
|
|
|
-
|
|
|
+ async mapSelect(pos, movement) {
|
|
|
+ let obj = window.tempSelect;
|
|
|
+ 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 }],
|
|
|
+ points: pos,
|
|
|
+ type: "REGION",
|
|
|
+ },
|
|
|
+ bufferDistance: 0.00005,
|
|
|
+ hasGeometry: true,
|
|
|
+ };
|
|
|
+ let url2 = this.calcIserverURI(obj.url);
|
|
|
+ let e;
|
|
|
+ e = await this.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);
|
|
|
+ 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",
|
|
|
+ });
|
|
|
+ }
|
|
|
+ // console.log(cur, "cur");
|
|
|
+ //排序
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+
|
|
|
+ this.queryResultsGeomPart[obj.id] = parts;
|
|
|
+ this.queryResults[obj.id] = queryData;
|
|
|
+ this.queryResultsGeom[obj.id] = geoms;
|
|
|
+ }
|
|
|
+ this.setactiveLayerId();
|
|
|
+
|
|
|
// this.drawPolygon(window.tempSelect)
|
|
|
// //拾取模型
|
|
|
// let pickedFeature = viewer.scene.pick(movement.position);
|
|
@@ -953,12 +1032,12 @@ export default {
|
|
|
},
|
|
|
//绘制
|
|
|
drawMap() {
|
|
|
+ let nReaions = [];
|
|
|
if (!window.handlerPolygon) {
|
|
|
common.initHandler("Polygon");
|
|
|
}
|
|
|
common.handlerDrawing("Polygon").then(
|
|
|
(res) => {
|
|
|
- // console.log(res.positions, "------");
|
|
|
//过滤掉高度
|
|
|
const filteredArr = res.positions.filter((item, index) => {
|
|
|
if ((index + 1) % 3 !== 0) return item;
|
|
@@ -966,14 +1045,20 @@ export default {
|
|
|
filteredArr.push(res.positions[0]);
|
|
|
filteredArr.push(res.positions[1]);
|
|
|
console.log(filteredArr, "max-----");
|
|
|
+ for (let i = 0; i < filteredArr.length; i += 2) {
|
|
|
+ // result.push(arr.slice(i, i + 2));
|
|
|
+ nReaions.push({
|
|
|
+ x: filteredArr.slice(i, i + 2)[0],
|
|
|
+ y: filteredArr.slice(i, i + 2)[1],
|
|
|
+ });
|
|
|
+ }
|
|
|
+ console.log(nReaions, "nReaions");
|
|
|
+
|
|
|
store.state.vectorlayerlist.forEach((obj) => {
|
|
|
if (obj.serverType == "geoserver") {
|
|
|
// this.getGeoserver(xy, obj);
|
|
|
} else {
|
|
|
- // if (!obj.fwgzkj && !obj.fwmc) {
|
|
|
- // continue;
|
|
|
- // }
|
|
|
- // this.superQuery(xy, obj);
|
|
|
+ this.mapSelect(nReaions);
|
|
|
}
|
|
|
});
|
|
|
},
|