Skip to content

Commit

Permalink
Pass through loadOptions and AbortSignal to MVTLayer & TerrainLayer (v…
Browse files Browse the repository at this point in the history
  • Loading branch information
felixpalmer authored Jun 4, 2021
1 parent a23944e commit fb27f57
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 10 deletions.
9 changes: 6 additions & 3 deletions modules/geo-layers/src/mvt-layer/mvt-layer.js
Original file line number Diff line number Diff line change
Expand Up @@ -97,20 +97,23 @@ export default class MVTLayer extends TileLayer {
return Promise.reject('Invalid URL');
}
let options = this.getLoadOptions();
const {binary, fetch} = this.props;
const {signal, x, y, z} = tile;
const loaders = this.props.loaders[0];
options = {
...options,
mvt: {
...(options && options.mvt),
coordinates: this.context.viewport.resolution ? 'wgs84' : 'local',
tileIndex: {x: tile.x, y: tile.y, z: tile.z}
tileIndex: {x, y, z}
// Local worker debug
// workerUrl: `modules/mvt/dist/mvt-loader.worker.js`
// Set worker to null to skip web workers
// workerUrl: null
},
gis: this.props.binary ? {format: 'binary'} : {}
gis: binary ? {format: 'binary'} : {}
};
return load(url, this.props.loaders[0], options);
return fetch(url, {layer: this, loaders, options, signal});
}

renderSubLayers(props) {
Expand Down
15 changes: 11 additions & 4 deletions modules/geo-layers/src/terrain-layer/terrain-layer.js
Original file line number Diff line number Diff line change
Expand Up @@ -98,11 +98,17 @@ export default class TerrainLayer extends CompositeLayer {
}
}

loadTerrain({elevationData, bounds, elevationDecoder, meshMaxError, workerUrl}) {
loadTerrain({elevationData, bounds, elevationDecoder, meshMaxError, signal, workerUrl}) {
const loadOptions = this.getLoadOptions();
if (!elevationData) {
return null;
}
const options = {
...loadOptions,
fetch: {
...(loadOptions && loadOptions.fetch),
signal
},
terrain: {
bounds,
meshMaxError,
Expand All @@ -116,11 +122,11 @@ export default class TerrainLayer extends CompositeLayer {
}

getTiledTerrainData(tile) {
const {elevationData, texture, elevationDecoder, meshMaxError, workerUrl} = this.props;
const {elevationData, fetch, texture, elevationDecoder, meshMaxError, workerUrl} = this.props;
const dataUrl = getURLFromTemplate(elevationData, tile);
const textureUrl = getURLFromTemplate(texture, tile);

const {bbox, z} = tile;
const {bbox, signal, z} = tile;
const viewport = new WebMercatorViewport({
longitude: (bbox.west + bbox.east) / 2,
latitude: (bbox.north + bbox.south) / 2,
Expand All @@ -135,11 +141,12 @@ export default class TerrainLayer extends CompositeLayer {
bounds,
elevationDecoder,
meshMaxError,
signal,
workerUrl
});
const surface = textureUrl
? // If surface image fails to load, the tile should still be displayed
load(textureUrl).catch(_ => null)
fetch(textureUrl, {layer: this, signal}).catch(_ => null)
: Promise.resolve(null);

return Promise.all([terrain, surface]);
Expand Down
6 changes: 3 additions & 3 deletions modules/geo-layers/src/tile-layer/tile-layer.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,14 @@ const defaultProps = {
// Use load directly so we don't use ResourceManager
fetch: {
type: 'function',
value: (url, {layer, signal}) => {
const loadOptions = {...layer.getLoadOptions()};
value: (url, {layer, loaders, options, signal}) => {
const loadOptions = options || layer.getLoadOptions();
loadOptions.fetch = {
...loadOptions.fetch,
signal
};

return load(url, loadOptions);
return loaders ? load(url, loaders, loadOptions) : load(url, loadOptions);
},
compare: false
},
Expand Down

0 comments on commit fb27f57

Please sign in to comment.