Skip to content

Commit

Permalink
Merge ea021b8 into 7f49cc9
Browse files Browse the repository at this point in the history
  • Loading branch information
Xintong Xia committed Nov 5, 2019
2 parents 7f49cc9 + ea021b8 commit 25a5bbd
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 1 deletion.
12 changes: 11 additions & 1 deletion modules/geo-layers/src/tile-layer/tile-layer.js
Expand Up @@ -28,7 +28,11 @@ export default class TileLayer extends CompositeLayer {

updateState({props, oldProps, context, changeFlags}) {
let {tileCache} = this.state;
if (!tileCache || changeFlags.updateTriggersChanged) {
if (
!tileCache ||
(changeFlags.updateTriggersChanged &&
(changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getTileData))
) {
const {getTileData, maxZoom, minZoom, maxCacheSize} = props;
if (tileCache) {
tileCache.finalize();
Expand All @@ -42,7 +46,13 @@ export default class TileLayer extends CompositeLayer {
onTileError: this._onTileError.bind(this)
});
this.setState({tileCache});
} else if (changeFlags.updateTriggersChanged) {
// if any updateTriggersChanged (other than getTileData), delete the layer
this.state.tileCache.tiles.forEach(tile => {
tile.layer = null;
});
}

const {viewport} = context;
if (changeFlags.viewportChanged && viewport.id !== 'DEFAULT-INITIAL-VIEWPORT') {
const z = this.getLayerZoomLevel();
Expand Down
44 changes: 44 additions & 0 deletions test/modules/geo-layers/tile-layer/tile-layer.spec.js
Expand Up @@ -31,3 +31,47 @@ test('TileLayer', t => {
testLayer({Layer: TileLayer, testCases, onError: t.notOk});
t.end();
});

test('TileLayer#updateTriggers', t => {
const testCases = [
{
props: {
getTileData: 0
},
onAfterUpdate({layer}) {
t.equal(layer.state.tileCache._getTileData, 0, 'Should create a tileCache.');
}
},
{
updateProps: {
getTileData: 1
},
onAfterUpdate({layer}) {
t.equal(
layer.state.tileCache._getTileData,
0,
'Should not create a tileCache when updateTriggers not changed.'
);
}
},
{
updateProps: {
getTileData: 2,
updateTriggers: {
getTileData: 2
}
},
onAfterUpdate({layer}) {
t.equal(
layer.state.tileCache._getTileData,
2,
'Should create a new tileCache with updated getTileData.'
);
}
}
];

testLayer({Layer: TileLayer, testCases, onError: t.notOk});

t.end();
});

0 comments on commit 25a5bbd

Please sign in to comment.