From 09993c2e449ffae3d9fa2ce46451cf5818ae26c4 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Thu, 7 Dec 2023 01:04:43 +0100 Subject: [PATCH] Feature: load HD-images from mapillary in preview --- src/Logic/ImageProviders/ImageProvider.ts | 9 +++--- src/Logic/ImageProviders/Mapillary.ts | 38 ++++++++++++++++------- src/UI/Image/ImagePreview.svelte | 2 +- 3 files changed, 31 insertions(+), 18 deletions(-) diff --git a/src/Logic/ImageProviders/ImageProvider.ts b/src/Logic/ImageProviders/ImageProvider.ts index 1f7fad7601..47c4407d39 100644 --- a/src/Logic/ImageProviders/ImageProvider.ts +++ b/src/Logic/ImageProviders/ImageProvider.ts @@ -5,15 +5,16 @@ import { Utils } from "../../Utils" export interface ProvidedImage { url: string + url_hd?: string key: string - provider: ImageProvider, + provider: ImageProvider id: string } export default abstract class ImageProvider { public abstract readonly defaultKeyPrefixes: string[] - public abstract SourceIcon(id?: string, location?: {lon: number, lat: number}): BaseUIElement + public abstract SourceIcon(id?: string, location?: { lon: number; lat: number }): BaseUIElement /** * Given a properies object, maps it onto _all_ the available pictures for this imageProvider @@ -29,7 +30,7 @@ export default abstract class ImageProvider { throw "No `defaultKeyPrefixes` defined by this image provider" } const relevantUrls = new UIEventSource< - { id: string, url: string; key: string; provider: ImageProvider }[] + { id: string; url: string; key: string; provider: ImageProvider }[] >([]) const seenValues = new Set() allTags.addCallbackAndRunD((tags) => { @@ -72,6 +73,4 @@ export default abstract class ImageProvider { public backlink(): string | undefined { return undefined } - - } diff --git a/src/Logic/ImageProviders/Mapillary.ts b/src/Logic/ImageProviders/Mapillary.ts index 107424cc27..f08a052465 100644 --- a/src/Logic/ImageProviders/Mapillary.ts +++ b/src/Logic/ImageProviders/Mapillary.ts @@ -54,10 +54,14 @@ export class Mapillary extends ImageProvider { return false } - static createLink(location: { - lon: number, - lat: number - } = undefined, zoom: number = 17, pKey?: string) { + static createLink( + location: { + lon: number + lat: number + } = undefined, + zoom: number = 17, + pKey?: string + ) { const params = { focus: pKey === undefined ? "map" : "photo", lat: location?.lat, @@ -66,7 +70,11 @@ export class Mapillary extends ImageProvider { pKey, } const baselink = `https://www.mapillary.com/app/?` - const paramsStr = Utils.NoNull(Object.keys(params).map(k => params[k] === undefined ? undefined : k + "=" + params[k])) + const paramsStr = Utils.NoNull( + Object.keys(params).map((k) => + params[k] === undefined ? undefined : k + "=" + params[k] + ) + ) return baselink + paramsStr.join("&") } @@ -97,10 +105,13 @@ export class Mapillary extends ImageProvider { return ["https://mapillary.com", "https://www.mapillary.com", "https://graph.mapillary.com"] } - SourceIcon(id: string, location?: { - lon: number, - lat: number - }): BaseUIElement { + SourceIcon( + id: string, + location?: { + lon: number + lat: number + } + ): BaseUIElement { const icon = Svg.mapillary_svg() if (!id) { return icon @@ -130,15 +141,18 @@ export class Mapillary extends ImageProvider { const metadataUrl = "https://graph.mapillary.com/" + mapillaryId + - "?fields=thumb_1024_url&&access_token=" + + "?fields=thumb_1024_url,thumb_original_url&access_token=" + Constants.mapillary_client_token_v4 const response = await Utils.downloadJsonCached(metadataUrl, 60 * 60) const url = response["thumb_1024_url"] + console.log(response) + const url_hd = response["thumb_original_url"] return { id: "" + mapillaryId, - url: url, + url, + url_hd, provider: this, - key: key, + key, } } } diff --git a/src/UI/Image/ImagePreview.svelte b/src/UI/Image/ImagePreview.svelte index 558308186e..22d6c27209 100644 --- a/src/UI/Image/ImagePreview.svelte +++ b/src/UI/Image/ImagePreview.svelte @@ -25,4 +25,4 @@ - +