Skip to content

Ajouter une couche au Helper

Exemple concret de bout en bout : ajouter une couche raster (tuiles WMTS swisstopo) au Helper. C'est le type de contribution le plus courant. Pour une couche de données (points, géométries), voir la section en bas.

À lire d'abord

Cette page suppose un environnement de dev qui tourne. Sinon, commencer par Contribuer puis les conventions de code.

1. Déclarer la couche

Dans main.user.ts, fonction createLayers(), ajouter une instance de TileLayer au tableau layerList :

typescript
new TileLayer({
  wmeSDK,
  name: i18next.t("common:layers.hiking", "Chemins de randonnée"),
  tileHeight: 256,
  tileWidth: 256,
  fileName: "${z}/${x}/${y}.png",
  servers: [
    "https://wmts.geo.admin.ch/1.0.0/ch.swisstopo.<identifiant-couche>/default/current/3857",
  ],
  zIndex: 2035,
}),

Reprendre les couches existantes comme modèle. L'identifiant de couche swisstopo se trouve dans le géocatalogue geo.admin.ch. Choisir un zIndex libre (les couches actuelles vont de 2036 à 2039).

2. Ajouter la traduction

La clé i18n passée à i18next.t() doit exister pour les quatre langues. Ajouter layers.hiking dans chaque locales/<lang>/common.json :

json
{
  "layers": {
    "hiking": "Chemins de randonnée"
  }
}

(Traduire la valeur pour de, en, it.)

3. Mettre à jour le changelog

Ajouter une entrée Added dans la section Changelog de tous les README (README.md, README.fr.md, README.de.md, README.it.md), voir conventions.

4. Construire et tester

bash
npm run build

Puis smoke test dans le WME : charger le build local, cocher la nouvelle couche, vérifier que les tuiles s'affichent et se rechargent au déplacement de la carte.

5. Ouvrir la PR

Suivre le flux de contribution : branche, checklist, PR avec review.

Couche de données (vecteur)

Pour afficher des points ou des géométries (et pas des tuiles), étendre FeatureLayer (src/featureLayer.ts) au lieu de TileLayer et implémenter ses méthodes abstraites :

  • fetchData() : générateur async qui récupère les enregistrements (par lots).
  • mapRecordToFeature() : transforme un enregistrement en SdkFeature.
  • getRecordId() : identifiant stable d'un enregistrement.
  • shouldDrawRecord() : filtre (zoom, zone, validité…).
  • featureClicked() : réaction au clic sur une entité.

FeatureLayer s'occupe du rendu, du re-filtrage et des événements carte. Référence à copier : src/publicTransportStopsLayer.ts et src/sbbDataLayer.ts. Les étapes 2 à 5 (i18n, changelog, build, PR) sont identiques.

Déjouons le trafic, ensembleGemeinsam dem Verkehr entfliehenSuperiamo il traffico, tutti assiemeOutsmarting traffic, together

Waze Community Switzerland · Documentation communautaire, non affiliée à Waze/Google