Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
dcf9166
refactor(map): build every PMTiles store layer through one shared shaper
clintonlunn Aug 16, 2026
9bcf079
feat(stac): add PMTiles assets to the map
clintonlunn Aug 16, 2026
1db5118
i18n: list PMTiles in the STAC unsupported-asset tooltip across all 1…
clintonlunn Aug 16, 2026
3969cfe
fix(stac): fail a PMTiles add without an app, and queue pending layer…
clintonlunn Aug 16, 2026
04ee08d
fix(stac): let a declared media type outrank an extension, and fail a…
clintonlunn Aug 16, 2026
fe844cf
docs(plugins): record why the pending-name disposer is for the failur…
clintonlunn Aug 16, 2026
e91faa0
docs(stac): attach the format table's comment to the table
clintonlunn Aug 16, 2026
b2e7d83
docs(map): stop claiming a reason for the layer-id percent swap
clintonlunn Aug 16, 2026
319bc59
fix(plugins): take PMTiles adds one at a time, since the control hold…
clintonlunn Aug 16, 2026
76aee52
fix(stac): fail a GeoJSON add without an app, and drop a PMTiles add …
clintonlunn Aug 16, 2026
9986e57
fix(plugins): match a pending PMTiles name to its archive so a panel …
clintonlunn Aug 16, 2026
06690d0
Merge branch 'main' into feat/stac-pmtiles-assets
clintonlunn Aug 16, 2026
419782b
Merge remote-tracking branch 'origin/main' into feat/stac-pmtiles-assets
clintonlunn Aug 16, 2026
c3cbdca
refactor(stac): name a PMTiles layer after adding it, and honor the s…
clintonlunn Aug 16, 2026
031b8a1
refactor(stac): build the PMTiles layer directly instead of driving t…
clintonlunn Aug 16, 2026
44a6d67
fix(map): read an MLT archive as vector and tell MapLibre how to deco…
clintonlunn Aug 16, 2026
437939f
fix(map): follow a caller's fill colour with the outline unless it se…
clintonlunn Aug 16, 2026
63632b0
fix(stac): refuse a PMTiles archive with no layers instead of adding …
clintonlunn Aug 16, 2026
3af75bf
fix(stac): localize the no-layers message, and forward the tile encod…
clintonlunn Aug 16, 2026
ec9214a
fix(map): carry a caller's abort signal into the archive header read
clintonlunn Aug 16, 2026
55a50ad
refactor(map): read tile types from the pmtiles enum instead of literals
clintonlunn Aug 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 13 additions & 38 deletions apps/geolibre-desktop/src/components/layout/BasemapExtractPanel.tsx
Original file line number Diff line number Diff line change
@@ -1,16 +1,11 @@
import {
DEFAULT_BASEMAP,
DEFAULT_LAYER_STYLE,
type GeoLibreLayer,
useAppStore,
} from "@geolibre/core";
import { DEFAULT_BASEMAP, useAppStore } from "@geolibre/core";
import {
buildProtomapsBasemapStyle,
createPMTilesStoreLayer,
evictOfflineBasemapStyle,
hasPMTilesArchive,
type MapController,
OFFLINE_BASEMAP_SENTINEL_PREFIX,
pmtilesNativeLayerIds,
PROTOMAPS_FLAVORS,
type ProtomapsFlavor,
readPMTilesArchiveInfo,
Expand Down Expand Up @@ -708,39 +703,19 @@ export function BasemapExtractPanel({ open, onClose, mapControllerRef }: Basemap
setBasemapStyleUrl(registerOfflineBasemapStyle(layerId, style));
trackStyledBasemap(layerId, `${layerId}.pmtiles`);
} else {
const fillColor = DEFAULT_LAYER_STYLE.fillColor;
const layer: GeoLibreLayer = {
id: layerId,
name: fileName,
type: "pmtiles",
source: {
sourceId: layerId,
sourceLayers: info.sourceLayers,
tileType: info.tileType,
type: info.tileType === "raster" ? "raster" : "vector",
addLayer(
createPMTilesStoreLayer({
id: layerId,
name: fileName,
url: layerUrl,
},
visible: true,
// Raster basemaps render dimmed (raster-opacity reads the layer-level
// `opacity`, not style.fillOpacity); vector renders fully opaque.
opacity: info.tileType === "raster" ? 0.6 : 1,
style: {
...DEFAULT_LAYER_STYLE,
fillColor,
strokeColor: fillColor,
},
metadata: {
externalNativeLayer: true,
nativeLayerIds: pmtilesNativeLayerIds(layerId, info.tileType, info.sourceLayers),
pickable: true,
sourceId: layerId,
sourceKind: "pmtiles-url",
sourceLayers: info.sourceLayers,
tileType: info.tileType,
},
sourcePath: layerUrl,
};
addLayer(layer);
...(info.encoding ? { encoding: info.encoding } : {}),
sourceLayers: info.sourceLayers,
// Raster basemaps render dimmed (raster-opacity reads the layer-level
// `opacity`, not style.fillOpacity); vector renders fully opaque.
opacity: info.tileType === "raster" ? 0.6 : 1,
}),
);
Comment on lines +706 to +718

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This createPMTilesStoreLayer call doesn't forward info.encoding, unlike the equivalent call in stac-layers.ts (addPMTilesAsset), which does ...(info.encoding ? { encoding: info.encoding } : {}).

readPMTilesArchiveInfo (used a few lines up) now returns encoding: "mlt" for MLT-encoded vector archives, and ensurePMTilesExternalLayer in layer-sync.ts only adds encoding: "mlt" to the MapLibre source when layer.source.encoding === "mlt". Without forwarding it here, an MLT-encoded archive extracted/opened through this flat-overlay path will have its source added without encoding, and MapLibre will try to decode the tiles as plain MVT — likely producing broken/garbled rendering rather than the placeholder-vs-render distinction this PR is otherwise careful about.

Suggested change
addLayer(
createPMTilesStoreLayer({
id: layerId,
name: fileName,
url: layerUrl,
},
visible: true,
// Raster basemaps render dimmed (raster-opacity reads the layer-level
// `opacity`, not style.fillOpacity); vector renders fully opaque.
opacity: info.tileType === "raster" ? 0.6 : 1,
style: {
...DEFAULT_LAYER_STYLE,
fillColor,
strokeColor: fillColor,
},
metadata: {
externalNativeLayer: true,
nativeLayerIds: pmtilesNativeLayerIds(layerId, info.tileType, info.sourceLayers),
pickable: true,
sourceId: layerId,
sourceKind: "pmtiles-url",
sourceLayers: info.sourceLayers,
tileType: info.tileType,
},
sourcePath: layerUrl,
};
addLayer(layer);
sourceLayers: info.sourceLayers,
// Raster basemaps render dimmed (raster-opacity reads the layer-level
// `opacity`, not style.fillOpacity); vector renders fully opaque.
opacity: info.tileType === "raster" ? 0.6 : 1,
}),
);
addLayer(
createPMTilesStoreLayer({
id: layerId,
name: fileName,
url: layerUrl,
tileType: info.tileType,
...(info.encoding ? { encoding: info.encoding } : {}),
sourceLayers: info.sourceLayers,
// Raster basemaps render dimmed (raster-opacity reads the layer-level
// `opacity`, not style.fillOpacity); vector renders fully opaque.
opacity: info.tileType === "raster" ? 0.6 : 1,
}),
);

Confidence: medium — I can't confirm from this environment whether OpenFreeMap/CARTO-derived archives (the likely inputs to this extractor) are ever MLT-encoded in practice, but the type-level gap and the asymmetry with the sibling call site look like an oversight rather than a deliberate choice.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 3af75bf: the extract path forwards info.encoding too, so an MLT archive is added with encoding: "mlt" there as well.

}
setPhase("done");

Expand Down
1 change: 1 addition & 0 deletions apps/geolibre-desktop/src/components/layout/TopToolbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -933,6 +933,7 @@ export function TopToolbar({
added: (asset) => t("stacPlugin.added", { asset }),
addUnsupported: t("stacPlugin.addUnsupported"),
addFailed: t("stacPlugin.addFailed"),
addNoSourceLayers: t("stacPlugin.addNoSourceLayers"),
cogUnsupported: t("stacPlugin.cogUnsupported"),
});
}, [t]);
Expand Down
3 changes: 2 additions & 1 deletion apps/geolibre-desktop/src/i18n/locales/ar.json
Original file line number Diff line number Diff line change
Expand Up @@ -3641,8 +3641,9 @@
"download": "تنزيل",
"adding": "جارٍ إضافة {{asset}}…",
"added": "تمت إضافة {{asset}} إلى الخريطة.",
"addUnsupported": "يمكن إضافة أصول GeoTIFF/COG وGeoJSON فقط إلى الخريطة",
"addUnsupported": "يمكن إضافة أصول GeoTIFF/COG وGeoJSON وPMTiles فقط إلى الخريطة",
"addFailed": "تعذّرت إضافة الأصل",
"addNoSourceLayers": "لا يسرد هذا الأرشيف أي طبقات لرسمها",
"cogUnsupported": "لا يستطيع مضيف GeoLibre هذا عرض أصول GeoTIFF البعيدة"
},
"earthdataGis": {
Expand Down
3 changes: 2 additions & 1 deletion apps/geolibre-desktop/src/i18n/locales/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -3418,8 +3418,9 @@
"download": "Herunterladen",
"adding": "{{asset}} wird hinzugefügt…",
"added": "{{asset}} zur Karte hinzugefügt.",
"addUnsupported": "Nur GeoTIFF/COG- und GeoJSON-Assets können zur Karte hinzugefügt werden",
"addUnsupported": "Nur GeoTIFF/COG-, GeoJSON- und PMTiles-Assets können zur Karte hinzugefügt werden",
"addFailed": "Asset konnte nicht hinzugefügt werden",
"addNoSourceLayers": "Dieses Archiv führt keine zeichenbaren Ebenen auf",
"cogUnsupported": "Dieser GeoLibre-Host kann entfernte GeoTIFF-Assets nicht darstellen"
},
"earthdataGis": {
Expand Down
3 changes: 2 additions & 1 deletion apps/geolibre-desktop/src/i18n/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -3428,8 +3428,9 @@
"download": "Download",
"adding": "Adding {{asset}}…",
"added": "Added {{asset}} to the map.",
"addUnsupported": "Only GeoTIFF/COG and GeoJSON assets can be added to the map",
"addUnsupported": "Only GeoTIFF/COG, GeoJSON, and PMTiles assets can be added to the map",
"addFailed": "Could not add asset",
"addNoSourceLayers": "This archive lists no layers to draw",
"cogUnsupported": "This GeoLibre host cannot visualize remote GeoTIFF assets"
},
"earthdataGis": {
Expand Down
3 changes: 2 additions & 1 deletion apps/geolibre-desktop/src/i18n/locales/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -3418,8 +3418,9 @@
"download": "Descargar",
"adding": "Añadiendo {{asset}}…",
"added": "{{asset}} añadido al mapa.",
"addUnsupported": "Solo se pueden añadir al mapa recursos GeoTIFF/COG y GeoJSON",
"addUnsupported": "Solo se pueden añadir al mapa recursos GeoTIFF/COG, GeoJSON y PMTiles",
"addFailed": "No se pudo añadir el recurso",
"addNoSourceLayers": "Este archivo no incluye capas que dibujar",
"cogUnsupported": "Este host de GeoLibre no puede visualizar recursos GeoTIFF remotos"
},
"earthdataGis": {
Expand Down
3 changes: 2 additions & 1 deletion apps/geolibre-desktop/src/i18n/locales/fa.json
Original file line number Diff line number Diff line change
Expand Up @@ -3418,8 +3418,9 @@
"download": "دانلود",
"adding": "در حال افزودن {{asset}}…",
"added": "{{asset}} به نقشه افزوده شد.",
"addUnsupported": "تنها دارایی‌های GeoTIFF/COG و GeoJSON را می‌توان به نقشه افزود",
"addUnsupported": "تنها دارایی‌های GeoTIFF/COG، GeoJSON و PMTiles را می‌توان به نقشه افزود",
"addFailed": "افزودن دارایی با شکست مواجه شد",
"addNoSourceLayers": "این بایگانی هیچ لایه‌ای برای ترسیم فهرست نکرده است",
"cogUnsupported": "این میزبان GeoLibre نمی‌تواند دارایی‌های GeoTIFF دوردست را نمایش دهد"
},
"earthdataGis": {
Expand Down
3 changes: 2 additions & 1 deletion apps/geolibre-desktop/src/i18n/locales/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -3418,8 +3418,9 @@
"download": "Télécharger",
"adding": "Ajout de {{asset}}…",
"added": "{{asset}} ajouté à la carte.",
"addUnsupported": "Seules les ressources GeoTIFF/COG et GeoJSON peuvent être ajoutées à la carte",
"addUnsupported": "Seules les ressources GeoTIFF/COG, GeoJSON et PMTiles peuvent être ajoutées à la carte",
"addFailed": "Impossible d'ajouter la ressource",
"addNoSourceLayers": "Cette archive ne répertorie aucune couche à dessiner",
"cogUnsupported": "Cet hôte GeoLibre ne peut pas visualiser les ressources GeoTIFF distantes"
},
"earthdataGis": {
Expand Down
3 changes: 2 additions & 1 deletion apps/geolibre-desktop/src/i18n/locales/hi.json
Original file line number Diff line number Diff line change
Expand Up @@ -3418,8 +3418,9 @@
"download": "डाउनलोड करें",
"adding": "{{asset}} जोड़ा जा रहा है…",
"added": "{{asset}} मानचित्र में जोड़ा गया।",
"addUnsupported": "मानचित्र में केवल GeoTIFF/COG और GeoJSON एसेट जोड़ी जा सकती हैं",
"addUnsupported": "मानचित्र में केवल GeoTIFF/COG, GeoJSON और PMTiles एसेट जोड़ी जा सकती हैं",
"addFailed": "एसेट नहीं जोड़ी जा सकी",
"addNoSourceLayers": "इस संग्रह में बनाने के लिए कोई लेयर सूचीबद्ध नहीं है",
"cogUnsupported": "यह GeoLibre होस्ट दूरस्थ GeoTIFF एसेट प्रदर्शित नहीं कर सकता"
},
"earthdataGis": {
Expand Down
3 changes: 2 additions & 1 deletion apps/geolibre-desktop/src/i18n/locales/id.json
Original file line number Diff line number Diff line change
Expand Up @@ -3362,8 +3362,9 @@
"download": "Unduh",
"adding": "Menambahkan {{asset}}…",
"added": "{{asset}} ditambahkan ke peta.",
"addUnsupported": "Hanya aset GeoTIFF/COG dan GeoJSON yang dapat ditambahkan ke peta",
"addUnsupported": "Hanya aset GeoTIFF/COG, GeoJSON, dan PMTiles yang dapat ditambahkan ke peta",
"addFailed": "Tidak dapat menambahkan aset",
"addNoSourceLayers": "Arsip ini tidak mencantumkan lapisan untuk digambar",
"cogUnsupported": "Host GeoLibre ini tidak dapat memvisualisasikan aset GeoTIFF jarak jauh"
},
"earthdataGis": {
Expand Down
3 changes: 2 additions & 1 deletion apps/geolibre-desktop/src/i18n/locales/it.json
Original file line number Diff line number Diff line change
Expand Up @@ -3418,8 +3418,9 @@
"download": "Scarica",
"adding": "Aggiunta di {{asset}}…",
"added": "{{asset}} aggiunto alla mappa.",
"addUnsupported": "Solo le risorse GeoTIFF/COG e GeoJSON possono essere aggiunte alla mappa",
"addUnsupported": "Solo le risorse GeoTIFF/COG, GeoJSON e PMTiles possono essere aggiunte alla mappa",
"addFailed": "Impossibile aggiungere la risorsa",
"addNoSourceLayers": "Questo archivio non elenca livelli da disegnare",
"cogUnsupported": "Questo host GeoLibre non può visualizzare risorse GeoTIFF remote"
},
"earthdataGis": {
Expand Down
3 changes: 2 additions & 1 deletion apps/geolibre-desktop/src/i18n/locales/ja.json
Original file line number Diff line number Diff line change
Expand Up @@ -3362,8 +3362,9 @@
"download": "ダウンロード",
"adding": "{{asset}} を追加しています…",
"added": "{{asset}} を地図に追加しました。",
"addUnsupported": "地図に追加できるのは GeoTIFF/COGGeoJSON のアセットのみです",
"addUnsupported": "地図に追加できるのは GeoTIFF/COGGeoJSON、PMTiles のアセットのみです",
"addFailed": "アセットを追加できませんでした",
"addNoSourceLayers": "このアーカイブには描画できるレイヤーがありません",
"cogUnsupported": "この GeoLibre ホストはリモートの GeoTIFF アセットを表示できません"
},
"earthdataGis": {
Expand Down
3 changes: 2 additions & 1 deletion apps/geolibre-desktop/src/i18n/locales/ka.json
Original file line number Diff line number Diff line change
Expand Up @@ -3418,8 +3418,9 @@
"download": "ჩამოტვირთვა",
"adding": "მიმდინარეობს {{asset}}-ის დამატება…",
"added": "{{asset}} დაემატა რუკაზე.",
"addUnsupported": "რუკაზე შეიძლება დაემატოს მხოლოდ GeoTIFF/COG და GeoJSON აქტივები",
"addUnsupported": "რუკაზე შეიძლება დაემატოს მხოლოდ GeoTIFF/COG, GeoJSON და PMTiles აქტივები",
"addFailed": "აქტივის დამატება ვერ მოხერხდა",
"addNoSourceLayers": "ეს არქივი არ შეიცავს დასახატ ფენებს",
"cogUnsupported": "ამ GeoLibre ჰოსტს არ შეუძლია დისტანციური GeoTIFF აქტივების ვიზუალიზაცია"
},
"earthdataGis": {
Expand Down
3 changes: 2 additions & 1 deletion apps/geolibre-desktop/src/i18n/locales/ko.json
Original file line number Diff line number Diff line change
Expand Up @@ -3362,8 +3362,9 @@
"download": "다운로드",
"adding": "{{asset}} 추가 중…",
"added": "{{asset}}을(를) 지도에 추가했습니다.",
"addUnsupported": "GeoTIFF/COG 및 GeoJSON 자산만 지도에 추가할 수 있습니다",
"addUnsupported": "GeoTIFF/COG, GeoJSON 및 PMTiles 자산만 지도에 추가할 수 있습니다",
"addFailed": "자산을 추가하지 못했습니다",
"addNoSourceLayers": "이 아카이브에는 그릴 레이어가 없습니다",
"cogUnsupported": "이 GeoLibre 호스트는 원격 GeoTIFF 자산을 표시할 수 없습니다"
},
"earthdataGis": {
Expand Down
3 changes: 2 additions & 1 deletion apps/geolibre-desktop/src/i18n/locales/nl.json
Original file line number Diff line number Diff line change
Expand Up @@ -3418,8 +3418,9 @@
"download": "Downloaden",
"adding": "{{asset}} wordt toegevoegd…",
"added": "{{asset}} toegevoegd aan de kaart.",
"addUnsupported": "Alleen GeoTIFF/COG- en GeoJSON-assets kunnen aan de kaart worden toegevoegd",
"addUnsupported": "Alleen GeoTIFF/COG-, GeoJSON- en PMTiles-assets kunnen aan de kaart worden toegevoegd",
"addFailed": "Kan asset niet toevoegen",
"addNoSourceLayers": "Dit archief bevat geen tekenbare lagen",
"cogUnsupported": "Deze GeoLibre-host kan externe GeoTIFF-assets niet weergeven"
},
"earthdataGis": {
Expand Down
3 changes: 2 additions & 1 deletion apps/geolibre-desktop/src/i18n/locales/pt.json
Original file line number Diff line number Diff line change
Expand Up @@ -3418,8 +3418,9 @@
"download": "Baixar",
"adding": "Adicionando {{asset}}…",
"added": "{{asset}} adicionado ao mapa.",
"addUnsupported": "Apenas recursos GeoTIFF/COG e GeoJSON podem ser adicionados ao mapa",
"addUnsupported": "Apenas recursos GeoTIFF/COG, GeoJSON e PMTiles podem ser adicionados ao mapa",
"addFailed": "Não foi possível adicionar o recurso",
"addNoSourceLayers": "Este arquivo não lista camadas para desenhar",
"cogUnsupported": "Este host do GeoLibre não consegue visualizar recursos GeoTIFF remotos"
},
"earthdataGis": {
Expand Down
3 changes: 2 additions & 1 deletion apps/geolibre-desktop/src/i18n/locales/ru.json
Original file line number Diff line number Diff line change
Expand Up @@ -3530,8 +3530,9 @@
"download": "Скачать",
"adding": "Добавление {{asset}}…",
"added": "{{asset}} добавлен на карту.",
"addUnsupported": "На карту можно добавить только ресурсы GeoTIFF/COG и GeoJSON",
"addUnsupported": "На карту можно добавить только ресурсы GeoTIFF/COG, GeoJSON и PMTiles",
"addFailed": "Не удалось добавить ресурс",
"addNoSourceLayers": "В этом архиве нет слоёв для отрисовки",
"cogUnsupported": "Этот хост GeoLibre не может отображать удалённые ресурсы GeoTIFF"
},
"earthdataGis": {
Expand Down
3 changes: 2 additions & 1 deletion apps/geolibre-desktop/src/i18n/locales/th.json
Original file line number Diff line number Diff line change
Expand Up @@ -3362,8 +3362,9 @@
"download": "ดาวน์โหลด",
"adding": "กำลังเพิ่ม {{asset}}…",
"added": "เพิ่ม {{asset}} ลงในแผนที่แล้ว",
"addUnsupported": "เพิ่มลงแผนที่ได้เฉพาะแอสเซตแบบ GeoTIFF/COG และ GeoJSON เท่านั้น",
"addUnsupported": "เพิ่มลงแผนที่ได้เฉพาะแอสเซตแบบ GeoTIFF/COG, GeoJSON และ PMTiles เท่านั้น",
"addFailed": "ไม่สามารถเพิ่มแอสเซตได้",
"addNoSourceLayers": "ไฟล์เก็บถาวรนี้ไม่มีเลเยอร์ให้วาด",
"cogUnsupported": "โฮสต์ GeoLibre นี้ไม่สามารถแสดงผลแอสเซต GeoTIFF จากระยะไกลได้"
},
"earthdataGis": {
Expand Down
3 changes: 2 additions & 1 deletion apps/geolibre-desktop/src/i18n/locales/tr.json
Original file line number Diff line number Diff line change
Expand Up @@ -3418,8 +3418,9 @@
"download": "İndir",
"adding": "{{asset}} ekleniyor…",
"added": "{{asset}} haritaya eklendi.",
"addUnsupported": "Haritaya yalnızca GeoTIFF/COG ve GeoJSON varlıkları eklenebilir",
"addUnsupported": "Haritaya yalnızca GeoTIFF/COG, GeoJSON ve PMTiles varlıkları eklenebilir",
"addFailed": "Varlık eklenemedi",
"addNoSourceLayers": "Bu arşiv çizilecek katman listelemiyor",
"cogUnsupported": "Bu GeoLibre ana bilgisayarı uzak GeoTIFF varlıklarını görselleştiremiyor"
},
"earthdataGis": {
Expand Down
3 changes: 2 additions & 1 deletion apps/geolibre-desktop/src/i18n/locales/vi.json
Original file line number Diff line number Diff line change
Expand Up @@ -3349,8 +3349,9 @@
"collectionsHint": "Giữ Ctrl/Cmd để chọn nhiều bộ sưu tập; kéo cạnh dưới để thay đổi kích thước",
"limitToExtent": "Giới hạn tìm kiếm trong phạm vi bản đồ hiện tại",
"bboxLabel": "Hộp giới hạn (tây, nam, đông, bắc)",
"addUnsupported": "Chỉ có thể thêm nội dung GeoTIFF/COG GeoJSON vào bản đồ",
"addUnsupported": "Chỉ có thể thêm nội dung GeoTIFF/COG, GeoJSON PMTiles vào bản đồ",
"addFailed": "Không thể thêm nội dung",
"addNoSourceLayers": "Kho lưu trữ này không liệt kê lớp nào để vẽ",
"cogUnsupported": "Máy chủ GeoLibre này không thể hiển thị nội dung GeoTIFF từ xa",
"footprintLayerName": "Dấu chân tìm kiếm STAC",
"catalogSearch": "Tìm danh mục công khai từ STAC Index",
Expand Down
3 changes: 2 additions & 1 deletion apps/geolibre-desktop/src/i18n/locales/zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -3362,8 +3362,9 @@
"download": "下载",
"adding": "正在添加 {{asset}}…",
"added": "已将 {{asset}} 添加到地图。",
"addUnsupported": "只有 GeoTIFF/COG 和 GeoJSON 资源可以添加到地图",
"addUnsupported": "只有 GeoTIFF/COG、GeoJSONPMTiles 资源可以添加到地图",
"addFailed": "无法添加资源",
"addNoSourceLayers": "此归档未列出可绘制的图层",
"cogUnsupported": "此 GeoLibre 主机无法可视化远程 GeoTIFF 资源"
},
"earthdataGis": {
Expand Down
Loading
Loading