| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 6ad0774 commit 1ad7d8b
6 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -2468,6 +2468,11 @@ export function createWebMapV2Extending(SuperClass, { MapManager, mapRepo }) { | |||
| 2468 | 2468 | default: | |
| 2469 | 2469 | break; | |
| 2470 | 2470 | } | |
| 2471 | + const matchIndex = this._legendList.findIndex(item => item.layerId === layerInfo.layerID); | ||
| 2472 | + if (matchIndex > -1) { | ||
| 2473 | + this._legendList.splice(matchIndex, 1, legendItem); | ||
| 2474 | + return; | ||
| 2475 | + } | ||
| 2471 | 2476 | this._legendList.push(legendItem); | |
| 2472 | 2477 | } | |
| 2473 | 2478 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -205,11 +205,11 @@ export function createWebMapV3Extending(SuperClass, { MapManager, mapRepo, mapRe | |||
| 205 | 205 | ||
| 206 | 206 | clean(removeMap = true) { | |
| 207 | 207 | if (this.map) { | |
| 208 | - const scene = this.map.$l7scene; | ||
| 209 | - if (scene) { | ||
| 210 | - scene.removeAllLayer(); | ||
| 208 | + if (removeMap) { | ||
| 209 | + const scene = this.map.$l7scene; | ||
| 210 | + scene && scene.removeAllLayer(); | ||
| 211 | + this.map.remove(); | ||
| 211 | 212 | } | |
| 212 | - removeMap && this.map.remove(); | ||
| 213 | 213 | this.map = null; | |
| 214 | 214 | this._legendList = []; | |
| 215 | 215 | this._mapResourceInfo = {}; | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1360,8 +1360,10 @@ describe('mapboxgl_WebMapV2', () => { | |||
| 1360 | 1360 | }); | |
| 1361 | 1361 | datavizWebmap = new WebMap(id, { ...commonOption, map: commonMap }, { ...commonMapOptions }); | |
| 1362 | 1362 | const callback = function (data) { | |
| 1363 | - expect(datavizWebmap.getLayers().length).toBe(uniqueLayer_polygon.layers.length + 1); | ||
| 1364 | - const layerInfo = { ...uniqueLayer_polygon.layers[0], id: uniqueLayer_polygon.layers[0].name }; | ||
| 1363 | + const layers = datavizWebmap.getLayers(); | ||
| 1364 | + expect(layers.length).toBe(uniqueLayer_polygon.layers.length + 1); | ||
| 1365 | + expect(layers.length).toBe(data.layers.length); | ||
| 1366 | + expect(datavizWebmap.getLegends().length).toBe(2); | ||
| 1365 | 1367 | const features = [ | |
| 1366 | 1368 | { | |
| 1367 | 1369 | type: 'Feature', | |
@@ -1386,9 +1388,10 @@ describe('mapboxgl_WebMapV2', () => { | |||
| 1386 | 1388 | } | |
| 1387 | 1389 | } | |
| 1388 | 1390 | ]; | |
| 1389 | - const spy = spyOn(datavizWebmap._handler, '_initOverlayLayer'); | ||
| 1390 | - datavizWebmap.updateOverlayLayer(layerInfo, features); | ||
| 1391 | + const spy = spyOn(datavizWebmap._handler, '_initOverlayLayer').and.callThrough(); | ||
| 1392 | + datavizWebmap.updateOverlayLayer({ id: datavizWebmap._handler._mapInfo.layers[0].layerID }, features); | ||
| 1391 | 1393 | expect(spy).toHaveBeenCalled(); | |
| 1394 | + expect(datavizWebmap.getLegends().length).toBe(2); | ||
| 1392 | 1395 | done(); | |
| 1393 | 1396 | }; | |
| 1394 | 1397 | datavizWebmap.on('mapcreatesucceeded', callback); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -38,6 +38,7 @@ describe('mapboxgl-webmap3.0', () => { | |||
| 38 | 38 | originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL; | |
| 39 | 39 | jasmine.DEFAULT_TIMEOUT_INTERVAL = 50000; | |
| 40 | 40 | mapboxgl.Map.prototype.overlayLayersManager = {}; | |
| 41 | + mbglmap.prototype.getL7Scene = mapboxgl.Map.prototype.getL7Scene; | ||
| 41 | 42 | }); | |
| 42 | 43 | afterEach(() => { | |
| 43 | 44 | if (mapstudioWebmap && mapstudioWebmap.map) { | |
@@ -47,6 +48,7 @@ describe('mapboxgl-webmap3.0', () => { | |||
| 47 | 48 | } | |
| 48 | 49 | window.document.body.removeChild(testDiv); | |
| 49 | 50 | jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout; | |
| 51 | + mbglmap.prototype.getL7Scene = undefined; | ||
| 50 | 52 | }); | |
| 51 | 53 | ||
| 52 | 54 | it('initialize_background', (done) => { | |
@@ -1196,4 +1198,65 @@ describe('mapboxgl-webmap3.0', () => { | |||
| 1196 | 1198 | }; | |
| 1197 | 1199 | mapstudioWebmap.once('mapcreatesucceeded', callback); | |
| 1198 | 1200 | }); | |
| 1201 | + | ||
| 1202 | + it('test webmap with l7layers append l7layers', (done) => { | ||
| 1203 | + spyOn(MapManagerUtil, 'default').and.callFake(mbglmap); | ||
| 1204 | + const mapInfo = JSON.parse(mapstudioWebMap_L7Layers); | ||
| 1205 | + spyOn(L7, 'PointLayer').and.callFake(mockL7.PointLayer); | ||
| 1206 | + spyOn(L7, 'LineLayer').and.callFake(mockL7.PointLayer); | ||
| 1207 | + spyOn(L7, 'PolygonLayer').and.callFake(mockL7.PointLayer); | ||
| 1208 | + spyOn(L7, 'HeatmapLayer').and.callFake(mockL7.PointLayer); | ||
| 1209 | + spyOn(L7, 'Scene').and.callFake(mockL7.Scene); | ||
| 1210 | + spyOn(L7, 'Mapbox').and.callFake(mockL7.Mapbox); | ||
| 1211 | + spyOn(FetchRequest, 'get').and.callFake((url) => { | ||
| 1212 | + if (url.indexOf('web/config/portal.json') > -1) { | ||
| 1213 | + return Promise.resolve(new Response(JSON.stringify(iportal_serviceProxy))); | ||
| 1214 | + } | ||
| 1215 | + if (url.indexOf('map.json') > -1) { | ||
| 1216 | + return Promise.resolve(new Response(JSON.stringify({ ...mapInfo, crs: 'EPSG:3857' }))); | ||
| 1217 | + } | ||
| 1218 | + if (url.indexOf('617580084.json') > -1) { | ||
| 1219 | + return Promise.resolve(new Response(msProjectINfo_L7Layers)); | ||
| 1220 | + } | ||
| 1221 | + if (url.indexOf('/sprite') > -1) { | ||
| 1222 | + return Promise.resolve(new Response(msSpriteInfo)); | ||
| 1223 | + } | ||
| 1224 | + if (url.indexOf('/web/datas/1052943054/structureddata/ogc-features/collections/all/items.json') > -1) { | ||
| 1225 | + return Promise.resolve(new Response(l7StructureData1052943054Items)); | ||
| 1226 | + } | ||
| 1227 | + if (url.indexOf('/web/datas/1052943054/structureddata.json') > -1) { | ||
| 1228 | + return Promise.resolve(new Response(l7StructureData1052943054)); | ||
| 1229 | + } | ||
| 1230 | + if (url.indexOf('/web/datas/1767084124/structureddata/ogc-features/collections/all/items.json') > -1) { | ||
| 1231 | + return Promise.resolve(new Response(l7StructureData1767084124Items)); | ||
| 1232 | + } | ||
| 1233 | + if (url.indexOf('/web/datas/1767084124/structureddata.json') > -1) { | ||
| 1234 | + return Promise.resolve(new Response(l7StructureData1767084124)); | ||
| 1235 | + } | ||
| 1236 | + return Promise.resolve(); | ||
| 1237 | + }); | ||
| 1238 | + mapstudioWebmap = new WebMap( | ||
| 1239 | + id, | ||
| 1240 | + { | ||
| 1241 | + server: server | ||
| 1242 | + } | ||
| 1243 | + ); | ||
| 1244 | + mapstudioWebmap.once('mapcreatesucceeded', ({ map: firstMap, layers: firstLayersList }) => { | ||
| 1245 | + expect(firstMap).not.toBeUndefined(); | ||
| 1246 | + const style = firstMap.getStyle(); | ||
| 1247 | + expect(style.layers.length).toEqual(mapInfo.layers.length); | ||
| 1248 | + const webMap1 = new WebMap(id, { server, map: firstMap }); | ||
| 1249 | + webMap1.once('mapcreatesucceeded', ({ map, layers }) => { | ||
| 1250 | + expect(map).toEqual(firstMap); | ||
| 1251 | + expect(layers.length).toBe(firstLayersList.length); | ||
| 1252 | + expect(map.$l7scene).not.toBeUndefined(); | ||
| 1253 | + const mapSpy = spyOn(map, 'remove'); | ||
| 1254 | + const sceneSpy = spyOn(map.$l7scene, 'removeAllLayer'); | ||
| 1255 | + webMap1.cleanLayers(); | ||
| 1256 | + expect(mapSpy).not.toHaveBeenCalled(); | ||
| 1257 | + expect(sceneSpy).not.toHaveBeenCalled(); | ||
| 1258 | + done(); | ||
| 1259 | + }); | ||
| 1260 | + }); | ||
| 1261 | + }); | ||
| 1199 | 1262 | }); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1361,8 +1361,10 @@ describe('maplibregl_WebMapV2', () => { | |||
| 1361 | 1361 | }); | |
| 1362 | 1362 | datavizWebmap = new WebMap(id, { ...commonOption, map: commonMap }, { ...commonMapOptions }); | |
| 1363 | 1363 | const callback = function (data) { | |
| 1364 | - expect(datavizWebmap.getLayers().length).toBe(uniqueLayer_polygon.layers.length + 1); | ||
| 1365 | - const layerInfo = { ...uniqueLayer_polygon.layers[0], id: uniqueLayer_polygon.layers[0].name }; | ||
| 1364 | + const layers = datavizWebmap.getLayers(); | ||
| 1365 | + expect(layers.length).toBe(uniqueLayer_polygon.layers.length + 1); | ||
| 1366 | + expect(layers.length).toBe(data.layers.length); | ||
| 1367 | + expect(datavizWebmap.getLegends().length).toBe(2); | ||
| 1366 | 1368 | const features = [ | |
| 1367 | 1369 | { | |
| 1368 | 1370 | type: 'Feature', | |
@@ -1387,9 +1389,10 @@ describe('maplibregl_WebMapV2', () => { | |||
| 1387 | 1389 | } | |
| 1388 | 1390 | } | |
| 1389 | 1391 | ]; | |
| 1390 | - const spy = spyOn(datavizWebmap._handler, '_initOverlayLayer'); | ||
| 1391 | - datavizWebmap.updateOverlayLayer(layerInfo, features); | ||
| 1392 | + const spy = spyOn(datavizWebmap._handler, '_initOverlayLayer').and.callThrough(); | ||
| 1393 | + datavizWebmap.updateOverlayLayer({ id: datavizWebmap._handler._mapInfo.layers[0].layerID }, features); | ||
| 1392 | 1394 | expect(spy).toHaveBeenCalled(); | |
| 1395 | + expect(datavizWebmap.getLegends().length).toBe(2); | ||
| 1393 | 1396 | done(); | |
| 1394 | 1397 | }; | |
| 1395 | 1398 | datavizWebmap.on('mapcreatesucceeded', callback); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -38,6 +38,7 @@ describe('maplibregl-webmap3.0', () => { | |||
| 38 | 38 | originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL; | |
| 39 | 39 | jasmine.DEFAULT_TIMEOUT_INTERVAL = 50000; | |
| 40 | 40 | maplibregl.Map.prototype.overlayLayersManager = {}; | |
| 41 | + mbglmap.prototype.getL7Scene = maplibregl.Map.prototype.getL7Scene; | ||
| 41 | 42 | }); | |
| 42 | 43 | afterEach(() => { | |
| 43 | 44 | if (mapstudioWebmap && mapstudioWebmap.map) { | |
@@ -47,6 +48,7 @@ describe('maplibregl-webmap3.0', () => { | |||
| 47 | 48 | } | |
| 48 | 49 | window.document.body.removeChild(testDiv); | |
| 49 | 50 | jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout; | |
| 51 | + mbglmap.prototype.getL7Scene = undefined; | ||
| 50 | 52 | }); | |
| 51 | 53 | ||
| 52 | 54 | it('initialize_background', (done) => { | |
@@ -1196,4 +1198,65 @@ describe('maplibregl-webmap3.0', () => { | |||
| 1196 | 1198 | }; | |
| 1197 | 1199 | mapstudioWebmap.once('mapcreatesucceeded', callback); | |
| 1198 | 1200 | }); | |
| 1201 | + | ||
| 1202 | + it('test webmap with l7layers append l7layers', (done) => { | ||
| 1203 | + spyOn(MapManagerUtil, 'default').and.callFake(mbglmap); | ||
| 1204 | + const mapInfo = JSON.parse(mapstudioWebMap_L7Layers); | ||
| 1205 | + spyOn(L7, 'PointLayer').and.callFake(mockL7.PointLayer); | ||
| 1206 | + spyOn(L7, 'LineLayer').and.callFake(mockL7.PointLayer); | ||
| 1207 | + spyOn(L7, 'PolygonLayer').and.callFake(mockL7.PointLayer); | ||
| 1208 | + spyOn(L7, 'HeatmapLayer').and.callFake(mockL7.PointLayer); | ||
| 1209 | + spyOn(L7, 'Scene').and.callFake(mockL7.Scene); | ||
| 1210 | + spyOn(L7, 'Maplibre').and.callFake(mockL7.Maplibre); | ||
| 1211 | + spyOn(FetchRequest, 'get').and.callFake((url) => { | ||
| 1212 | + if (url.indexOf('web/config/portal.json') > -1) { | ||
| 1213 | + return Promise.resolve(new Response(JSON.stringify(iportal_serviceProxy))); | ||
| 1214 | + } | ||
| 1215 | + if (url.indexOf('map.json') > -1) { | ||
| 1216 | + return Promise.resolve(new Response(JSON.stringify({ ...mapInfo, crs: 'EPSG:3857' }))); | ||
| 1217 | + } | ||
| 1218 | + if (url.indexOf('617580084.json') > -1) { | ||
| 1219 | + return Promise.resolve(new Response(msProjectINfo_L7Layers)); | ||
| 1220 | + } | ||
| 1221 | + if (url.indexOf('/sprite') > -1) { | ||
| 1222 | + return Promise.resolve(new Response(msSpriteInfo)); | ||
| 1223 | + } | ||
| 1224 | + if (url.indexOf('/web/datas/1052943054/structureddata/ogc-features/collections/all/items.json') > -1) { | ||
| 1225 | + return Promise.resolve(new Response(l7StructureData1052943054Items)); | ||
| 1226 | + } | ||
| 1227 | + if (url.indexOf('/web/datas/1052943054/structureddata.json') > -1) { | ||
| 1228 | + return Promise.resolve(new Response(l7StructureData1052943054)); | ||
| 1229 | + } | ||
| 1230 | + if (url.indexOf('/web/datas/1767084124/structureddata/ogc-features/collections/all/items.json') > -1) { | ||
| 1231 | + return Promise.resolve(new Response(l7StructureData1767084124Items)); | ||
| 1232 | + } | ||
| 1233 | + if (url.indexOf('/web/datas/1767084124/structureddata.json') > -1) { | ||
| 1234 | + return Promise.resolve(new Response(l7StructureData1767084124)); | ||
| 1235 | + } | ||
| 1236 | + return Promise.resolve(); | ||
| 1237 | + }); | ||
| 1238 | + mapstudioWebmap = new WebMap( | ||
| 1239 | + id, | ||
| 1240 | + { | ||
| 1241 | + server: server | ||
| 1242 | + } | ||
| 1243 | + ); | ||
| 1244 | + mapstudioWebmap.once('mapcreatesucceeded', ({ map: firstMap, layers: firstLayersList }) => { | ||
| 1245 | + expect(firstMap).not.toBeUndefined(); | ||
| 1246 | + const style = firstMap.getStyle(); | ||
| 1247 | + expect(style.layers.length).toEqual(mapInfo.layers.length); | ||
| 1248 | + const webMap1 = new WebMap(id, { server, map: firstMap }); | ||
| 1249 | + webMap1.once('mapcreatesucceeded', ({ map, layers }) => { | ||
| 1250 | + expect(map).toEqual(firstMap); | ||
| 1251 | + expect(layers.length).toBe(firstLayersList.length); | ||
| 1252 | + expect(map.$l7scene).not.toBeUndefined(); | ||
| 1253 | + const mapSpy = spyOn(map, 'remove'); | ||
| 1254 | + const sceneSpy = spyOn(map.$l7scene, 'removeAllLayer'); | ||
| 1255 | + webMap1.cleanLayers(); | ||
| 1256 | + expect(mapSpy).not.toHaveBeenCalled(); | ||
| 1257 | + expect(sceneSpy).not.toHaveBeenCalled(); | ||
| 1258 | + done(); | ||
| 1259 | + }); | ||
| 1260 | + }); | ||
| 1261 | + }); | ||
| 1199 | 1262 | }); | |
| Back | FazBrowse Home | New Git URL |
0 commit comments