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 :

réactivation couche quand minZoomLevel=maxZoomLevel


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 réactivation couche quand minZoomLevel=maxZoomLevel
    Page de test
    Problème:
    En entrée (ZoomLevel =11), les icones gif animées renvoie sur une galerie photo. Seulement après un clic sur les communes (les icones disparaissent puisque minZoomLevel : 11, maxZoomLevel : 11) quand on revient à ce premier niveau de zoom (par touche clavier -) les icones ne sont plus actives.



    Je contourne ce problème en mettant minZoomLevel : 11 et maxZoomLevel : 17, puis en jouant sur document.getElementById("OpenLayers.Layer.Vector_XXX_root").style.visibility suivant la valeur du zoom, mais cette solution est un pis aller qui ne me satisfait pas. Et j'aimerais gérer correctement cette couche sans jouer sur les css... Quelques explications me seraient utiles sur mon viewer.getMap().events.register("zoomend", viewer.getMap(), fu.... en ligne 98.
    Voire sur ma couche cep en question en ligne 845...

  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
    Ne peux-tu pas faire juste une page simple avec le cas à résoudre ?

  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
    Cette page simplifiée reproduit mon problème de réactivation de la couche "cep":
    1/ Un premier clic sur icone => zoom 14 (ok)
    2/ Revenir zoom 10 (ok) mais les icones ne sont plus actives

    cep.redraw() ou cep.activate() ne semble pas répondre... Mais je ne dois pas les appeler de la bonne manière.

  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
    Ton exemple simplifié ne l'est en fait pas ...
    Voici ce que j'ai extrait de ton code pour tester :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    <!DOCTYPE html>
    <html>
    <head>
        <title>POI survol</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <style type="text/css">
        .gpControlInformation {
            display: none !important;
        }
        </style>
    </head>
    <body>
        <h1>Probleme de gestion du zoom et du click voir <a href="http://www.developpez.net/forums/d1212366/applications/sig-systeme-dinformation-geographique/ign-api-geoportail/reactivation-couche-minzoomlevel-maxzoomlevel/" target="_blank">forum</a></h1>
        <div id="GeoportalviewerDiv" style="width:800px; height:600px;"></div>
        <script type="text/javascript"
                src="http://api.ign.fr/geoportail/api/js/latest/lib/geoportal/lib/Geoportal.js"></script>
        <script type="text/javascript">
        var viewer= null;
    
        function initGeoportalMap() {
            viewer= new Geoportal.Viewer.Default(
                "GeoportalviewerDiv",
                OpenLayers.Util.extend({
                    minZoomLevel:10,
                    maxZoomLevel:17,
                },gGEOPORTALRIGHTSMANAGEMENT));
    
            viewer.addGeoportalLayer('GEOGRAPHICALGRIDSYSTEMS.MAPS:WMSC',{visibility: true,opacity:1.0});
            viewer.getMap().setCenterAtLonLat(4.3231201,45.0657615, 10);
    
            var affich= function(feature) {
                if (feature) {
                    alert(feature.data.description);
                }
                this.unselect(feature);
            };
            var clicCommune= function(f) {
                var zoom= viewer.getMap().getZoom();
                if (zoom == 10) {
                    viewer.getMap().zoomTo(14);
                } else {
                    viewer.getMap().zoomTo(zoom + 1);
                }
            };
    
            var cep= viewer.getMap().addLayer("KML","Les refuges","./POIgite.kml", {
                visibility: true,
                minZoomLevel:10,
                maxZoomLevel:10
            },{
                onUnselect: function(f) {},
                onSelect:affich,
                hover:true
            });
    
            var clickCtrlOpts = OpenLayers.Util.extend(viewer.getMap().getPopupDefaults('KML'), {
                onSelect : clicCommune,
                autoActivate : true,
                handlersOptions : {
                    feature : {
                        stopDown : false //allow pan map when drag in feature
                    }
                }
            });
    
            var clickCtrl = new OpenLayers.Control.SelectFeature([cep], clickCtrlOpts);
            viewer.getMap().addControl(clickCtrl);
            viewer.getMap().events.on({
                "changelayer" : Geoportal.Map.onVisibilityChange,
                scope : clickCtrl
            });
        }
    
        //Début Mise à niveau Geoportail version 1.3
        if (window.__Geoportal$timer===undefined) {
            var __Geoportal$timer= null;
        }
    
        function checkApiLoading(retryClbk,clss) {
            if (__Geoportal$timer!=null) {
                  window.clearTimeout(__Geoportal$timer);
                __Geoportal$timer= null;
            }
    
            var f;
            for (var i=0, l= clss.length; i<l; i++) {
                try {
                    f= eval(clss[i]);
                } catch (e) {
                    f= undefined;
                }
                if (typeof(f)==='undefined') {
                    __Geoportal$timer= window.setTimeout(retryClbk, 300);
                    return false;
                }
            }
            return true;
        }
    
        function loadAPI() {
            // on attend que les classes soient chargées
            if (checkApiLoading(loadAPI,['OpenLayers','Geoportal','Geoportal.Viewer','Geoportal.Viewer.Default'])===false) {
                return;
            }
    
            // on charge la configuration de la clef API, puis on charge
            // l'application
            Geoportal.GeoRMHandler.getConfig(['CLEF'], null, null, {
                onContractsComplete: initGeoportalMap
            });
        }
    
        window.onload= loadAPI;
        </script>
    </body>
    </html>
    Et bien, de manière surprenante, ce code fonctionne : la couche est bien active ...

    C'est donc que dans ton code tu "casses" le mécanisme

    Je t'enjoins donc d'ajouter une à une tes surcharges pour voir celle qui casse le mécanisme

  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
    Ton exemple simplifié ne l'est en fait pas ...
    Admettons. Je reprends donc ta page de test

    Sur lequel, je remplace l'alert() au survol par un console.log() plus malléable.
    Ensuite, je rajoute une couche très simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     var commune=      viewer.getMap().addLayer("KML","Haut-Lignon","./kml/POIcepia.kml",
    		{
    visibility: true,
    opacity:1,
    minZoomLevel:10,
    maxZoomLevel:17
    }
    );
    Jusque là pas de problème. Les réponses correspondent bien aux attentes.

    Par contre si je rajoute simplement la couche "commune" dans le "clickCtrl" d'une manière classique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      var clickCtrl = new OpenLayers.Control.SelectFeature([cep,commune], clickCtrlOpts);
    Là, badaboum, les icones ne sont plus cliquables quand on revient dessus au zoom 10 après un clic initial qui est toujours ok.

    Ce comportement ne me parait pas correct. Non?

  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
    Ce comportement ne me parait pas correct. Non?
    A priori, non. Mais, c'est la bonne démarche : isoler, traiter
    J'essayerai de regarder (mais, ne t'attend pas à une réponse directe, je suis en congé ...)

  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
    J'attendrai. J'ai bien d'autres trucs à bidouiller (double-clic...)

  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
    Résolu en développement, peux-tu tester avec depot.ign.fr ?

  9. #9
    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
    Merci pour ta peine...

    A première vue et sauf mauvaise surprise ultérieure, je constate que les icones répondent maintenant correctement.

    Et là encore et toujours la même question, quand mettrez-vous cette correction sur api.ign.fr?

  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 cmail Voir le message
    Et là encore et toujours la même question, quand mettrez-vous cette correction sur api.ign.fr?
    Quant on aura une semaine pleine ...

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

Discussions similaires

  1. Pas d'événement OnClose quand on arrête W2K
    Par Altau dans le forum C++Builder
    Réponses: 9
    Dernier message: 26/01/2009, 18h36
  2. Comment débuter en prog quand on est aveugle
    Par Rataf dans le forum Débuter
    Réponses: 2
    Dernier message: 04/04/2003, 22h13
  3. BCP marche quand il veut !!!!
    Par chris92 dans le forum Outils
    Réponses: 2
    Dernier message: 24/03/2003, 09h41
  4. programmation reseau - couche 2 du modele osi
    Par sahor dans le forum C++Builder
    Réponses: 3
    Dernier message: 06/11/2002, 18h33
  5. Réponses: 2
    Dernier message: 27/05/2002, 19h46

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