Ajouter des services par URL
Objectif
Cette recette explique comment construire un lien profond qui ouvre Geoviewer 5.x avec un ou plusieurs services déjà présents dans la carte.
Le mécanisme utilisé est le widget UrlQuery. Il lit le fragment d’URL au chargement du viewer et traite les ancres #ADD.
Pré-requis
Le viewer doit contenir le widget UrlQuery. Sa configuration par défaut active déjà l’ancre ADD.
{ "widgetId": "url-query", "widgetClass": "UrlQuery", "active": true, "config": {}}Si vous surchargez explicitement config.anchors, conservez une entrée ADD, sinon les paramètres #ADD seront ignorés.
{ "widgetId": "url-query", "widgetClass": "UrlQuery", "active": true, "config": { "anchors": [{ "type": "ADD" }] }}Ajouter un service depuis une métadonnée
Utilisez METADATAID quand le service est référencé dans Metawal / le catalogue.
https://example.be/ma-carte#ADD|METADATAID=385d8e9c-2c01-41c7-a38c-911f746c8877Le viewer récupère la fiche par UUID, déduit l’URL et le type de service, puis ajoute la couche à la carte.
Vous pouvez aussi forcer quelques propriétés d’affichage:
https://example.be/ma-carte#ADD|METADATAID=385d8e9c-2c01-41c7-a38c-911f746c8877|LABEL=Parcelles|VISIBLE=true|OPACITY=0.7Ajouter un service depuis son URL
Utilisez URL quand vous connaissez directement l’endpoint du service.
https://example.be/ma-carte#ADD|URL=https%3A%2F%2Fgeoservices.wallonie.be%2Farcgis%2Frest%2Fservices%2FEXEMPLE%2FMapServer|TYPE=ARCGIS_DYNAMIC|LABEL=Service%20externeTYPE est optionnel. Si vous ne le fournissez pas, Geoviewer utilise ARCGIS_DYNAMIC.
Valeurs possibles pour TYPE:
| Type | Usage courant |
|---|---|
ARCGIS_DYNAMIC | Service ArcGIS MapServer dynamique |
ARCGIS_TILED | Service ArcGIS tuilé |
ARCGIS_FEATURE_SERVICE | ArcGIS FeatureServer complet |
ARCGIS_FEATURE_LAYER | Couche FeatureServer ciblée |
WMS | Service WMS |
WMTS | Service WMTS |
OSM | Fond OpenStreetMap |
GOOGLE | Fond Google |
TIME_TRAVEL | Service temporel |
Ajouter plusieurs services
Répétez l’ancre #ADD dans le fragment d’URL.
https://example.be/ma-carte#ADD|METADATAID=385d8e9c-2c01-41c7-a38c-911f746c8877#ADD|URL=https%3A%2F%2Fgeoservices.wallonie.be%2Farcgis%2Frest%2Fservices%2FEXEMPLE%2FMapServer|TYPE=ARCGIS_DYNAMIC|LABEL=Service%20externeChaque bloc #ADD|... décrit un service indépendant.
Paramètres supportés
| Paramètre | Obligatoire | Description |
|---|---|---|
METADATAID | oui, si pas d’URL | UUID de la métadonnée à charger depuis le catalogue. |
URL | oui, si pas de METADATAID | URL directe du service à ajouter. |
TYPE | non | Type du service. Par défaut: ARCGIS_DYNAMIC. |
LABEL | non | Libellé affiché dans la table des matières. |
DESCRIPTION | non | Description associée au service. |
VISIBLE | non | true ou false. Par défaut: true. |
OPACITY | non | Nombre entre 0 et 1. Par défaut: 1. |
Ne mélangez pas URL et METADATAID dans le même bloc #ADD. Choisissez l’un ou l’autre.
Encodage des valeurs
Les valeurs sont séparées par | et =, donc encodez les valeurs qui contiennent des caractères spéciaux.
const serviceUrl = encodeURIComponent('https://geoservices.wallonie.be/arcgis/rest/services/EXEMPLE/MapServer');const label = encodeURIComponent('Service externe');
const url = `https://example.be/ma-carte#ADD|URL=${serviceUrl}|TYPE=ARCGIS_DYNAMIC|LABEL=${label}`;À encoder en priorité: les URLs, les labels avec espaces, les descriptions, et toute valeur contenant |, =, #, ? ou &.
Dépannage
| Symptôme | Vérification rapide |
|---|---|
| Le service n’est pas ajouté | Vérifiez que le widget UrlQuery est présent et actif dans la configuration du viewer. |
#ADD ne réagit pas | Si config.anchors est surchargé, vérifiez qu’il contient { "type": "ADD" }. |
| Un service par URL ne se charge pas | Vérifiez TYPE, l’encodage de URL, le CORS et l’accessibilité réseau de l’endpoint. |
| Une métadonnée ne se charge pas | Vérifiez que METADATAID correspond à une fiche catalogue exposant une URL et un type service. |