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 :

Taille des popups en fonction du contexte


Sujet :

IGN API Géoportail

  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 124
    Points : 1 764
    Points
    1 764
    Par défaut Taille des popups en fonction du contexte
    Je me suis fait ma classe de popup afin de pouvoir appliquer un style:
    OpenLayers.Popup.Pnc = OpenLayers.Class(OpenLayers.Popup, {
    contentDisplayClass: "olPopupPncContent",
    initialize:function(id, lonlat, contentSize, contentHTML, closeBox, closeBoxCallback, style) {
    if (style != null) {
    this.contentDisplayClass = contentDisplayClass;
    }

    OpenLayers.Popup.prototype.initialize.call(this,id, lonlat, contentSize, contentHTML, closeBox, closeBoxCallback);
    },

    CLASS_NAME: "OpenLayers.Popup.Pnc"
    });
    Avec des éléments de style
    .olPopupPncContent {
    overflow: auto;
    padding: 0;
    font-size: 1em;
    background: white;
    }
    .olPopupPncCarre {
    overflow: auto;
    padding: 0;
    font-size: 1em;
    font-weight: bold;
    background: purple;
    }
    Lorsque je visualise dans une page html "simple", la taille du popup est de 24x20 et dans une page "mediawiki" la taille passe à 18x13 ce qui n'est pas assez grand!
    Dans mediawiki, l'héritage donne
    body {main.css?207 (ligne 42)
    color:black;
    font-family:sans-serif;
    font-size-small;
    font-size-adjust:none;
    font-style:normal;
    font-variant:normal;
    font-weight:normal;
    line-height:normal;
    }
    Je ne trouve pas l'origine du problème.

    J'ai fait aussi des essais en page "simple", sur un changement de font-size (2em), la taille calculée est aussi insuffisante.

  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 minSize ?
    Il faudrait avoir un appel avec les vrais paramètres pour se faire une idée.

    Par défaut, OpenLayers.Pop va, si ni autoSize est true, ni size n'est défini, laisser le navigateur faire sa popup en se basant sur contentSize (ou 200x200 si non défini).

    Pourrais-tu essayer dans ton constructeur de forcer (par exemple) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    this.minSize= new OpenLayers.Size(200,200);
    et voir si effectivement la popup finale est toujours d'au moins 200x200 pixels ?

    Sinon, tu donnes comme héritage les informations relatives à body et non à olPopupPncContent, est-ce normal ?

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 124
    Points : 1 764
    Points
    1 764
    Par défaut autoSize !
    Je suis en version autoSize
    L'url de la version mediawiki: http://atlasnw.free.fr/ao35/index.ph...ions/MgaJsonGP

    et de la version simple: http://atlasnw.free.fr/ao35/extensio...Json/json.html

    Le code javascript et css est commun aux deux.

    Pour moi dans le cas de l'autoSize, c'est OpenLayers.Popup.updateSize qui travaille via OpenLayers.Util.getRenderedDimensions.

    Ne spécifiant pas de police, c'est celle de body qui s'applique dans le cas de mediawiki.

  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 Imbrication des div
    La popup (contentHTML) est pilotée par la classe : olPopupPncCarre
    Elle est contenue dans une div d'identifiant "*_GroupDiv" ...
    qui est contenue dans une div (OpenLayers.Popup) pilotée par la classe : olPopup.
    L'enchaînement des calculs de taille (à ce que je comprends) est :

    1. calcul de la taille du contenu;
    2. ajout des marges et autres gourmandises (entre autres minSize) à la div olPopup;
    3. affectation des tailles aux div.

    Lors du premier calcul la div olPopup est régie par le contenu de contentHTML qui lui n'est régi que par la taille relative de la police de caractères (1em) (soit la taille du caractère dans l'élément div olPopup). Visiblement, cette taille ne contraint pas suffissamment celle de la div et les popup sont juste taillée ...
    Dans le cas de la page simple, la taille est certes petite, mais pas fausse (il faudrait ajouter de la marge autour des numéros.
    Dans le cas de la page médiawiki, une première taille est définie par le body (font-size-small), puis écrasée par globalWrapper (font-size:127%).
    OpenLayers.Util.getRenderedDimensions() calcule la taille de la div dans le document et là j'ai l'impression que seul la taille body est prise en compte !

    C'est pour cela que nous avons récrit pour l'API une méthode Geoportal.Util.getElementGuessedDimensions() qui remonte la pile des styles avant d'appeler si nécessaire OpenLayers.Util.getRenderedDimensions() ...

    Pourrais-tu modifier le style olPopup en lui mettant 127% pour font-size et voir si cela modifie le comportement ?

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 124
    Points : 1 764
    Points
    1 764
    Par défaut modif style olPopup
    Bien vu!
    J'ai mis à 200% (je suis du sud ...) et effectivement l'impact est immédiat: ne pas oublier de vider son cache.
    Le défaut est bien visible sur la page Mediawiki.

  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 olPopup
    Citation Envoyé par mga_geo Voir le message
    J'ai mis à 200% (je suis du sud ...)
    On est deux alors

    Au final, il faudra chercher si OpenLayers.Util.getRenderedDimensions() n'est pas à revoir ...

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 124
    Points : 1 764
    Points
    1 764
    Par défaut
    Eh oui, il est fort probable que ce script soit le coupable.
    Malheureusement dans trac, je ne vois rien sur le sujet
    http://trac.openlayers.org/log/trunk...il.js?rev=9528

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 06/07/2010, 09h16
  2. Réponses: 0
    Dernier message: 26/03/2010, 16h03
  3. Taille des widgets en fonction de la dimension de la fenetre
    Par flo_k dans le forum GTK+ avec C & C++
    Réponses: 0
    Dernier message: 07/12/2008, 22h13
  4. Taille des div en fonction du contenu
    Par frog43 dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 12/06/2008, 14h52
  5. Réponses: 2
    Dernier message: 17/08/2005, 15h08

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