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 :

problème clic sur kml après changement de niveau de zoom


Sujet :

IGN API Géoportail

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut problème clic sur kml après changement de niveau de zoom
    Bonjour à tous,

    Jusqu'à maintenant, j'avais réussi à me débrouiller seul, mais là, j'ai besoin d'aide.

    J'affiche un kml (mailles) entre les niveaux de zoom 11 et 18 (voir : http://www.ocelis.net/carto/). Les mailles changent de couleurs au survol (là, pas de problème). Lors du clic sur une maille, une action est déclenchée (ici un simple alert()).
    Cela fonctionne. Mais si l'on masque puis réaffiche le kml, cela ne fonctionne plus. Même problème lorsqu'on sort des niveaux de zoom où le kml est affiché puis qu'on y revient.

    Une idée pour résoudre ce problème ?

    Merci d'avance.

  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
    Tu crées les KML avec les paramètres par défaut (clic -> popup).
    Tu crées ensuite l'écouteur hover, mais il n'est pas lié à l'état de la couche (activé/désactivé) et donc dans les deux cas, l'écouteur est désactivé

    Si tu ne veux pas de l'écouteur standard (clic -> popup), alors soit tu le remplaces par le hover (utilise les options ad hoc), soit utilises l'option preventDefaultBehavior:true (déjà discuté sur le forum).

    Pour lier l'état de la couche avec les écouteurs, il faut écouter l'évènement "changelayer" de la carte et appeler un fonction qui gère cela :

    Dans le code de l'API tu peux trouver ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var select= new OpenLayers.Control.SelectFeature(layer, xmlDefaults);
    this.addControl(select);
    if (layer.visibility && !xmlDefaults.autoActivate) {
        select.activate();
    }
    this.events.on({"changelayer": Geoportal.Map.onVisibilityChange, scope:select});
    et

    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
    Geoportal.Map.onVisibilityChange= function(e) {
        if (e.property && e.property=="visibility") {
            var c= false, vo= false;
            if (this.layers) {
                for (var i= 0, l= this.layers.length; i<l; i++) {
                    vo= vo || (this.layers[i].visibility && this.layers[i].inRange);//false in the end if all layers are not visible
                    if (this.layers[i]==e.layer) {
                        c= true;
                    }
                }
            } else {
                c= this.layer==e.layer;
                vo= this.layer.visibility && this.layer.inRange;
            }
            if (c) {
                if (vo) {
                    this.activate();
                } else {
                    this.deactivate();
                }
            }
        }
    };
    Il faut regarder le code OpenLayers et API. Ils sont en Open source

  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
    Dans ton code, je trouve:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //descativation clavier
    var clavier= viewer.getMap().getControlsByClass('OpenLayers.Control.KeyboardDefaults')[0];
    clavier.deactivate();
    Mais qui n'a aucun effet...
    Histoire de compléter ma formation, as-tu une explication?
    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

  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
    Mais qui n'a aucun effet...
    Histoire de compléter ma formation, as-tu une explication?
    Ce contrôleur est géré (activé/désactivé) par la position de la souris dans la carte. Dès que la sourie revient sur la carte, il est activé.

  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
    Dès que la sourie revient sur la carte, il est activé.
    D'accord.
    Mais alors comment désactiver le clavier quand on est sur la carte?
    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

  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
    D'accord.
    Mais alors comment désactiver le clavier quand on est sur la carte?
    Si on désactive le clavier et la souris ... on navigue comment

    A priori (non testé), depuis la 1.3, il suffit de ne pas créer le contrôleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ... Geoportal.load(
        ...
        componentsOptions:{
            'OpenLayers.Control.KeyboardDefaults':{
                disable:true
            }
            ...
        }
        ...
        )
    ou lors de la création du visualisateur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ... new Geoportal.Viewer.*(
        ...
        {
            ...
            controlsOptions:{
                'OpenLayers.Control.KeyboardDefaults':{
                    disable:true
                }
                ...
            }
            ...
        });
    Sinon, une fois créé, il faudrait essayer un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var clavier= viewer.getMap().getControlsByClass('OpenLayers.Control.KeyboardDefaults')[0];
    clavier.deactivate();
    clavier.destroy();
    clavier= null;
    

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    merci tout plein pour cet aide !

    A bientôt

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ... new Geoportal.Viewer.*(
        ...
        {
            ...
            controlsOptions:{
                'OpenLayers.Control.KeyboardDefaults':{
                    disable:true
                }
                ...
            }
            ...
        });
    J'ai l'impression que cela ne fonctionne pas.
    Page d'essai ou ce codage est installé et en entrée, la touche + lance le zoom...

    Par contre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var clavier= viewer.getMap().getControlsByClass('OpenLayers.Control.KeyboardDefaults')[0];
    clavier.deactivate();
    clavier.destroy();
    clavier= null;
    et ses variantes, est efficace.
    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

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

Discussions similaires

  1. Réponses: 36
    Dernier message: 16/01/2015, 08h09
  2. clic sur reglette et changement d'onglet
    Par binoune dans le forum WebDev
    Réponses: 1
    Dernier message: 26/07/2012, 08h42
  3. Clic sur KML innopérant après zoom de la carte
    Par saxrub dans le forum IGN API Géoportail
    Réponses: 9
    Dernier message: 28/11/2010, 12h11
  4. [JSP] Réaliser un traitement après clic sur un lien donné
    Par Ataman dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 25/06/2006, 10h42
  5. Changement d'un background d'un td via un clic sur un lien
    Par klaas dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 25/04/2005, 16h59

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