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 :

Couche KML : affichage displayName des ExtendedData


Sujet :

IGN API Géoportail

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Couche KML : affichage displayName des ExtendedData
    Hello!

    Je souhaiterai modifier les données affichées d'une couche KML sur ma carte.
    Chaque Placemark de mes fichiers ont cette structure :
    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
    <Placemark>
                <styleUrl>mon_style</styleUrl>
                <Style/>
                <ExtendedData>
                    <Data name="nom_data">
                        <displayName>nom_que_je_souhaite_afficher</displayName>
                        <value>valeur1</value>
                    </Data>
                    <Data name="nom_data">
                        <displayName>nom_que_je_souhaite_afficher</displayName>
                        <value>valeur2</value>
                    </Data>
                </ExtendedData>
                <LineString>
                    <coordinates>mes coordonnées</coordinates>
                </LineString>
    </Placemark>
    Par défaut l'API affiche donc le nom du placemark et un tableau avec dans une colonne le nom des donnée (nom_data) et dans une autre les valeurs correspondantes. Je souhaite faire en sorte d'afficher le displayName. Est-ce possible sans devoir redéfinir un BalloonStyle dans mes fichiers KML?

  2. #2
    Membre chevronné Avatar de gcebelieu
    Homme Profil pro
    Ingénieur Géographe et Cartographe
    Inscrit en
    Novembre 2010
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Géographe et Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 1 106
    Points : 1 843
    Points
    1 843
    Par défaut
    Pour modifier le contenu des popups d'affichage des KMLs, il faut procéder ainsi :

    1. rajouter une option "onselect" dans les options de la couche KML.

    2. associer à cette option une fonction qui prend en paramètres un feature correspondant aux données KML sélectionnées et qui va créér une popup avec le contenu que tu auras récupéré dans les attributs du feature.

    Ce qui donne quelque chose comme ça :

    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
    21
    22
    23
    24
    25
    26
    27
    // options KML
    {
      // fonction appelée lors de la sélection d'un objet
      onselect: function(f) {
       
        console.log(f) ; // debug : permet de voir dans la console quels sont les attributs de f
        // création de la popup
        var popup = new OpenLayers.Popup.FramedCloud(
            "chicken", // un nom quelconque
            f.geometry.getBounds().getCenterLonLat(),  // la géométrie où l'on accroche la popup
            new OpenLayers.Size(100, 100),   // la taille de la popup
            "<p>"+f.attributes.displayName+"</p> ... ",  // le contenu de la popup défini à partir des attributs de f
         );
         f.popup = popup;
         f.layer.map.addPopup(popup);
      }
      //fonction appelée lors de la désélection d'un objet
      // but : libérer de la mémoire
      onunselect: function(f) {
        if (f.popup) {
          f.layer.map.removePopup(f.popup);
          f.popup.destroy();
          delete f.popup;
        }
      }
    }

    à adapter en fonction des caractéristiques de tes placemarks et du contenu que tu veux afficher.

  3. #3
    Membre averti Avatar de Zébulon-21
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 392
    Points : 315
    Points
    315
    Par défaut
    Avec un exemple qui s'en rapproche

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    C'est ce que je cherchais,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajout de toponymes via des couches KML
    Par Jerem77 dans le forum IGN API Géoportail
    Réponses: 11
    Dernier message: 28/04/2010, 19h27
  2. [Struts]personnaliser l'affichage avec des tags
    Par adrien.nicolet dans le forum Struts 1
    Réponses: 1
    Dernier message: 30/10/2005, 19h32
  3. affichage pellicule des dossiers
    Par cortex024 dans le forum Autres Logiciels
    Réponses: 6
    Dernier message: 11/10/2005, 11h12
  4. [C#] Affichage foireux des meshs
    Par Ingham dans le forum DirectX
    Réponses: 8
    Dernier message: 29/11/2004, 23h24
  5. Réponses: 6
    Dernier message: 19/10/2004, 13h46

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