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