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 :

Firefox : Problème avec multicouche (Trace et marqueurs)


Sujet :

IGN API Géoportail

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 55
    Points : 36
    Points
    36
    Par défaut Firefox : Problème avec multicouche (Trace et marqueurs)
    Bonjour et bonne année à tous,

    J'utilise toujours la version 1.04 et j'ai le problème qui est décrit ci-dessous.
    Sur cette page de mon site, j'affiche sur la carte IGN une trace GPX et des marqueurs GPX. En cliquant sur un marqueur des informations doivent s'afficher à droite de la carte : c'est ce qui se passe avec Google Chrome (3.0.195.38) et IE 8, mais pas avec Firefox (3.5.7).
    En effet avec FF les informations ne s'affichent pas, sauf si via la boite "Couches" je décoche la trace GPX : est-ce un problème connu et corrigé par la version 1.05 ?
    Merci pour votre expertise.

    Cordialement,

    Jean-Luc.

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 128
    Points : 1 764
    Points
    1 764
    Par défaut
    En IE8 Windows XP, les icônes ne s'affichent pas ...
    En FF 3.0.17 j'ai les icônes mais il ne se passe effectivement rien.

    Un petit coup de trace avec Firebug devrait permettre de trouver l'origine.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 55
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par mga_geo Voir le message
    En IE8 Windows XP, les icônes ne s'affichent pas ...
    Pour moi cela marche (affichage icônes et autre) avec IE 8 à la fois sous XP et Vista, idem pour Google Chrome. Même problème avc FF 3.5.7 sous XP et Vista


    Citation Envoyé par mga_geo Voir le message
    Un petit coup de trace avec Firebug devrait permettre de trouver l'origine.
    Rien n'est signalé par Firebug.

    Tout se passe comme si la couche Trace GPX masquait la couche marqueurs, la rendant inaccessible. Il y a peut être des problèmes liés au z-index des div, FF ne doit pas réagir comme les autres navigateurs ! A approfondir. Si vous avez des idées je suis preneur.

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 128
    Points : 1 764
    Points
    1 764
    Par défaut J'ai peut-être compris ...
    En beta4, l'ordre d'affichage des couches n'était pas nécessairement celui codé.

    La couche "Secteurs" est généralement au milieu dans la boite "Couches". En la remontant, le clic sur les icônes fonctionne.
    Avec les fichiers kml, j'ai le même comportement avec les polygones (LinearRing), pour les contours j'utilise les LineString.
    Je crois qu'en GPX, les "trk" sont bien convertis en LineString

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 55
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par mga_geo Voir le message
    En beta4, l'ordre d'affichage des couches n'était pas nécessairement celui codé.
    En fait il faudrait plutôt dire empilage qu'affichage, car les couches sont mises dans des div avec des z-index différents qui doivent dépendre du type de couche. La div de ma trace GPX a un z-index de 725 et celle de mes marqueurs a un z-index de 475. Si via FireBug je mets un z-index = 472 à la div de la trace GPX, les marqueurs sont cliquables sans décocher la trace. J'ai essayé d'imposer cette valeur en surchargeant et en utilisant l'id de la div via CSS mais sans succès !

    Ce comportement qui rend inaccessible une couche empilée sous une autre semble spécifique à FireFox.

    A suivre.

  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
    L'évènement "mousedown" traverse les couches dans l'ordre inverse de leur insertion. Sous FF, j'ai constaté que l'évènement n'est pas propagé comme il l'est sous IE/Chrome.

    Avec la 1.0beta5, il y a une amélioration : ce n'est plus l'ordre d'insertion, mais l'ordre de sélection : la dernière couche sélectionnée intercepte sous FF l'évènement.

    Il est aussi possible de créer les layers sans passer par le addLayer() de l'API Géoportail. Puis de créer un contrôleur unique de sélection qui gèrent tous ces layers. Il faut cependant faire le travail que fait l'API avec les popups, les comportements, etc ...

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 55
    Points : 36
    Points
    36
    Par défaut Problème nommage des id
    Citation Envoyé par dgrichard Voir le message
    Avec la 1.0beta5, il y a une amélioration : ce n'est plus l'ordre d'insertion, mais l'ordre de sélection : la dernière couche sélectionnée intercepte sous FF l'évènement.
    Je ne sais pas si cela résoudra le problème.

    Comme dit dans ma réponse précédente je pense que les z-index des div peuvent être utilisés pour palier le problème que j'ai. Mais lorsque je veux surcharger le z-index via CSS :
    #OpenLayers.Layer.GML_184 {
    z-index: 472 ! important;
    }
    cela ne fonctionne pas, OpenLayers.Layer.GML_184 est le nom de la div qui accueille ma trace. En regardant de plus près je vois que les id utilisent un nommage avec des points ("."). Si c'est conforme à HTML/XHTML, le CSS ne l'accepte pas : des essais avec cette page montre en nommant l'id à para1.t (par exemple) que le point n'est pas accepté.
    Erreur de ma part, mauvaise interprétation ... toujours est-il que j'ai introduit l'instruction suivante dans mon code :
    document.getElementById('OpenLayers.Layer.GML_184').style.zIndex = 472;
    et cela fonctionne.
    J'espère que le nommage de l'id de la div trace ne se fait pas de façon aléatoire.

    Voilà où j'en suis de mon expertise.

  8. #8
    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
    Globalement l'idée est d'activer le contrôleur associé à une couche. Il faudrait donc plutôt (via une action ou au chargement) :


    1. parcourir tous les contrôleurs de type OpenLayers.Control.SelectFeature;
    2. s'il ne porte pas sur la couche choisie, le désactiver;
    3. sinon, l'activer.

    La première étape s'effectue via la méthode getControlsByClass('OpenLayers.Control.SelectFeature') de la classe (OpenLayers|Geoportal).Map;
    les suivantes appellent juste active() ou deactivate() du contrôleur.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 55
    Points : 36
    Points
    36
    Par défaut je ne comprends pas
    Citation Envoyé par dgrichard Voir le message
    Globalement l'idée est d'activer le contrôleur associé à une couche. Il faudrait donc plutôt (via une action ou au chargement) :


    1. parcourir tous les contrôleurs de type OpenLayers.Control.SelectFeature;
    2. s'il ne porte pas sur la couche choisie, le désactiver;
    3. sinon, l'activer.

    La première étape s'effectue via la méthode getControlsByClass('OpenLayers.Control.SelectFeature') de la classe (OpenLayers|Geoportal).Map;
    les suivantes appellent juste active() ou deactivate() du contrôleur.
    Désolé Dgrichard, mais je ne comprends pas ta réponse par rapport à ce que j'ai dit ( nommage des id, CSS ...).

  10. #10
    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 jeanluc35 Voir le message
    Désolé Dgrichard, mais je ne comprends pas ta réponse par rapport à ce que j'ai dit ( nommage des id, CSS ...).
    Ce que tu essaies de faire avec les id (qui contiennent des .) et les CSS est directement effectué par activate()/desactivate() ...
    L'ordre (z-index) est piloté lui par (Geoportal|OpenLayers).Map.raiseLayer(couche, delta)

    Les id sont créés à la volé par OpenLayers, ils n'ont pas particulièrement été choisi syntaxiquement pour faire des entrées CSS.
    Le code d'OpenLayers se charge des changements de CSS pour les comportements directement.
    Les CSS sont plutôt utilisés pour l'interface de l'application.

    Ce que tu fais peut aussi s'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var couche= carteJLC.getMap().getLayersByName('Département')[0];
    carteJLC.getMap().raiseLayer(couche, 100);
    Ton astuce fonctionne donc bien, mais elle repose sur la méthode de nommage qui repose sur le nom de la classe + un nombre d'ordre incrémenté (Cf. OpenLayers.Util.OpenLayers.Util.createUniqueID(prefix)) et si cette numérotation change ...

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 55
    Points : 36
    Points
    36
    Par défaut
    Merci Dgrichard pour ces explications.
    J'y vois plus clair et je vais peaufiner mon script, mais j'attends la future version opérationnelle 1.0.

  12. #12
    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 jeanluc35 Voir le message
    J'y vois plus clair et je vais peaufiner mon script, mais j'attends la future version opérationnelle 1.0.
    Tu peux déjà faire les tests avec la 1.0bêta5 qui sera la 1.0 ...

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

Discussions similaires

  1. Après installation de Firefox, problème avec Flash Player
    Par spiwis dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 10/09/2009, 07h23
  2. Firefox - Problème avec JSP
    Par goldorakgo dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 14/10/2008, 23h54
  3. problème avec la méthode getElementById() dans Firefox
    Par matrouba dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 19/12/2005, 08h55
  4. problème avec z-index sous firefox ???
    Par SpaceFrog dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 22/09/2005, 20h39
  5. problème avec une page web sous firefox!
    Par 3psilOn dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 24/11/2004, 11h49

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