forked from MapComplete/MapComplete
Further stabilization of UK-addresses: add minzoom requirement to import button, fix eternal loading message
This commit is contained in:
parent
561b21d2fe
commit
d8fa054a34
8 changed files with 71 additions and 40 deletions
|
@ -29,8 +29,12 @@ export default class SaveTileToLocalStorageActor {
|
|||
|
||||
public static MarkVisited(layerId: string, tileId: number, freshness: Date){
|
||||
const key = `${SaveTileToLocalStorageActor.storageKey}-${layerId}-${tileId}`
|
||||
localStorage.setItem(key + "-time", JSON.stringify(freshness.getTime()))
|
||||
localStorage.setItem(key + "-format", SaveTileToLocalStorageActor.formatVersion)
|
||||
try{
|
||||
localStorage.setItem(key + "-time", JSON.stringify(freshness.getTime()))
|
||||
localStorage.setItem(key + "-format", SaveTileToLocalStorageActor.formatVersion)
|
||||
}catch(e){
|
||||
console.error("Could not mark tile ", key, "as visited")
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -206,7 +206,9 @@ export default class FeaturePipeline {
|
|||
maxZoomLevel: state.layoutToUse.clustering.maxZoom,
|
||||
registerTile: (tile) => {
|
||||
// We save the tile data for the given layer to local storage
|
||||
new SaveTileToLocalStorageActor(tile, tile.tileIndex)
|
||||
if(source.layer.layerDef.source.geojsonSource === undefined || source.layer.layerDef.source.isOsmCacheLayer == true){
|
||||
new SaveTileToLocalStorageActor(tile, tile.tileIndex)
|
||||
}
|
||||
perLayerHierarchy.get(source.layer.layerDef.id).registerTile(new RememberingSource(tile))
|
||||
tile.features.addCallbackAndRunD(_ => self.newDataLoadedSignal.setData(tile))
|
||||
|
||||
|
@ -239,7 +241,11 @@ export default class FeaturePipeline {
|
|||
|
||||
|
||||
this.runningQuery = updater.runningQuery.map(
|
||||
overpass => overpass || osmFeatureSource.isRunning.data, [osmFeatureSource.isRunning]
|
||||
overpass => {
|
||||
console.log("FeaturePipeline: runningQuery state changed. Overpass", overpass ? "is querying," : "is idle,",
|
||||
"osmFeatureSource is", osmFeatureSource.isRunning ? "is running ("+ +")" : "is idle")
|
||||
return overpass || osmFeatureSource.isRunning.data;
|
||||
}, [osmFeatureSource.isRunning]
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -58,21 +58,25 @@ export default class OsmFeatureSource {
|
|||
|
||||
for (const neededTile of neededTiles) {
|
||||
if (self.downloadedTiles.has(neededTile)) {
|
||||
return;
|
||||
continue;
|
||||
}
|
||||
console.log("Tile download", Tiles.tile_from_index(neededTile).join("/"), "started")
|
||||
self.downloadedTiles.add(neededTile)
|
||||
Promise.resolve(self.LoadTile(...Tiles.tile_from_index(neededTile)).then(_ => {
|
||||
}))
|
||||
self.LoadTile(...Tiles.tile_from_index(neededTile)).then(_ => {
|
||||
console.log("Tile ", Tiles.tile_from_index(neededTile).join("/"), "loaded")
|
||||
})
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
}finally {
|
||||
console.log("Done")
|
||||
self.isRunning.setData(false)
|
||||
}
|
||||
self.isRunning.setData(false)
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
const neededLayers = options.state.layoutToUse.layers
|
||||
.filter( layer => !layer.doNotDownload )
|
||||
.filter(layer => !layer.doNotDownload)
|
||||
.filter(layer => layer.source.geojsonSource === undefined || layer.source.isOsmCacheLayer)
|
||||
this.allowedTags = new Or(neededLayers.map(l => l.source.osmTags))
|
||||
}
|
||||
|
@ -96,22 +100,22 @@ export default class OsmFeatureSource {
|
|||
{
|
||||
flatProperties: true
|
||||
});
|
||||
|
||||
|
||||
// The geojson contains _all_ features at the given location
|
||||
// We only keep what is needed
|
||||
|
||||
|
||||
geojson.features = geojson.features.filter(feature => this.allowedTags.matchesProperties(feature.properties))
|
||||
|
||||
|
||||
console.log("Tile geojson:", z, x, y, "is", geojson)
|
||||
const index = Tiles.tile_index(z, x, y);
|
||||
const index = Tiles.tile_index(z, x, y);
|
||||
new PerLayerFeatureSourceSplitter(this.filteredLayers,
|
||||
this.handleTile,
|
||||
new StaticFeatureSource(geojson.features, false),
|
||||
{
|
||||
tileIndex:index
|
||||
tileIndex: index
|
||||
}
|
||||
);
|
||||
if(this.options.markTileVisited){
|
||||
if (this.options.markTileVisited) {
|
||||
this.options.markTileVisited(index)
|
||||
}
|
||||
} catch (e) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue