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 :

measurebar dans une div


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
    Par défaut measurebar dans une div
    Un petit problème que je traine depuis longtemps... Que Jérémy saura m'expliquer!

    Je souhaite mettre le Control.MeasureToolbar dans une div particulière (par exemple #over)

    En écrivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var tbx = viewer1.getMap().getControlsByClass('Geoportal.Control.ToolBox')[0];
    var measurebar = new Geoportal.Control.MeasureToolbar(
    	{div: OpenLayers.Util.getElement(tbx.id+'_measure'),
    		targetElement: OpenLayers.Util.getElement(tbx.id+'_meares')
    	}
    );
    viewer1.getMap().addControl(measurebar);    
    $("#over").html($(".gpControlMeasureToolbar"));
    J'ai bien mes boutons dans #over, mais .gpControlMeasureToolbarResult reste attaché à Control.ToolBox

    J'arrive à avoir .gpControlMeasureToolbar et .gpControlMeasureToolbarResult dans #over avec :
    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
    var tbx = viewer1.getMap().getControlsByClass('Geoportal.Control.ToolBox')[0];
    var measurebar = new Geoportal.Control.MeasureToolbar(
    	{div: OpenLayers.Util.getElement(tbx.id+'_measure'),
    		targetElement: OpenLayers.Util.getElement(tbx.id+'_meares')
    	}
    );
    viewer1.getMap().addControl(measurebar);
     
    var toolbar = new OpenLayers.Control.Panel({
    			displayClass : 'cmToolbar',
    			id : 'id_cmToolbar'
    		});
    	viewer1.getMap().addControl(toolbar);
    	toolbar.addControls([tbx]);
    	$("#over").html($("#id_cmToolbar"));
    mais cela "double" la toolbox . En jouant sur les css, je rends invisible le double de la toolbox, mais cela n'est pas bien, et me gène...

    Comment faire cela proprement?

  2. #2
    Membre émérite 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 : 40
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Septembre 2013
    Messages : 456
    Par défaut
    Si je comprends bien, tu veux afficher dans la même div #over à la fois les outils de mesure (.gpControlMeasureToolbar) et le résultat de la mesure (.gpControlMeasureToolbarResult) ?

    Dans ce cas, la meilleure solution est de découper ta div en deux div distinctes, l'une pour accueillir les outils, l'autre pour accueillir le résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <div id="over">
    	<div id="over_tools"></div>
    	<div id="over_result"></div>
    </div>
    La div #over_tools sert à accueillir les outils, de la même manière que la première version du code que tu proposes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var tbx = viewer1.getMap().getControlsByClass('Geoportal.Control.ToolBox')[0];
    var measurebar = new Geoportal.Control.MeasureToolbar(
    	{div: OpenLayers.Util.getElement(tbx.id+'_measure'),
    		targetElement: OpenLayers.Util.getElement(tbx.id+'_meares')
    	}
    );
    viewer1.getMap().addControl(measurebar);    
    $("#over_tools").html($(".gpControlMeasureToolbar"));
    
    // Ajout de la barre de mesure
    viewer1.getMap().addControl(measurebar);
    La div #over_result sert à accueillir le résultat, en ajoutant la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#over_result").html($(".gpControlMeasureToolbarResult"));
    Après, tu as juste à gérer ton CSS pour que chacune de ces deux div internes s'affiche comme tu le souhaites suivant le souhait initial de design de la div englobante #over.

    Avec ce code, sans aucun effort de mise en forme, voilà ce que j'obtiens (la div #over en bordure verte, les deux div internes en bordures rouges et bleues) :

    Nom : 2014-05-07_171221.png
Affichages : 84
Taille : 12,9 Ko

  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
    Par défaut
    Ce n'est pas possible d'être aussi nul! Je parle de moi.

    Je n'ai pas mis en pratique, mais à la lecture de ton retour cela me semble maintenant évident.
    Et dire que j'allais chercher des noeuds ....

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

Discussions similaires

  1. Depassement dans une div
    Par Linaa dans le forum Langage
    Réponses: 5
    Dernier message: 01/12/2005, 08h14
  2. [CSS] Comment faire apparaitre l'ascenceur dans une <div&
    Par vampyrx dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 08/09/2005, 10h06
  3. Introduire du text dans une div
    Par 10-nice dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/09/2005, 11h50
  4. barre de defilement dans une div
    Par barbarius dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 23/06/2005, 14h19
  5. autoscroll dans une div
    Par c@rtm@n dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/06/2005, 22h52

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