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 :

modification boite outils BIS


Sujet :

IGN API Géoportail

  1. #1
    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 modification boite outils BIS
    Je m'exerce à modifier la boite à outils.

    J'ai le résultat suivant (voir pièce jointe). Comment pourrais-je aligner "surface" avec le résultat pour avoir quelque chose comme: "Surface : 539856 m²" sur la même ligne. De même pour "Longueur : xxxx".

    Il ne me semble pas que ce soit des labels... Mais je n'ai peut-être pas trouver la bonne div????

  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 cmail Voir le message
    J'ai le résultat suivant (voir pièce jointe). Comment pourrais-je aligner "surface" avec le résultat pour avoir quelque chose comme: "Surface : 539856 m²" sur la même ligne. De même pour "Longueur : xxxx".

    Il ne me semble pas que ce soit des labels... Mais je n'ai peut-être pas trouver la bonne div????
    Si je comprends bien c'est une surcharge de Geoportal.Control.MeasureToolbar.prototype.handleMeasurements qui est à faire, la voilà :

    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
    Geoportal.Control.MeasureToolbar.prototype.handleMeasurements = function(evt) {
      if (!evt) { return; }
      if (this.targetElement) {
        var msg= this.labels[evt.order] + ':' +
            evt.measure.toFixed(this.ACCURACIES[evt.units]) + ' ' +
            evt.units + (evt.order==2? '<sup>2</sup>':'');
        this.targetElement.innerHTML= msg;
      } else {
        var msg= this.labels[evt.order] + ': ' +
            evt.measure.toFixed(this.ACCURACIES[evt.units]) + ' ' +
            evt.units + (evt.order==2? '^2':'');
        OpenLayers.Console.info(msg);
      }
    }
    Mais attention, je suis en train de modifier cette classe, ce code risque de ne pas fonctionner à la prochaine mise-à-jour corrective de l'API 1.0 ... le code ressemblant actuellement en développement à :

    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
    28
    29
    30
    31
    32
    33
    34
        /**
         * Method: handleMeasurements
         * Compute the length or area.
         *
         * Parameters:
         * evt - {Event} triggered by OpenLayers.Control.Measure.measure method.
         *      event context is :
         *      * measure : length or area so far measured;
         *      * units : units of measure;
         *      * order : 1 for length, 2 for area;
         *      * geometry : the path of measurement.
         */
        handleMeasurements: function(evt) {
            if (!evt) {
                return;
            }
            if (!(0<=evt.order && evt.order< this.labels.length) || evt.measure===0) {
                this.targetElement.innerHTML= OpenLayers.i18n('waiting.measurement');
                return;
            }
            var msg= OpenLayers.String.sprintf(
                this.targetFormat,
                OpenLayers.i18n(this.labels[evt.order]),
                this.accuracies[evt.units],
                evt.measure,
                evt.units,
                (evt.order==2? (this.targetElement? '<sup>2</sup>':'^2'):''));
            if (this.targetElement) {
                this.targetElement.innerHTML= msg;
            } else {
                OpenLayers.Console.info(msg);
            }
        },
    this.targetFormat étant une option du constructeur Geoportal.Control.MeasureToolbar qui est définie ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        /**
         * APIProperty: targetFormat
         * {Object} the way the measurements are rendered.
         *      Defaults to *{'targetElement': "%s :<br/>%.*f %s%s", 'default' : "%s : %.*f %s%s" }*
         */
        targetFormat: {
            'targetElement': "%s :<br/>%.*f %s%s",
            'default'      : "%s : %.*f %s%s"
        },

  3. #3
    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
    Toujours un grand merci (Même si parfois j'oublie de te dire ma profonde reconnaissance) pour ces réponses qui me font rebondir.

    1. Comme d'habitude, la question sous-jacente à tes évocations de mise-à-jour... Pour quand (environ) cette MAJ? Suivant le délais, je patienterai ou pas...
    2. Mais je t'avoue qu'en l'état, actuellement, j'aurai quelque mal à arriver à mes fins avec ce que tu me donnes. Aussi je vais encore dire une grosse bêtise qui est peut-être hors de proportion avec ce que tu projettes : Puisque tu revois cette classe, ne serait-il pas possible que les intitulés de ces fonctions: "En attente de saisie", "Longueur", "Surface" etc. soient référencés par une variable et que ces variables soient paramétrées dans un fichier XML associé genre fr_FR.htm. Il serait alors beaucoup plus facile d'adapter l'interface à nos besoins par des non-pro de js. Si c'est trop absurde, inutile de me répondre.
    3. Pour les surfaces, le système retenu est le métrique. Mais ici, en milieu rural, l'unité de base de surface est l'Hectare et ses multiples. On a abandonné le "pied-carré" et la "coudée" seulement au passage du troisième millénaire. Bref, comment ferais-tu pour faire la correction?
    4. J'aimerais aussi que tu m'aides un peu pour placer d'autres outils à coté des deux déjà implémentés. J'ai bien la page de mga_geo http://atlasnw.free.fr/geoportail/exemples/outils.html mais j'ai un peu de mal (comme toujours) à faire apparaitre ses boutons de Control.NavigationHistory dans Control.MeasureToolbar...

  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 cmail Voir le message
    Toujours un grand merci (Même si parfois j'oublie de te dire ma profonde reconnaissance) pour ces réponses qui me font rebondir.

    1. Comme d'habitude, la question sous-jacente à tes évocations de mise-à-jour... Pour quand (environ) cette MAJ? Suivant le délais, je patienterai ou pas...
    Avant le 15 avril ... J'ai déjà fait deux mises à jour correctives depuis le 15 mars ...

    Citation Envoyé par cmail Voir le message
    1. Mais je t'avoue qu'en l'état, actuellement, j'aurai quelque mal à arriver à mes fins avec ce que tu me donnes. Aussi je vais encore dire une grosse bêtise qui est peut-être hors de proportion avec ce que tu projettes : Puisque tu revois cette classe, ne serait-il pas possible que les intitulés de ces fonctions: "En attente de saisie", "Longueur", "Surface" etc. soient référencés par une variable et que ces variables soient paramétrées dans un fichier XML associé genre fr_FR.htm. Il serait alors beaucoup plus facile d'adapter l'interface à nos besoins par des non-pro de js. Si c'est trop absurde, inutile de me répondre.
    C'est déjà le cas, mais ce ne l'était justement pas encore assez paramétrable ... Pour le XML, en Javascript, c'est pas la meilleure solution


    Citation Envoyé par cmail Voir le message
    1. Pour les surfaces, le système retenu est le métrique. Mais ici, en milieu rural, l'unité de base de surface est l'Hectare et ses multiples. On a abandonné le "pied-carré" et la "coudée" seulement au passage du troisième millénaire. Bref, comment ferais-tu pour faire la correction?
    C'est déjà possible, mais il faut savoir jouer avec le Javascript. Le plus simple étant de rester en 'metric', unité 'm' et de diviser par 10000 à la fin lors de la surcharge de handleMeasurements ...
    Citation Envoyé par cmail Voir le message

    1. J'aimerais aussi que tu m'aides un peu pour placer d'autres outils à coté des deux déjà implémentés. J'ai bien la page de mga_geo http://atlasnw.free.fr/geoportail/exemples/outils.html mais j'ai un peu de mal (comme toujours) à faire apparaitre ses boutons de Control.NavigationHistory dans Control.MeasureToolbar...
    C'est un contrôle OpenLayers comme les autres. Utilise FF et Firebug pour trouver les CSS qui vont bien.

  5. #5
    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
    J'ajoute un petit commentaire pour les néophytes qui veulent changer certains intitulés de l'API:
    1/ Le repérer dans le fichier source tiré du fichier archive Geoportail-API-1.0-src.zip à l'adresse geoportal-1.0\js\1.0\lib\geoportal\lib\Geoportal\Lang\fr.js
    2/ Le modifier en faisant appel à la fonction Geoportal.Lang['fr']['XXXX']= 'Nouveau intitulé'; en première instruction dans function initGeoportalMap() {...}

    Exemple: Vous affichez la couche ORTHOIMAGERY.ORTHOPHOTOS et vous ètes désolé (n'est-ce pas mga_geo?) de voir apparaitre "Ortho-imaginerie" (suivant une norme européenne) dans le gestionnaire de couches.


    1. Vous ouvrez le fichier fr.js dans un traitement de texte.
    2. Vous cherchez "Ortho-imaginerie" et vous déduisez le nom du paramètre : 'ORTHOIMAGERY.ORTHOPHOTOS'
    3. Vous rajoutez en première ligne de votre fonction initGeoportalMap() {...} la ligne: "Geoportal.Lang['fr'][ 'ORTHOIMAGERY.ORTHOPHOTOS']= 'Photo aérienne';

  6. #6
    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 cmail Voir le message

    1. Vous affichez le fichier fr.js.
    2. Vous cherchez "Ortho-imaginerie" et vous déduisez le nom du paramètre : 'ORTHOIMAGERY.ORTHOPHOTOS'
    3. Vous rajoutez en première ligne de votre fonction initGeoportalMap() {...} la ligne: "Geoportal.Lang['fr'][ 'ORTHOIMAGERY.ORTHOPHOTOS']= 'Photo aérienne';
    Nickel

  7. #7
    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
    /**
    * APIProperty: targetFormat
    * {Object} the way the measurements are rendered.
    * Defaults to *{'targetElement': "%s :<br/>%.*f %s%s", 'default' : "%s : %.*f %s%s" }*
    */
    targetFormat: {
    'targetElement': "%s :<br/>%.*f %s%s",
    'default' : "%s : %.*f %s%s"
    },
    Mis en application et le résultat est conforme à mes attentes. Reste à traduire les km² en hectare...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/04/2007, 15h28
  2. [VBA-E] Boite à outils Controles ou Formulaires dans EXcel
    Par xeron33 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/03/2007, 11h26
  3. Rubriques des Boites à outils
    Par elgigante dans le forum WinDev
    Réponses: 2
    Dernier message: 12/03/2007, 13h50
  4. [Excel] Boite à outils
    Par arcane dans le forum Excel
    Réponses: 1
    Dernier message: 14/11/2005, 12h50
  5. [BDD] savoir sur boite outil
    Par ghaoui dans le forum JBuilder
    Réponses: 2
    Dernier message: 25/07/2005, 10h51

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