diff --git a/package-lock.json b/package-lock.json index 2fd7ed929..94762b566 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "@comunica/core": "^3.0.1", "@comunica/query-sparql": "^3.0.1", "@comunica/query-sparql-link-traversal": "^0.3.0", + "@photo-sphere-viewer/equirectangular-tiles-adapter": "^5.12.1", "@rapideditor/location-conflation": "^1.3.0", "@rgossiaux/svelte-headlessui": "^1.0.2", "@rgossiaux/svelte-heroicons": "^0.1.2", @@ -74,6 +75,7 @@ "panzoom": "^9.4.3", "papaparse": "^5.5.2", "pg": "^8.11.3", + "photo-sphere-viewer": "^4.8.1", "pic4carto": "^2.1.15", "pluscodes": "^2.6.0", "pmtiles": "^4.2.1", @@ -6273,6 +6275,32 @@ "url": "https://opencollective.com/parcel" } }, + "node_modules/@photo-sphere-viewer/core": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/core/-/core-5.12.1.tgz", + "integrity": "sha512-aK+SueXdKOr5FQAMwjxswHaa2OZcpWi4tx5P4fjq1vWEDa8PtdaoSdQaAp3Csmthvd9DlfNDUb6c21fTudzM/w==", + "license": "MIT", + "peer": true, + "dependencies": { + "three": "^0.173.0" + } + }, + "node_modules/@photo-sphere-viewer/core/node_modules/three": { + "version": "0.173.0", + "resolved": "https://registry.npmjs.org/three/-/three-0.173.0.tgz", + "integrity": "sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==", + "license": "MIT", + "peer": true + }, + "node_modules/@photo-sphere-viewer/equirectangular-tiles-adapter": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/equirectangular-tiles-adapter/-/equirectangular-tiles-adapter-5.12.1.tgz", + "integrity": "sha512-Z9oiPNQwBdkGD1m+bXe0EuuBgdZFzec+d7MKexYgEqzLLukgp1WJ4il+3omMaRP5HAhRVWR5vapVALag+8BmPg==", + "license": "MIT", + "peerDependencies": { + "@photo-sphere-viewer/core": "5.12.1" + } + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -23230,6 +23258,17 @@ "split2": "^4.1.0" } }, + "node_modules/photo-sphere-viewer": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/photo-sphere-viewer/-/photo-sphere-viewer-4.8.1.tgz", + "integrity": "sha512-Yl1KZq1adtrajCOrf8Y79Qi4A35DfEu8atL779YOdA9XHoH2l2+sYovejnZlGgUM0hEbTyenRDoyXSy/MtioYg==", + "deprecated": "Use @photo-sphere-viewer/core instead, see https://photo-sphere-viewer.js.org/guide/migration.html", + "license": "MIT", + "dependencies": { + "three": "^0.147.0", + "uevent": "^2.1.1" + } + }, "node_modules/pic4carto": { "version": "2.1.15", "license": "SEE LICENSE IN LICENSE.txt", @@ -26708,6 +26747,12 @@ "node": ">=0.8" } }, + "node_modules/three": { + "version": "0.147.0", + "resolved": "https://registry.npmjs.org/three/-/three-0.147.0.tgz", + "integrity": "sha512-LPTOslYQXFkmvceQjFTNnVVli2LaVF6C99Pv34fJypp8NbQLbTlu3KinZ0zURghS5zEehK+VQyvWuPZ/Sm8fzw==", + "license": "MIT" + }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -27594,6 +27639,12 @@ "node": ">=4.2.0" } }, + "node_modules/uevent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/uevent/-/uevent-2.2.0.tgz", + "integrity": "sha512-48s5LF/c6R1fUmctGib/dWKhZjZLd4aK/85dwVAbwgHNBSO0k0UNp0ZKZpkSbU6633qYhgykYQPakTSuOxZopA==", + "license": "MIT" + }, "node_modules/uglify-js": { "version": "3.19.3", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", @@ -34147,6 +34198,29 @@ "version": "2.8.2", "dev": true }, + "@photo-sphere-viewer/core": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/core/-/core-5.12.1.tgz", + "integrity": "sha512-aK+SueXdKOr5FQAMwjxswHaa2OZcpWi4tx5P4fjq1vWEDa8PtdaoSdQaAp3Csmthvd9DlfNDUb6c21fTudzM/w==", + "peer": true, + "requires": { + "three": "^0.173.0" + }, + "dependencies": { + "three": { + "version": "0.173.0", + "resolved": "https://registry.npmjs.org/three/-/three-0.173.0.tgz", + "integrity": "sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==", + "peer": true + } + } + }, + "@photo-sphere-viewer/equirectangular-tiles-adapter": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/equirectangular-tiles-adapter/-/equirectangular-tiles-adapter-5.12.1.tgz", + "integrity": "sha512-Z9oiPNQwBdkGD1m+bXe0EuuBgdZFzec+d7MKexYgEqzLLukgp1WJ4il+3omMaRP5HAhRVWR5vapVALag+8BmPg==", + "requires": {} + }, "@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -46355,6 +46429,15 @@ "split2": "^4.1.0" } }, + "photo-sphere-viewer": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/photo-sphere-viewer/-/photo-sphere-viewer-4.8.1.tgz", + "integrity": "sha512-Yl1KZq1adtrajCOrf8Y79Qi4A35DfEu8atL779YOdA9XHoH2l2+sYovejnZlGgUM0hEbTyenRDoyXSy/MtioYg==", + "requires": { + "three": "^0.147.0", + "uevent": "^2.1.1" + } + }, "pic4carto": { "version": "2.1.15", "requires": { @@ -48749,6 +48832,11 @@ "thenify": ">= 3.1.0 < 4" } }, + "three": { + "version": "0.147.0", + "resolved": "https://registry.npmjs.org/three/-/three-0.147.0.tgz", + "integrity": "sha512-LPTOslYQXFkmvceQjFTNnVVli2LaVF6C99Pv34fJypp8NbQLbTlu3KinZ0zURghS5zEehK+VQyvWuPZ/Sm8fzw==" + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -49436,6 +49524,11 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==" }, + "uevent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/uevent/-/uevent-2.2.0.tgz", + "integrity": "sha512-48s5LF/c6R1fUmctGib/dWKhZjZLd4aK/85dwVAbwgHNBSO0k0UNp0ZKZpkSbU6633qYhgykYQPakTSuOxZopA==" + }, "uglify-js": { "version": "3.19.3", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", diff --git a/package.json b/package.json index 391836415..5f822006e 100644 --- a/package.json +++ b/package.json @@ -177,6 +177,7 @@ "@comunica/core": "^3.0.1", "@comunica/query-sparql": "^3.0.1", "@comunica/query-sparql-link-traversal": "^0.3.0", + "@photo-sphere-viewer/equirectangular-tiles-adapter": "^5.12.1", "@rapideditor/location-conflation": "^1.3.0", "@rgossiaux/svelte-headlessui": "^1.0.2", "@rgossiaux/svelte-heroicons": "^0.1.2", @@ -236,6 +237,7 @@ "panzoom": "^9.4.3", "papaparse": "^5.5.2", "pg": "^8.11.3", + "photo-sphere-viewer": "^4.8.1", "pic4carto": "^2.1.15", "pluscodes": "^2.6.0", "pmtiles": "^4.2.1", diff --git a/public/assets/loader_base.jpg b/public/assets/loader_base.jpg new file mode 100644 index 000000000..4be0e5003 Binary files /dev/null and b/public/assets/loader_base.jpg differ diff --git a/src/Logic/Web/NearbyImagesSearch.ts b/src/Logic/Web/NearbyImagesSearch.ts index 0b4c07f70..69987f855 100644 --- a/src/Logic/Web/NearbyImagesSearch.ts +++ b/src/Logic/Web/NearbyImagesSearch.ts @@ -325,7 +325,7 @@ class MapillaryFetcher implements ImageFetcher { private readonly end_captured_at?: Date constructor(options?: { - panoramas: undefined | "only" | "no" + panoramas?: undefined | "only" | "no" max_images?: 100 | number start_captured_at?: Date end_captured_at?: Date @@ -411,7 +411,6 @@ export class CombinedFetcher { new ImagesFromPanoramaxFetcher(), new ImagesFromPanoramaxFetcher(Constants.panoramax.url), new MapillaryFetcher({ - panoramas: "no", max_images: 25, start_captured_at: maxage, }), diff --git a/src/UI/Image/photoAdapter.ts b/src/UI/Image/photoAdapter.ts new file mode 100644 index 000000000..651052de0 --- /dev/null +++ b/src/UI/Image/photoAdapter.ts @@ -0,0 +1,54 @@ +import { + EquirectangularTilesAdapter, + EquirectangularTilesAdapterConfig +} from "@photo-sphere-viewer/equirectangular-tiles-adapter" + +export class PhotoAdapter extends EquirectangularTilesAdapter { + // This code was shamelessly stolen from https://gitlab.com/panoramax/clients/web-viewer/-/blob/develop/src/utils/PhotoAdapter.js + // MIT-license; thank you adrien! + + private readonly _shouldGoFast: () => boolean + + constructor(viewer, config?: EquirectangularTilesAdapterConfig & { shouldGoFast?: () => boolean }) { + super(viewer, config) + this._shouldGoFast = config?.shouldGoFast ?? (() => true) + } + + /** + * Override to skip loading SD images according to shouldGoFast option. + */ + public async loadTexture(panorama, loader) { + if (!panorama.origBaseUrl) { + panorama.origBaseUrl = panorama.baseUrl + } else { + panorama.baseUrl = panorama.origBaseUrl + } + + // Fast mode + thumbnail available + no HD image loaded yet + flat picture + if ( + this._shouldGoFast() + && panorama.thumbUrl + && !panorama.hdLoaded + && panorama.rows == 1 + ) { + panorama.baseUrl = panorama.thumbUrl + } + + let data = await super.loadTexture(panorama, loader) + if (panorama.baseUrl === panorama.origBaseUrl) { + panorama.hdLoaded = true + } + return data + } + + /** + * Override to skip loading tiles according to shouldGoFast option. + * @private + */ + /* + private __loadTiles(tiles) { + if (!this._shouldGoFast()) { + super.__loadTiles(tiles) + } + }*/ +} diff --git a/src/UI/Test.svelte b/src/UI/Test.svelte index 49e65bdd6..929ee916e 100644 --- a/src/UI/Test.svelte +++ b/src/UI/Test.svelte @@ -1,34 +1,113 @@ - -Permission: -{$permission} -Available: -{$av} -Location: -{JSON.stringify($loc)} -
    - {#each logs as log} -
  1. {log}
  2. - {/each} -
+ +
+ diff --git a/src/test.ts b/src/test.ts index 2765e2ea1..1dc31faa3 100644 --- a/src/test.ts +++ b/src/test.ts @@ -1,4 +1,13 @@ import Test from "./UI/Test.svelte" -import { OsmConnection } from "./Logic/Osm/OsmConnection" +import { ImageData, PanoramaxXYZ } from "panoramax-js" + +const target = document.getElementById("maindiv") +target.innerHTML = "" +let img = "https://panoramax-storage-public-fast.s3.gra.perf.cloud.ovh.net/main-pictures/d2/8c/ba/cf/c807-4dbf-b8c8-b1c3aa89182d.jpg" +let imgId = "d28cbacf-c807-4dbf-b8c8-b1c3aa89182d" +let panoramax = new PanoramaxXYZ() +panoramax.imageInfo(imgId).then((imageInfo: ImageData) => { + console.log("IMG INFO: ", imageInfo) + new Test({ target, props: { imageInfo } }) +}) -new OsmConnection().interact("user/details.json").then((r) => console.log(">>>", r))