diff --git a/android b/android index dc3f3f5ac..472b6da88 160000 --- a/android +++ b/android @@ -1 +1 @@ -Subproject commit dc3f3f5ac3d4d42bed7aeb58ff5386a063dbac06 +Subproject commit 472b6da88e038d34e2915ebd36350376acf0c58c diff --git a/scripts/pmTilesExtractGenerator.ts b/scripts/pmTilesExtractGenerator.ts index 74ec5c0b2..50ab37b4a 100644 --- a/scripts/pmTilesExtractGenerator.ts +++ b/scripts/pmTilesExtractGenerator.ts @@ -46,12 +46,17 @@ export class PmTilesExtractGenerator { return `${this._targetDir}/${z}/${x}/${y}.pmtiles` } - async generateArchive(z: number, x: number, y: number, maxzoom?: number): Promise { + async generateArchive(z: number, x: number, y: number, maxzoom: number): Promise { const [[max_lat, min_lon], [min_lat, max_lon]] = Tiles.tile_bounds(z, x, y) let maxzoomflag = "" if (maxzoom !== undefined) { maxzoomflag = " --maxzoom=" + maxzoom } + + if(!maxzoom && z < 15){ + throw "No maxzoom for a pretty low zoom detected. This will result in a big archive" + } + const outputFileName = this.getFilename(z, x, y) await this.startProcess( `extract ${ diff --git a/scripts/serverPmTileExtracts.ts b/scripts/serverPmTileExtracts.ts index 14ce96539..5c77f22f9 100644 --- a/scripts/serverPmTileExtracts.ts +++ b/scripts/serverPmTileExtracts.ts @@ -66,7 +66,8 @@ class ServerPmTileExtracts extends Script { ScriptUtils.createParentDir(targetFile) console.log("Creating", targetFile) const start = new Date() - await generator.generateArchive(z, x, y) + const maxzoom = OfflineBasemapManager.zoomelevels[z] + await generator.generateArchive(z, x, y, maxzoom) const stop = new Date() console.log( "Creating ", @@ -82,7 +83,11 @@ class ServerPmTileExtracts extends Script { if (req.destroyed) { return null } - res.writeHead(200, { "Content-Type": "application/octet-stream" }) + const stats = statSync(targetFile) + + res.writeHead(200, { "Content-Type": "application/octet-stream" , + "Content-Length": stats.size + }) Server.sendFile(targetFile, res) return null diff --git a/src/Logic/Actors/OfflineForegroundDataManager.ts b/src/Logic/Actors/OfflineForegroundDataManager.ts index dc079610c..34bd67743 100644 --- a/src/Logic/Actors/OfflineForegroundDataManager.ts +++ b/src/Logic/Actors/OfflineForegroundDataManager.ts @@ -73,7 +73,6 @@ export class OfflineForegroundDataManager { } this._bboxesForOffline.data.push(data) this._bboxesForOffline.update(offl => OfflineForegroundDataManager.clean(offl)) - // this._bboxesForOffline.update(data => OfflineForegroundDataManager.clean(data)) this._isUpdating.set(true) await this.updateSingleBbox(data) this._isUpdating.set(false) @@ -100,7 +99,6 @@ export class OfflineForegroundDataManager { // As 'offlBbox' is included in the _bboxForOffline, pinging it will update downstream UI elements console.log(">>> Updating bbox preping", offlBbox, this._bboxesForOffline.data.indexOf(offlBbox)) this._bboxesForOffline.ping() - console.log(">>> Updating bbox", offlBbox, this._bboxesForOffline.data.indexOf(offlBbox)) try { await OfflineBasemapManager.singleton.installBbox(bbox) console.log(">>> BBox update started") @@ -117,6 +115,11 @@ export class OfflineForegroundDataManager { console.log(">>> bboxes for offline are now:", this._bboxesForOffline.data) } + /** + * Merges fully contained bboxes into the bigger bbox + * @param bboxes + * @private + */ private static clean(bboxes: OfflineBbox[]): OfflineBbox[] { const validated = bboxes.filter(bbox => { try { diff --git a/src/Logic/FeatureSource/Sources/OverpassFeatureSource.ts b/src/Logic/FeatureSource/Sources/OverpassFeatureSource.ts index a4aaafb17..f07ba22fd 100644 --- a/src/Logic/FeatureSource/Sources/OverpassFeatureSource.ts +++ b/src/Logic/FeatureSource/Sources/OverpassFeatureSource.ts @@ -145,7 +145,7 @@ export default class OverpassFeatureSource } catch (e) { this.retries.update(i => i + 1) console.error(`QUERY FAILED (attempt ${this.retries.data}, will retry: ${this._isActive.data}) due to`, e) - if(options.noRetries){ + if(options?.noRetries){ throw e } await Utils.waitFor(1000)