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

GeoDataDays 2025

#1 Tue 27 April 2010 14:54

Tony VINCENT
Participant actif
Lieu: Poitiers
Date d'inscription: 13 Jan 2010
Messages: 86

Popup sur plusieurs couches séléctionnées

Bonjour,

J'avance sur mon projet, mais je suis de nouveau bloqué.

Je vous expose mon soucis.

J'utilise Mapfish pour faire mon interface, avec une arborescence de couche géré par layertree.

J'affiche le fond de carte Google, et mes couches (fichiers KML). Jusque la tout va bien.
A cela, je souhaitais ajouter un popup, au clique sur les points. J'ai utilisé pour faire cela le code suivant, qui fonctionne très bien.

Code:

var selectControl, selectedFeature;

        function onPopupClose(evt) {
            selectControl.unselect(selectedFeature);
        }

        function onFeatureSelect(feature) {
            selectedFeature = feature;
         //var url = "https//.../.../" + feature.attributes.id;
            popup = new OpenLayers.Popup.FramedCloud("chicken",feature.geometry.getBounds().getCenterLonLat(),null,
        "<div style='font-size:.8em'><iframe src='http://.../.../" + feature.attributes.id + "' width='700' height='500'></iframe></div>",null, true, onPopupClose);
            feature.popup = popup;
            map.addPopup(popup);
        }

        function onFeatureUnselect(feature) {
            map.removePopup(feature.popup);
            feature.popup.destroy();
            feature.popup = null;
        }

Le code pour créer les couches :

Code:

        var createKmlLayer = function(name, url, options) {
            name = new OpenLayers.Layer.GML(name, url, options);
            map.addLayer(name);

         selectControl = new OpenLayers.Control.SelectFeature(name,
                {onSelect: onFeatureSelect, onUnselect: onFeatureUnselect});

         map.addControl(selectControl);
         selectControl.activate();    

        }

...

...


        createKmlLayer(
            "reseau_vae",
            "xml/pc_cinema.kml",
            {
            format: OpenLayers.Format.KML,
               formatOptions: {
                extractStyles: true,
                      extractAttributes: true 
               },
            displayInLayerSwitcher: false
        });

        createKmlLayer(
            "reseau_eri",
            "xml/site_terri_dre_eri.kml",
            {
            format: OpenLayers.Format.KML,
               formatOptions: {
                extractStyles: true,
                      extractAttributes: true 
               },
            displayInLayerSwitcher: false
        });

Quand je sélectionne, une seul couche cela fonctionne très bien.

Mais si je sélectionne deux couches, le clique sur les points ne fonctionne que sur une seul couche.

Est-il possible, que le clique pour afficher le popup fonctionne sur plusieurs couches ?

La façon de créer mes couches n'est peut être pas la bonne ?



Tony

Hors ligne

 

#2 Tue 27 April 2010 16:04

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

Re: Popup sur plusieurs couches séléctionnées

Bonjour,

je suppose que quand tu parles de 'sélection' tu veux dire dans le layertree pour afficher la couche ?

De mémoire il n'est pas possible de sélectionner deux couches en même temps.

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 27 April 2010 16:42

Tony VINCENT
Participant actif
Lieu: Poitiers
Date d'inscription: 13 Jan 2010
Messages: 86

Re: Popup sur plusieurs couches séléctionnées

Oui, c'est ça.

Je coche deux couches pour les afficher sur la carte.


Si, ce n'est pas possible, ce n'est pas possible.

Il faudra que je l'explique dans la documentation, sur l'utilisation de l'outil.

Merci, pour ta réponse.

Hors ligne

 

Pied de page des forums

Copyright Association GeoRezo