IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IGN API Géoportail Discussion :

fermer infobulle kml


Sujet :

IGN API Géoportail

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 23
    Points : 19
    Points
    19
    Par défaut fermer infobulle kml
    Bonjour à tous,

    Une question peut être très bête :
    J'ai chargé unfichier kml : viewer.getMap().addLayer( "KML", "points", "fichier.kml", { visibility:true, displayInLayerSwitcher: false } );
    Quand je clic sur les point, une infobulle s'ouvre et je peux la fermer par la petite croix située en haut à droite.
    Mais y a t il un moyen de les fermer via un lien situé ailleurs sur la page ?

    Merci à tous

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur cartographe
    Inscrit en
    Avril 2009
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 173
    Points : 4 224
    Points
    4 224
    Par défaut
    Citation Envoyé par nectar Voir le message
    Mais y a t il un moyen de les fermer via un lien situé ailleurs sur la page ?
    Oui ...

    La fermeture d'une popup correspond au code suivant :

    la popup est liée dans ton cas à un objet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    objetKML.popup.hide();
    et l'objet KML a un id :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    coucheKML.features[idObjetKML].popup.hide();
    ton lien (et surtout quant tu ouvres la popup) peuvent se servir de toutes ces informations

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 23
    Points : 19
    Points
    19
    Par défaut
    Merci dgrichard,

    Je veux bien encore un petit coup de main car je n'y arrive pas. Voici ce que j'ai fait :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    </script>
    ...
    
    viewer.getMap().addLayer( "KML", "points", "fichier.kml", { visibility:true, displayInLayerSwitcher: false } );
    
    ...
    
    function fermer(){
    	var layerKml = this.viewer.getMap().getLayersByName("points");
    	layerKml.features[idObjetKML].popup.hide();
    
    }
    </script>
    
    ...
    
    <a href="javascript:fermer();">fermer popup</a>
    Merci beaucoup !

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur cartographe
    Inscrit en
    Avril 2009
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 173
    Points : 4 224
    Points
    4 224
    Par défaut
    Citation Envoyé par nectar Voir le message
    Je veux bien encore un petit coup de main car je n'y arrive pas. Voici ce que j'ai fait :
    J'essayerai quelque chose comme (sinon, il te faudrait intercepter l'évènement "beforefeatureselected" pour écrire ton lien) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    ...
    function fermer(){
        var layerKml = this.viewer.getMap().getLayersByName("points");
        if (layerKml.selectedFeatures.length>0) {
            var ctrls= layerKML.map.getControlsByClass(/^.*\.Control\.SelectFeature$/);
            var f= layerKml.selectedFeatures[0];
            for (var i= 0, li= ctrls.length; i<li; i++) {
                var c= ctrls[i];
                if (!c.active) { continue; }
                var ls= c.layers || [c.layer];
                for (var j= 0, lj= ls.length; j<lj; j++) {
                    if (ls[j]==f.layer) {
                        // unselect => popup.hide()
                        c.unselect(f);
                    }
                }
            }
        }
    }
    Globalement, quant on clique sur l'objet, ce dernier est sélectionné (mis dans selectedFeatures) et la popup créée. On parcours donc la couche a la recherche du contrôle SelectFeature actif sur l'objet sélectionné ... quant on le trouve : on le dé-sélectionne !

Discussions similaires

  1. [Google Maps] comment fermer une infobulle lorsque je clique sur une nouveau marker
    Par franklin19 dans le forum APIs Google
    Réponses: 6
    Dernier message: 07/08/2011, 23h42
  2. infobulle dans un fichier kml
    Par seben dans le forum IGN API Géoportail
    Réponses: 4
    Dernier message: 22/11/2009, 17h45
  3. Fermer l'animation (swf/exe lancé depuis Windows)
    Par ZiZouJH dans le forum Flash
    Réponses: 3
    Dernier message: 14/01/2003, 10h00
  4. [MDI] comment fermer la bonne fenêtre enfant ?
    Par KThrax dans le forum Langage
    Réponses: 5
    Dernier message: 01/09/2002, 09h42
  5. Fermer une application à l'aide de OnIdle
    Par Thierry Rapp dans le forum Composants VCL
    Réponses: 2
    Dernier message: 29/08/2002, 12h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo