Skip to content

Commit 1699e99

Browse files
committed
[bug] 修复ol webmap 1)sonar报错 2)叠加图层含有无权限的restmap图层,或被删除图层时报错
review by zhaoq
1 parent f7220ea commit 1699e99

File tree

1 file changed

+28
-12
lines changed

1 file changed

+28
-12
lines changed

src/openlayers/mapping/WebMap.js

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import SampleDataInfo from './webmap/config/SampleDataInfo.json';// eslint-disab
2727
import GeoJSON from 'ol/format/GeoJSON';
2828
import MVT from 'ol/format/MVT';
2929
import Observable from 'ol/Observable';
30-
import Map from 'ol/Map';
30+
import olMap from 'ol/Map';
3131
import View from 'ol/View';
3232
import * as olProj from 'ol/proj';
3333
import * as olProj4 from 'ol/proj/proj4';
@@ -216,7 +216,7 @@ export class WebMap extends Observable {
216216
overlays = mapSetting.overlays;
217217
controls = mapSetting.controls;
218218
}
219-
this.map = new Map({
219+
this.map = new olMap({
220220
interactions: interactions,
221221
overlays: overlays,
222222
controls: controls,
@@ -1200,18 +1200,27 @@ export class WebMap extends Observable {
12001200
* @description 获取(Supermap RestMap)的图层参数。
12011201
* @param {Object} layerInfo - 图层信息。
12021202
* @param {function} callback - 获得tile图层参数执行的回调函数
1203+
* @param {function} failedCallback - 失败回调函数
12031204
*/
1204-
async getTileLayerExtent(layerInfo, callback) {
1205+
async getTileLayerExtent(layerInfo, callback, failedCallback) {
12051206
let that = this;
12061207
// 默认使用动态投影方式请求数据
12071208
let dynamicLayerInfo = await that.getTileLayerExtentInfo(layerInfo)
1208-
if (dynamicLayerInfo) {
1209-
Object.assign(layerInfo, dynamicLayerInfo);
1210-
callback(layerInfo);
1209+
if (dynamicLayerInfo.succeed === false) {
1210+
if (dynamicLayerInfo.error.code === 400) {
1211+
// dynamicLayerInfo.error.code === 400 不支持动态投影,请求restmap原始信息
1212+
let originLayerInfo = await that.getTileLayerExtentInfo(layerInfo, false);
1213+
if (originLayerInfo.succeed === false) {
1214+
failedCallback();
1215+
} else {
1216+
Object.assign(layerInfo, originLayerInfo);
1217+
callback(layerInfo);
1218+
}
1219+
} else {
1220+
failedCallback();
1221+
}
12111222
} else {
1212-
// 不支持动态投影,请求restmap原始信息
1213-
let originLayerInfo = await that.getTileLayerExtentInfo(layerInfo, false);
1214-
Object.assign(layerInfo, originLayerInfo);
1223+
Object.assign(layerInfo, dynamicLayerInfo);
12151224
callback(layerInfo);
12161225
}
12171226
}
@@ -1220,7 +1229,7 @@ export class WebMap extends Observable {
12201229
* @private
12211230
* @function ol.supermap.WebMap.prototype.getTileLayerExtentInfo
12221231
* @description 获取rest map的图层参数。
1223-
* @param {String} url - 图层url
1232+
* @param {Object} layerInfo - 图层信息
12241233
* @param {Boolean} isDynamic - 是否请求动态投影信息
12251234
*/
12261235
getTileLayerExtentInfo(layerInfo, isDynamic = true) {
@@ -1249,7 +1258,7 @@ export class WebMap extends Observable {
12491258
return response.json();
12501259
}).then(async (result) => {
12511260
if (result.succeed === false) {
1252-
return null
1261+
return result
12531262
}
12541263
// let isSupportWebp = await that.isSupportWebp(layerInfo.url, token);
12551264
return {
@@ -1261,7 +1270,10 @@ export class WebMap extends Observable {
12611270
format: 'png'
12621271
}
12631272
}).catch((error) => {
1264-
throw error;
1273+
return {
1274+
succeed: false,
1275+
error: error
1276+
}
12651277
});
12661278
}
12671279

@@ -1688,6 +1700,10 @@ export class WebMap extends Observable {
16881700
that.map.addLayer(that.createBaseLayer(layerInfo, layerIndex));
16891701
that.layerAdded++;
16901702
that.sendMapToUser(len);
1703+
}, function (e) {
1704+
that.layerAdded++;
1705+
that.sendMapToUser(len);
1706+
that.errorCallback && that.errorCallback(e, 'getLayerFaild', that.map);
16911707
})
16921708
}else if (layer.layerType === 'SUPERMAP_REST' ||
16931709
layer.layerType === "WMS" ||

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy