From 1ff13ceb222d4059252201504cd963df26cafec8 Mon Sep 17 00:00:00 2001 From: Surpriseplus <845948745@qq.com> Date: 星期三, 23 八月 2023 17:13:43 +0800 Subject: [PATCH] 添加点击矢量图层详细信息展示功能,修改图层管理加载顺序 --- src/assets/js/Map/server.js | 37 ++++++++++++++++++++++++++++++++++++- 1 files changed, 36 insertions(+), 1 deletions(-) diff --git a/src/assets/js/Map/server.js b/src/assets/js/Map/server.js index 642d15a..65ea768 100644 --- a/src/assets/js/Map/server.js +++ b/src/assets/js/Map/server.js @@ -1,7 +1,7 @@ import { getToken } from "@/utils/auth"; //閰嶇疆鏂囦欢鍦板潃 import config from "./config"; - +import store from "@/store"; const server = { layerList: [], addTreeData(treeNode) { @@ -341,9 +341,16 @@ //鍔犺浇GeoServer-WMS鏈嶅姟 setAddGeoWmsLayer(res) { var url = this.getLayrUrl(res); + var that = this + var getFeatureInfoFormat = new SmartEarth.Cesium.GetFeatureInfoFormat("html", null, function (html) { + that.getFeatureInfo(html) + }); let layer = new SmartEarth.Cesium.WebMapServiceImageryProvider({ url: url, layers: res.tab, + getFeatureInfoParameters: { info_format: 'text/html' }, + enablePickFeatures: true, + getFeatureInfoFormats: [getFeatureInfoFormat], parameters: { transparent: true, format: "image/png", @@ -357,5 +364,33 @@ let img_layer = window.Viewer.imageryLayers.addImageryProvider(layer); this.layerList.push({ id: res.id, layerData: img_layer, type: "wmts" }); }, + getFeatureInfo(html) { + store.state.details.showDetails = false; + var start = html.indexOf("<caption class=\"featureInfo\">") + "<caption class=\"featureInfo\">".length; + var end = html.indexOf("</caption>"); + var tab = html.substr(start, end - start); + var std = html.substr(html.indexOf('<th>'), html.lastIndexOf('</th>') - html.indexOf('<th>') + 5).replaceAll(' ', '').replaceAll('\n', '').split('</th>') + var gindex = null; + for (var i = 0; i < std.length; i++) { + if (std[i].indexOf('gid') > -1) { + gindex = i; + break; + } + } + if (!gindex) return + var str = html.substr(html.indexOf('<td>'), html.lastIndexOf('</td>') - html.indexOf('<td>') + 5).replaceAll(' ', '').replaceAll('\n', '').split('</td>') + var gid = parseInt(str[gindex].replaceAll( + '<td>', '' + )) + if (gid && tab) { + + store.state.details = { + gid: gid, + tab: tab, + showDetails: true + } + } + + }, }; export default server; -- Gitblit v1.9.3