Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Tue 26 May 2009 10:29

Maxime31
Participant assidu
Date d'inscription: 3 Sep 2008
Messages: 175

[OpenLayers] Gestion des couches

Bonjour à tous,

J'aurais voulu savoir comment on pouvait gérer les couches sous une interface OL autrement que par le LayerSwitcher de base.

Est ce qu'on peut faire des choses un peu plus avancées, comme des thèmes qui se développent (avec un case +) par exemple ? Et si oui, est-ce que c'est du développement lourd qu'il faut mettre en place ?

Sur ce site, par exemple, la gestion de l'affichage/masquage des couches est assez bien gérée, avec un explorateur windows-like : http://sigore.observatoire-environnement.org/
Est- ce que ce genre de choses est pénible à mettre en place ?

Merci.

Hors ligne

 

#2 Tue 26 May 2009 10:44

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9857
Site web

Re: [OpenLayers] Gestion des couches

Bonjour,

Autant que je sache, le plus difficile est de gérer la structuration des couches. Le lien entre la case à cocher et OpenLayers est facile : après avoir récupérer l'objet layer de la couche voulue, tu l'actives ou désactives avec layer.setVisibility(checked);

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#3 Tue 26 May 2009 11:04

Maxime31
Participant assidu
Date d'inscription: 3 Sep 2008
Messages: 175

Re: [OpenLayers] Gestion des couches

Ok ! Mais justement c'est la structuration des couches qui m'intéresse sur ce site. En fait, tout simplement comment on gère le clic sur un thème et ensuite le déroulement des couches associées ?

Je crois qu'une fois, tu m'avais dit que c'était du Javascript mais est-ce que c'est vraiment du développement lourd ?
Parce que si on regarde le code source de la page, on retrouve un espèce d'immense tableau html, à la fin du code, avec tous les thèmes et toutes les couches récensées. Et pour chacun des thèmes, on a une fonction toggle(this) qui doit gérer le déroulement.
Voila ce qu'on a, par exemple, :

Code:

<a class="folder" style="cursor:pointer;" onclick="toggle(this)">
<img src="appFiles/treeview/plus.gif" alt=""><img src="appFiles/treeview/folder.gif" alt="">&nbsp;
<span style="font-family:arial,sans-serif; font-size:0.8em;">Nom du thème</span></a>

Qu'est-ce qu'on peut en déduire ?

Hors ligne

 

#4 Tue 26 May 2009 16:08

Maxime31
Participant assidu
Date d'inscription: 3 Sep 2008
Messages: 175

Re: [OpenLayers] Gestion des couches

Bon ben j'ai trouvé un truc pas trop mal !

Effectivement c'était bien du Javascript et j'ai plus particulièrement utilisé la librairie jquery qui, grâce à la fonction toggle, m'a permis d'arriver à ce que je voulais faire.

Hors ligne

 

#5 Thu 04 June 2009 11:59

Maxime31
Participant assidu
Date d'inscription: 3 Sep 2008
Messages: 175

Re: [OpenLayers] Gestion des couches

Bonjour à tous,

Je me permets de relancer ce sujet sur lequel j'ai pas mal avancé.

Par contre, j'ai un problème concernant la récupération des couches. En fait, je me suis crée une liste des couches dans mon HTML avec une case à cocher devant chaque nom de couche. Et donc quand je clique sur une de ces cases a cocher, cela renvoie sur une fonction javascript qui est censé jouer sur la visibilité de la couche en fonction du "checked" de la case à cocher.

Voila le javascript :

Code:

var map,communes;

function main(){
                                    
  map= new OpenLayers.Map('map', 
           {maxExtent:new OpenLayers.Bounds(314054,1732848,576643,2069423),
             maxResolution: 'auto',
             units:'meters',
             projection:'EPSG:27593'}); 
  map.addControl(new OpenLayers.Control.Scale());
  map.addControl(new OpenLayers.Control.ZoomToMaxExtent());
  map.addControl(new OpenLayers.Control.MousePosition());
  map.addControl(new OpenLayers.Control.EditingToolbar());
                
  communes = new OpenLayers.Layer.WMS("Communes", 
     "http://localhost/tilecache/tilecache.cgi?", {layers: "communes"});
  map.addLayer(communes);
    
  map.zoomToMaxExtent();
}
                        
function affichecouche(couche) {        
   map.getLayersByName(couche).setVisibility(document.getElementById("cc_com").checked);
   //j'ai testé également en mettant directement "map.getLayersByName('Communes')...." mais cela ne passe pas non plus
}

et voila comment je déclare ma case à cocher dans le HTML :

Code:

<input id="cc_com" type="checkbox" onclick="affichecouche('Communes');">Communes

Firebug m'indique que map.getLayersByName(couche).setVisibility is not a function. A noter que j'ai la même erreur si j'essyae directement de mettre le vrai nom de la couche (c'est-à-dire map.getLayersByName('Communes').setVisibility(false); )

Alors ma question est : par quels moyens peut-on récupérer une couche OL ? par son id ?

Hors ligne

 

#6 Thu 04 June 2009 12:45

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9857
Site web

Re: [OpenLayers] Gestion des couches

Bonjour,

Rajoute un layerName['Communes'] = communes (layerName doit être déclaré comme variable global, comme la variable map), puis appelle la dans ta fonction affichecouche() :

Code:

function affichecouche(couche) {
  var layer= layerName[couche];
  layer.setVisibility(document.getElementById("cc_com").checked);
}

Je pense que map.getLayersByName(couche) récupère les informations et pas l'objet.

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#7 Thu 04 June 2009 14:17

Maxime31
Participant assidu
Date d'inscription: 3 Sep 2008
Messages: 175

Re: [OpenLayers] Gestion des couches

Bon ben encore une fois, merci !

J'ai déclaré layerName comme un tableau et fait ce que tu m'as conseillé, et cela a marché.

Encore merci et bonne continuation.

Hors ligne

 

Pied de page des forums

Powered by FluxBB