Merge branch 'main' into fix/map-fallback-retry

# Conflicts:
#	CHANGELOG.md
This commit is contained in:
Sameh Khamis committed 2026-10-16 16:38:14 -07:00
commit bc499f1401
475 files changed
+34444 -4793

No files matched your search

+13 -3
View File
@@ -1,4 +1,8 @@
import { keySetupRequirement } from '../keySetupCore.mjs';
import {
keySetupRequirement,
keySetupRequirementEnvVars,
} from '../keySetupCore.mjs';
import { t } from '../i18n/index.js';
/**
* Why Google 3D is unavailable, phrased so the tooltip and toast recommend the
* RIGHT fix. With no credentials the fix is a key (or the ion route); with a
@@ -10,6 +14,12 @@ import { keySetupRequirement } from '../keySetupCore.mjs';
*/
export function photorealUnavailableReason(hasCredentials) {
if (hasCredentials)
return "Google 3D tiles unavailable — check the key's API restrictions, quota, or network";
return `${keySetupRequirement('google-maps')} — or a Cesium ion token for the ion-hosted route`;
return t(
"Google 3D tiles unavailable — check the key's API restrictions, quota, or network",
);
const envVars = keySetupRequirementEnvVars('google-maps');
return t(
'Needs {envVars} — add it in Provider Settings — or a Cesium ion token for the ion-hosted route',
{ envVars },
);
}
+5 -5
View File
@@ -2,14 +2,14 @@ import * as Cesium from 'cesium';
export const MAP_STACKS = [
{
id: 'photoreal',
label: 'Google 3D',
label: 'Google 3D', // i18n-ignore: imagery product name
shortLabel: '3D',
kind: 'photoreal',
requiresIon: false,
},
{
id: 'bing-aerial',
label: 'Bing Aerial',
label: 'Bing Aerial', // i18n-ignore: imagery product name
shortLabel: 'Aerial',
kind: 'ion',
style: Cesium.IonWorldImageryStyle.AERIAL,
@@ -17,7 +17,7 @@ export const MAP_STACKS = [
},
{
id: 'bing-labels',
label: 'Bing Labels',
label: 'Bing Labels', // i18n-ignore: imagery product name
shortLabel: 'Labels',
kind: 'ion',
style: Cesium.IonWorldImageryStyle.AERIAL_WITH_LABELS,
@@ -25,14 +25,14 @@ export const MAP_STACKS = [
},
{
id: 'esri-imagery',
label: 'Esri Satellite',
label: 'Esri Satellite', // i18n-ignore: imagery product name
shortLabel: 'SAT',
kind: 'esri-imagery',
requiresIon: false,
},
{
id: 'osm',
label: 'OSM',
label: 'OSM', // i18n-ignore: imagery product name
shortLabel: 'OSM',
kind: 'osm',
requiresIon: false,
+5 -2
View File
@@ -1,6 +1,7 @@
import { MAP_STACKS } from './catalog.js';
import { photorealUnavailableReason } from './availability.js';
import { keySetupRequirement } from '../keySetupCore.mjs';
import { keySetupRequirementEnvVars } from '../keySetupCore.mjs';
import { t } from '../i18n/index.js';
import {
createOsmImagery,
createEsriImagery,
@@ -34,7 +35,9 @@ export function createDefaultMapSources({
descriptor,
available: !descriptor.requiresIon || hasIon,
unavailableReason: descriptor.requiresIon
? keySetupRequirement('cesium-ion')
? t('Needs {envVars} — add it in Provider Settings', {
envVars: keySetupRequirementEnvVars('cesium-ion'),
})
: null,
};
if (descriptor.kind === 'photoreal')
+5 -1
View File
@@ -5,8 +5,12 @@
* neither exists there is nowhere to drape and the caller says so.
*/
import { msg } from '../i18n/marker.js';
/** Guidance shown when the active map stack cannot host draped imagery. */
export const NO_IMAGERY_HOST = 'Hidden by this map source · choose a globe map';
export const NO_IMAGERY_HOST = msg(
'Hidden by this map source · choose a globe map',
);
/**
* Resolve the imagery layer collection for the active map stack.