Skip to content

Commit 521f927

Browse files
[fix]isvj-9934 时间轴切换china chinadark不对
1 parent 97cff86 commit 521f927

File tree

3 files changed

+46
-1
lines changed

3 files changed

+46
-1
lines changed

src/common/mapping/utils/util.js

+18-1
Original file line numberDiff line numberDiff line change
@@ -165,10 +165,27 @@ export function getLayerInfosFromCatalogs(catalogs, catalogTypeField = 'type') {
165165
return results;
166166
}
167167

168+
function isSameRasterUrl(urlA, urlB) {
169+
if (urlA === urlB) {
170+
return true;
171+
}
172+
const uriA = new URL(urlA);
173+
const uriB = new URL(urlB);
174+
if (uriA.origin !== uriB.origin) {
175+
return false;
176+
}
177+
const regex = /\/([^/?#]+\.\w+)$/;
178+
const pathA = uriA.pathname.replace(regex, '');
179+
const pathB = uriB.pathname.replace(regex, '');
180+
181+
// 3. 判断子路径关系
182+
return pathA === pathB || pathA.startsWith(pathB + (pathB.endsWith('/') ? '' : '/'));
183+
}
184+
168185
export function isSameRasterLayer(sourceInfo, compareSource) {
169186
const { type, tiles } = sourceInfo;
170187
if (type === 'raster') {
171-
return type === compareSource.type && tiles && compareSource.tiles && (tiles[0].includes(compareSource.tiles[0]) || compareSource.tiles[0].includes(tiles[0]))
188+
return type === compareSource.type && tiles && compareSource.tiles && isSameRasterUrl(tiles[0], compareSource.tiles[0]);
172189
}
173190
return false;
174191
}

test/common/mapping/utils/UtilSpec.js

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { isSameRasterLayer } from '../../../../src/common/mapping/utils/util';
2+
3+
describe('util', () => {
4+
it('isSameRasterLayer', (done) => {
5+
let res = isSameRasterLayer(
6+
{ type: 'raster', tiles: ['http:17.0.0.1:8190/iserver/rest/maps/China'] },
7+
{ type: 'raster', tiles: ['http:17.0.0.1:8190/iserver/rest/maps/ChinaDark'] }
8+
);
9+
expect(res).toBeFalse();
10+
let res1 = isSameRasterLayer(
11+
{ type: 'raster', tiles: ['http:17.0.0.1:8190/iserver/map-China100/rest/maps/China'] },
12+
{ type: 'raster', tiles: ['http:17.0.0.1:8190/iserver/map-China100/rest/maps/China/tileImage.png?a=1234'] }
13+
);
14+
expect(res1).toBeTruthy();
15+
let res12 = isSameRasterLayer(
16+
{ type: 'raster', tiles: ['http:17.0.0.1:8190/iserver/map-China100/rest/maps/China'] },
17+
{ type: 'raster', tiles: ['http:17.0.0.1:8190/iserver/map-China100/rest/maps/China?a=1234'] }
18+
);
19+
expect(res12).toBeTruthy();
20+
let res3 = isSameRasterLayer(
21+
{ type: 'raster', tiles: ['http:17.0.0.1:8190/iserver/map-China100/rest/maps/China?a=1234'] },
22+
{ type: 'raster', tiles: ['http:17.0.0.1:8190/iserver/map-China100/rest/maps/China/tileImage.png?a=1234'] }
23+
);
24+
expect(res3).toBeTruthy();
25+
done();
26+
});
27+
});

test/test-main-common.js

+1
Original file line numberDiff line numberDiff line change
@@ -231,5 +231,6 @@ import './common/mapping/utils/ColorUtilSpec.js';
231231
import './common/mapping/utils/SourceListModelV2Spec.js';
232232
import './common/mapping/utils/SourceListModelV3Spec.js';
233233
import './common/mapping/utils/epsgDefineSpec.js';
234+
import './common/mapping/utils/UtilSpec.js';
234235
import './common/mapping/WebMapServiceSpec';
235236
import './common/mapping/WebMapV2BaseSpec';

0 commit comments

Comments
 (0)