Skip to Content

Comment grouper des couches et faire que l'affichage de chacune corresponde à un zoom ?

Auteur : Marie

Il faut :

- grouper toutes ces couches dans un même layerGroup dans le fichier layers.ini (monGroupe),

- toujours ds le fichier layers.ini, agréger monGroupe de sorte que seul le nom du layerGroup apparaisse dans la légende : ajouter à la définition du layerGroup layers.monGroupe.aggregate = true,

- dans le mapfile, définir des zoom min et max pour chacune des couches de sorte que les plages de zoom ne se recoupent pas,


De fait, lorsque que monGroupe est coché dans la légende, et que la carte est au zoom Z, seule la couche dont la plage de zoom contient la valeur Z s'affichera !

 

Exemple :

Dans le fichier layers.ini :

 layers.monGroupe.className = LayerGroup
 layers.monGroupe.children = maCouche1, maCouche2
 layers.monGroupe.rendering = block
 layers.monGroupe.aggregate = true
 layers.maCouche1.className = Layer
 layers.maCouche1.label = ma couche 1
 layers.maCouche1.msLayer = macouche1
 layers.maCouche2.className = Layer
 layers.maCouche2.label = ma couche 2
 layers.maCouche2.msLayer = macouche2


Dans le mapfile :

LAYER
 NAME "macouche1"
 ...
 MAXSCALE 50000
 MINSCALE 25000  
 ...
END
LAYER
 NAME "macouche2"
 ...
 MAXSCALE 100000 
 MINSCALE 50100 
 ...
END

Le groupe mon Groupe s'affichera dans la légende et du zoom 1/25 000 au 1/50 000 (inclu), seule la couche 1 s'affichera puis du 1/50 100 au 1/1 000 000, seule la couche 2 s'affichera.

Pas assez clair ? Aller plus loin ? Posez une question en lien avec ce problème ici.