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 :

Afficher outil mesure de distance


Sujet :

IGN API Géoportail

  1. #1
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2014
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2014
    Messages : 48
    Points : 16
    Points
    16
    Par défaut Afficher outil mesure de distance
    Bonjour,
    Je voudrais afficher l'outil "mesure de distance" sur ma carte (l'intégrer donc à la barre d'outils) en haut à droite, sur ma page :
    http://p.salquebre.free.fr/ign/pusieux.htm

    J'ai utilisé le générateur IGN qui m'a mis ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //Ajout de la barre d'outils de mesures
          var measurebar= new Geoportal.Control.MeasureToolbar({ 
            div: OpenLayers.Util.getElement(tbx.id+"_measure"), 
            displaySystem:(viewer.getMap().getProjection().getProjName()=="longlat"?"geographic":"metric"), 
            targetElement: OpenLayers.Util.getElement(tbx.id+"_meares") 
          });
    mais j'essaie de l'intégrer à mon code et ça ne marche pas car je ne sais pas exactement :
    - si ce code suffit
    - où insérer ce code dans ma page js ou htm.
    Merci à l'avance pour votre aide.

  2. #2
    Membre éclairé Avatar de jrenard
    Homme Profil pro
    Webdesigner / développeur front-end
    Inscrit en
    Septembre 2013
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Webdesigner / développeur front-end
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2013
    Messages : 456
    Points : 894
    Points
    894
    Par défaut
    Bonjour,

    Ce code ne suffit pas, puisqu'il ne fait que créer une instance de la barre de mesure. Il faut ensuite ajouter la barre de mesure ainsi créée sur votre carte via la ligne suivante fournie également par le générateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    viewer.getMap().addControl(measurebar);
    A noter également que l'utilisation des outils de mesure nécessite d'appeler l'API étendue via la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script src="http://api.ign.fr/geoportail/api/js/2.1.1/GeoportalExtended.js" charset="utf-8" type="text/javascript">
    dans laquelle il faut bien veiller à pointer sur GeoportalExtended.js et pas simplement Geoportal.js (comme c'est par exemple le cas actuellement sur http://p.salquebre.free.fr/ign/pusieux.htm)

    Avec ça, ça devrait fonctionner
    Développeur Web - Agglo La Rochelle
    Anciennement pôle technique Géoportail - IGN
    Twitter : @dje_renard

  3. #3
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2014
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2014
    Messages : 48
    Points : 16
    Points
    16
    Par défaut
    Merci jrenard pour cette réponse rapide.
    J'ai essayé mais plus rien ne s'affiche.
    Je fais de la salade avec les {([, c'est peut-être là que ça cloche ou bien je n'ai pas placé le code au bon endroit.
    J'ai laissé en ligne le fichier qui ne va pas à la même adresse pour que vous puissiez éventuellement me corriger.
    Merci.

  4. #4
    Membre éclairé Avatar de jrenard
    Homme Profil pro
    Webdesigner / développeur front-end
    Inscrit en
    Septembre 2013
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Webdesigner / développeur front-end
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2013
    Messages : 456
    Points : 894
    Points
    894
    Par défaut
    Citation Envoyé par Pedro88 Voir le message
    Je fais de la salade avec les {([, c'est peut-être là que ça cloche ou bien je n'ai pas placé le code au bon endroit.
    Un peu des deux

    En fait le morceau de code n'est pas au bon endroit parce qu'il y a confustion au niveau des imbrications multiples.

    Si je reprends le morceau suivant :
    //Ajout de la barre d'outils de mesures
    var measurebar= new Geoportal.Control.MeasureToolbar({
    div: OpenLayers.Util.getElement(tbx.id+"_measure"),
    displaySystemviewer.getMap().getProjection().getProjName()=="longlat"?"geographic":"metric"),
    targetElement: OpenLayers.Util.getElement(tbx.id+"_meares")

    viewer.getMap().addControl(measurebar);
    });
    Il faut le couper de là où il est, ce n'est pas sa place. Qui plus est, le viewer.getMap().addControl n'est pas au bon endroit, il doit être en dehors de la définition de la measurebar.

    Ensuite, il faut créer appeler une fonction onView dans les options de la fonction Geoportal.load, au même niveau que les options layersOptions, overlays, language, etc... Par exemple en fin de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                          ...
                          },// Fermeture de l'accolade de overlays
                          language:'fr',
    	              onView: initMap
                }
            );
        };
    Enfin, cette fonction initMap doit être définie ailleurs dans le code, en dehors du window.onload, c'est elle qui ajoutera les outils de mesure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function initMap() {
    	//Ajout de la barre d'outils de mesures
    	var measurebar= new Geoportal.Control.MeasureToolbar({ 
    		div: OpenLayers.Util.getElement(tbx.id+"_measure"), 
    		displaySystem:(viewer.getMap().getProjection().getProjName()=="longlat"?"geographic":"metric"), 
    		targetElement: OpenLayers.Util.getElement(tbx.id+"_meares") 
    	});
    	viewer.getMap().addControl(measurebar);
    }
    Développeur Web - Agglo La Rochelle
    Anciennement pôle technique Géoportail - IGN
    Twitter : @dje_renard

  5. #5
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2014
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2014
    Messages : 48
    Points : 16
    Points
    16
    Par défaut
    J'ai essayé de suivre votre démarche, et de mettre la fonction initMap à différents endroits, mais ça ne va toujours pas.
    On n'est pas très loin d'aboutir, je pense...

  6. #6
    Membre éclairé Avatar de jrenard
    Homme Profil pro
    Webdesigner / développeur front-end
    Inscrit en
    Septembre 2013
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Webdesigner / développeur front-end
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2013
    Messages : 456
    Points : 894
    Points
    894
    Par défaut
    Le code est a priori bon. En revanche, si on ouvre une console de développement, on constate que dès le début du script la variable "Geoportal" n'est pas reconnue, et on voit dans Firebug que le script GeoportalExtended.js semble ne pas être chargé. Et pour cause, la balise de script appelant le code l'API Géoportail n'est pas fermée ! En ajoutant un </script> à la fin de la ligne en question, ça devrait mieux se passer
    Développeur Web - Agglo La Rochelle
    Anciennement pôle technique Géoportail - IGN
    Twitter : @dje_renard

  7. #7
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2014
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2014
    Messages : 48
    Points : 16
    Points
    16
    Par défaut
    Merci jrenard.
    Si j'avais été plus malin, j'aurais pu le voir...
    Par contre, je vois la carte, mais pas l'outil mesure dans la barre d'outils en haut à droite.

  8. #8
    Membre éprouvé Avatar de cmail
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    1 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 730
    Points : 966
    Points
    966
    Par défaut
    Et que te dit firebug ?
    A partir du message d'erreur de firebug>>> tu fais une recherche sur ce forum autour par exemple "tbx">>> tu devrais trouver une solution....

    Ou lire http://api.ign.fr/documentation/91/b...ils-de-mesures
    Merci.

    _____________
    - Le site de l'Observatoire de Haute-Loire (obs43.fr)
    - Voir une vidéo de présentation (2 min.) de l'Observatoire de Haute-Loire

  9. #9
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2014
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2014
    Messages : 48
    Points : 16
    Points
    16
    Par défaut
    Je vois que la doc IGN sur les outils de mesure parle de quickstart.js qui s'est créé tout seul.
    Il faut que je modifie le code dans ce fichier ou seulement dans pusieux.js ?

    J'essaie de comprendre un peu Firebug, mais ça n'est pas évident pour moi, étranger à tout ça...
    Je ne vois pas les messages d'erreur, ni la localisation des errreurs.
    Quand je lis les tutoriels, je comprends que ce bon outil s'adresse aux développeurs, pas à moi.

  10. #10
    Membre éclairé Avatar de jrenard
    Homme Profil pro
    Webdesigner / développeur front-end
    Inscrit en
    Septembre 2013
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Webdesigner / développeur front-end
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2013
    Messages : 456
    Points : 894
    Points
    894
    Par défaut
    On peut oublier le quickstart.js, il n'a rien à faire là-dedans, et de toute façon la page html ne pointe pas dessus.

    Ce que Christian a voulu dire, c'est que l'un des éléments les plus importants de Firebug est la console. Et que renvoie la console ici ? "tbx is not defined". Autrement dit, l'élément désigné par tbx n'est pas défini. Il doit l'être quelque part dans le code de la fonction initMap, et il doit pointer sur l'élément HTML qui construit la boîte d'outils de contrôles (celle qui s'affiche en haut à gauche).

    Cette boîte d'outils est un contrôle de l'API qui s'appelle Geoportal.Control.ToolBox, on peut l'appeler depuis la map via la fonction viewer.getMap().getControlsByClass

    Il faut donc avant la création de la barre de mesure dans la fonction initMap déclarer la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var tbx= viewer.getMap().getControlsByClass("Geoportal.Control.ToolBox")[0];
    A noter que cette ligne de code est bien présente dans le code généré par le générateur, ainsi que dans le code d'exemple expliqué sur la page http://api.ign.fr/documentation/91/b...ils-de-mesures
    Développeur Web - Agglo La Rochelle
    Anciennement pôle technique Géoportail - IGN
    Twitter : @dje_renard

  11. #11
    Membre éprouvé Avatar de cmail
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    1 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 730
    Points : 966
    Points
    966
    Par défaut
    ce bon outil s'adresse aux développeurs
    La notion de développeurs est très vague! Tu développes bien un site avec l'api que tu bidouilles pour y ajouter des .gpx, non? Et tous les développeurs du monde entier sont passés par ton niveau, et avec un peu de travail maitrisent maintenant firebug.


    Dans ce qui suit qui est tiré de http://api.ign.fr/documentation/91/b...ils-de-mesures, tu ne vois aucune analogie avec les conseils de Jeremy?
    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
    // Récupération de la toolbox
    var toolBox= viewer.getMap().getControlsByClass('Geoportal.Control.ToolBox')[0];
    
    // Création de la barre de mesure
    var measurebar = new Geoportal.Control.MeasureToolbar(
        {
            // Div où la barre doit être ajoutée
            div: OpenLayers.Util.getElement(toolBox.id+'_measure'),
            // Div où le resultat des mesures est affiché
            targetElement: OpenLayers.Util.getElement(toolBox.id+'_meares')
        }
    );
    
    // Ajout de la barre de mesure
    viewer.getMap().addControl(measurebar);
    NB: pendant que je rédigeais cette réponse Jérémy à posté sa réponse!!!
    Merci.

    _____________
    - Le site de l'Observatoire de Haute-Loire (obs43.fr)
    - Voir une vidéo de présentation (2 min.) de l'Observatoire de Haute-Loire

  12. #12
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2014
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2014
    Messages : 48
    Points : 16
    Points
    16
    Par défaut
    Merci à vous deux, c'est bien gentil d'essayer de me faire travailler un peu et progresser. Je ne refuse pas l'effort, je vous trouve d'ailleurs assez pédagogues (parfois sévère, Christian, mais je l'accepte bien).
    J'ai intégré le code et ça ne s'affiche toujours pas...
    Je lance Firebug (F12), j'ai bien la page web en haut et Firebug en bas.
    Je vois le code de la page html, mais pas celle du js (Firebug s'efface devant la page js).
    Je lis dans les tutos qu'il suffit de pointer à la souris l'élément sur la page pour voir son code analysé par Firebug, mai si je clique sur la boîte d'outils (en haut à droite), je ne vois rien de spécial signalé par Firebug.
    Dans Firebug, il y a des onglets dans la fenêtre gauche et dans la droite. Lesquels dois-je afficher ?
    Je me dis que cet outil est sûrement intéressant, bien structuré, mais il me manque la base : il faudrait que je fasse un stage à l'IGN...

  13. #13
    Membre éclairé Avatar de jrenard
    Homme Profil pro
    Webdesigner / développeur front-end
    Inscrit en
    Septembre 2013
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Webdesigner / développeur front-end
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2013
    Messages : 456
    Points : 894
    Points
    894
    Par défaut
    Nul besoin de venir à l'IGN pour apprendre à utiliser Firebug, il existe de nombreux tutos en ligne extrêmement bien faits. Par exemple :
    - http://eric-pommereau.developpez.com...l-web/firebug/

    Encore une fois, l'un des éléments le plus important est la console, qui renvoie tous les messages d'erreur. Et que dit la console ici ? Que l'objet "viewer" n'est pas défini. Il faut donc le définir au début de la fonction initMap, de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var viewer  = iv.getViewer();
    où la variable iv est l'interfaceViewer de l'API qui a été créé par la fonction Geoportal.load
    Développeur Web - Agglo La Rochelle
    Anciennement pôle technique Géoportail - IGN
    Twitter : @dje_renard

  14. #14
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2014
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2014
    Messages : 48
    Points : 16
    Points
    16
    Par défaut
    Voilà, ça fonctionne.
    Merci beaucoup, Jérémy et Christian.
    C'est déjà un bonus par rapport à ce que j'avais imaginé au départ.
    L'objectif de départ est dépassé, c'est super et ça n'est pas grâce à moi !

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

Discussions similaires

  1. [CNAM] l'Outil d'enseignement à distance PLEI@D
    Par Manopower dans le forum Etudes
    Réponses: 20
    Dernier message: 29/04/2010, 03h15
  2. Outils de présentation à distance
    Par mch_27 dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 22/03/2006, 17h43
  3. [Client/Serveur]Où doit être mis outil mesure Performances?
    Par sabure dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 06/03/2006, 23h52
  4. [Performances]Afficher des mesures FPS
    Par GLDavid dans le forum Graphisme
    Réponses: 16
    Dernier message: 01/03/2006, 15h16
  5. [IE] Outil d'analyse à distance de l'historique
    Par annedeblois dans le forum Autres Logiciels
    Réponses: 6
    Dernier message: 27/09/2005, 17h46

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