Contexte de carte
Le contexte (ExtendedMapContext) est la source de vérité de l'état de la carte.
Structure
interface ExtendedMapContext {
layers: MapLayer[] // couches de données
backgroundLayers: MapLayer[] // couches de fond (fond de carte)
view: MapContextView // étendue ou centre+zoom
dataSources?: DataSource[] // index sondés pour le filtrage attributaire
wpsServices?: WpsService[] // services WPS proposés dans le panneau Traitements
}view
La vue peut être définie de trois façons :
// Par centre et niveau de zoom
{ center: [longitude, latitude], zoom: number }
// Par emprise (bounding box EPSG:4326)
{ extent: [minX, minY, maxX, maxY] }
// Par géométrie GeoJSON
{ geometry: GeoJSONGeometry }Options communes : maxZoom?: number, maxExtent?: [minX, minY, maxX, maxY].
dataSources
Index Geonetwork sondés pour détecter les couches WMS filtrables par attributs. Pour chaque couche WMS du contexte, le composant remonte à sa fiche de métadonnées Geonetwork : si la ressource WFS associée porte un profil de filtrage, un onglet Filtre est proposé dans le détail de la couche.
{
dataSources: [
{ url: 'https://sextant.ifremer.fr/geonetwork/index/features', type: 'geonetwork-index' },
],
layers: [
{
type: 'wms',
url: 'https://sextant.ifremer.fr/services/wms/environnement_marin',
name: 'surval_parametre_point',
label: 'Surval — données par paramètre',
visibility: true,
},
],
view: { center: [-4.56243, 48.36143], zoom: 8 },
}La détection est asynchrone et non bloquante : la couche s'affiche immédiatement, l'onglet Filtre apparaît si et quand l'index répond.
wpsServices
Services WPS proposés dans le panneau Traitements (WPS). Chaque entrée porte l'URL du service et un libellé optionnel (à défaut, l'URL est affichée telle quelle).
{
wpsServices: [
{ url: 'https://sextant.ifremer.fr/services/wps3/demo', label: 'Sextant WPS (démo)' },
{ url: 'https://sextant.ifremer.fr/services/wps3/surval', label: 'Sextant WPS (Surval)' },
],
}Ces services alimentent une liste déroulante Services prédéfinis : la sélection d'une entrée remplit le champ URL et charge les traitements du service. Aucun service n'est présélectionné, et le champ URL reste libre — l'utilisateur peut toujours saisir l'adresse d'un autre service WPS. Sans wpsServices, la liste déroulante n'est pas affichée et seule la saisie libre subsiste.
setInitialContext vs setContext
setInitialContext | setContext | |
|---|---|---|
| Enrichissement des couches | ✓ (ex. STAC) | ✗ |
| Usage recommandé | Premier chargement | Remplacement complet |
// Au chargement de la page
await viewer.setInitialContext({
backgroundLayers: [{ type: 'xyz', url: '...', visibility: true, opacity: 1 }],
layers: [{ type: 'wms', url: 'https://...', name: 'ma-couche' }],
view: { center: [2.35, 48.85], zoom: 10 },
})
// Remplacement complet (sans couches STAC)
await viewer.setContext(nouveauContexte)Le remplacement est total : ce que le contexte n'inclut pas est supprimé — un contexte sans dataSources efface celles déjà déclarées.
getContext
Retourne l'état actuel de la carte. Les métadonnées internes (id, version) sont supprimées — le résultat peut être re-passé à setContext ou sérialisé.
const context = viewer.getContext()
// { layers: [...], backgroundLayers: [...], view: { extent: [...] } }setView
Met à jour uniquement la vue sans modifier les couches.
// Zoom sur une position
await viewer.setView({ center: [2.35, 48.85], zoom: 14 })
// Zoom sur une emprise
await viewer.setView({ extent: [-5, 41, 9, 51] })