Skip to content

Commit 80536ae

Browse files
[fix]新增l7layer的reRender时机
1 parent 2412beb commit 80536ae

File tree

2 files changed

+54
-49
lines changed

2 files changed

+54
-49
lines changed

src/common/overlay/l7/L7LayerBase.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ export class L7LayerBase extends CustomOverlayLayer {
9595
source.on('update', () => {
9696
this.reRender();
9797
});
98+
this.l7layer.on('add', () => this.reRender());
9899
}
99100

100101
getLayer() {
@@ -215,15 +216,15 @@ export class L7LayerBase extends CustomOverlayLayer {
215216
type: 'Point'
216217
},
217218
properties: {
218-
...feature
219+
...feature
219220
}
220-
}
221+
};
221222
});
222223
sourceInfo.getData = () => {
223224
return {
224225
type: 'FeatureCollection',
225226
features: formatData
226-
}
227+
};
227228
};
228229
break;
229230
}
@@ -302,7 +303,9 @@ export class L7LayerBase extends CustomOverlayLayer {
302303
}
303304
const { layerSource, pickingService } = this.l7layer;
304305
let datas = pickingService.handleRawFeature(layerSource.data.dataArray, this.l7layer);
305-
const { parser: { type } } = layerSource;
306+
const {
307+
parser: { type }
308+
} = layerSource;
306309
if (type === 'mvt') {
307310
const { tileset: { cacheTiles = [] } = {} } = layerSource;
308311
const { sourceLayer, featureId = 'id' } = this.l7layer.rawConfig;

test/mapboxgl/overlay/L7LayerSpec.js

Lines changed: 47 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,53 @@ describe('mapboxgl_L7Layer', () => {
9494
done();
9595
});
9696
});
97+
it('HeatmapLayer grid updateSource', (done) => {
98+
var layer = new L7Layer({ type: 'HeatmapLayer' });
99+
var l7Layer = layer.getL7Layer();
100+
l7Layer
101+
.source(data, {
102+
parser: {
103+
type: 'json',
104+
x: 'longitude',
105+
y: 'latitude'
106+
},
107+
transforms: [
108+
{
109+
type: 'grid',
110+
size: 2000000,
111+
field: 'v',
112+
method: 'sum'
113+
}
114+
]
115+
})
116+
.shape('circle')
117+
.active(true)
118+
.animate(true)
119+
.size(56)
120+
.color('#4cfd47');
121+
spyOn(layer, 'reRender');
122+
map.addLayer(layer);
123+
l7Layer.setData(data, {
124+
parser: {
125+
type: 'json',
126+
x: 'j',
127+
y: 'w'
128+
},
129+
transforms: [
130+
{
131+
type: 'grid',
132+
size: 200000,
133+
field: 'v',
134+
method: 'sum'
135+
}
136+
]
137+
});
138+
expect(l7Layer).not.toBeNull();
139+
setTimeout(() => {
140+
expect(layer.reRender).toHaveBeenCalledTimes(2);
141+
done();
142+
}, 200);
143+
});
97144

98145
it('getL7Scene1', (done) => {
99146
var layer = new L7Layer({ type: 'PointLayer' });
@@ -325,51 +372,6 @@ describe('mapboxgl_L7Layer', () => {
325372

326373
done();
327374
});
328-
it('HeatmapLayer grid updateSource', (done) => {
329-
var layer = new L7Layer({ type: 'HeatmapLayer' });
330-
var l7Layer = layer.getL7Layer();
331-
l7Layer
332-
.source(data, {
333-
parser: {
334-
type: 'json',
335-
x: 'longitude',
336-
y: 'latitude'
337-
},
338-
transforms: [
339-
{
340-
type: 'grid',
341-
size: 2000000,
342-
field: 'v',
343-
method: 'sum'
344-
}
345-
]
346-
})
347-
.shape('circle')
348-
.active(true)
349-
.animate(true)
350-
.size(56)
351-
.color('#4cfd47');
352-
map.addLayer(layer);
353-
spyOn(layer, 'reRender');
354-
l7Layer.setData(data, {
355-
parser: {
356-
type: 'json',
357-
x: 'j',
358-
y: 'w'
359-
},
360-
transforms: [
361-
{
362-
type: 'grid',
363-
size: 200000,
364-
field: 'v',
365-
method: 'sum'
366-
}
367-
]
368-
});
369-
expect(l7Layer).not.toBeNull();
370-
expect(layer.reRender).toHaveBeenCalled();
371-
done();
372-
});
373375

374376
it('mvt layer', (done) => {
375377
var layer = new L7Layer({ type: 'PointLayer' });

0 commit comments

Comments
 (0)