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 :

Gestion affichage couche (bêta 1.05)


Sujet :

IGN API Géoportail

  1. #1
    Membre habitué
    Inscrit en
    Juin 2006
    Messages
    379
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 379
    Points : 194
    Points
    194
    Par défaut Gestion affichage couche (bêta 1.05)
    Dans la version bêta 1.04, j'ai introduit un fonctionnement particulier sur ma carto, à savoir l'activation automatique de l'affichage du cadastre au changement de zoom si celui-ci atteint le niveau 18 (a priori, là où il n'y a plus rien d'autre à afficher...C'était pour éviter d'avoir à cocher systématiquement pour voir la couche vu qu'à ce niveau, il n'y a rien d'autre de disponible...d'où la volonté de voir le cadastre dans ce cas)...J'intercepte donc l'événement de changement de niveau de zoom pour ce faire :

    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
    ...
       var mapBounds = new OpenLayers.Bounds();
        mapBounds = map.getMap().getExtent();
        if (mapBounds != null)
        {
            mapBounds.transform(map.getMap().getProjection(), map.getMap().displayProjection);
            CoordonneesGaucheCarte = mapBounds.left.toFixed(6);
            CoordonneesDroiteCarte = mapBounds.right.toFixed(6);
            CoordonneesHautCarte   = mapBounds.top.toFixed(6);
            CoordonneesBasCarte    = mapBounds.bottom.toFixed(6);
            NiveauZoomCourant      = map.getMap().getZoom();
            if (IsCadastreAutomatique)
            {
                var CoucheCadastre = null;
                CoucheCadastre = map.getMap().getLayersByName('CADASTRALPARCELS.PARCELS');
                if (CoucheCadastre != null)
                {
            	    if ((typeof CoucheCadastre !== "undefined") &&  (typeof CoucheCadastre[0] !== "undefined")) 
    	            {
                        if (NiveauZoomCourant >= NiveauCadastre) 
                        {
                            // On affiche la couche cadastre
                            CoucheCadastre[0].setVisibility(true);  //Affichage des données de la couche à l'écran
                        }
                    }
                }
            }
    ...
    Or, désormais avec la version 1.05bêta...je n'arrive jamais à ce niveau de zoom...on ne va plus au delà de 17 (sauf avoir préalablement coché la visu de la couche cadastre justement...mais c'est fastidieux)...est-ce normal ?...Dois-je changer ma façon de procéder ?

  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 as raison : c'était un boggue de la version 1.0bêta4 qui affectait de facto la plage de zooms maximale complète à la visualisation. Cela provoquait des cartes vides pour les utilisateurs n'ayant pas de couches cadastres ...

    Le principe a donc "légèrement" changé : seules les couches actives provoquent un recalcul des échelles minimale et (dans ton cas) maximale de la carte... Il faudrait donc "activer" automatiquement les couches ...
    Le plus simple serait de jouer avec les min/max de la couche parcellaire a priori comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    addGeoportalLayer(
        'CADASTRALPARCELS.PARCELS:WMSC',
        {
            'CADASTRALPARCELS.PARCELS':{
                minZoomLevel:17,
                maxZoomLevel:18
            }
        });
    Et d'écouter l'évènement 'zoomend' en activant la parcellaire si zoom vaut 18 et de la désactiver sinon.

  3. #3
    Membre habitué
    Inscrit en
    Juin 2006
    Messages
    379
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 379
    Points : 194
    Points
    194
    Par défaut
    Ok...Merci !...mais pas terrible si on ne veut pas l'avoir d'afficher au niveau 17

  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 Callbacks beforeOnBeforeMove et afterOnBeforeMove
    Dans la prochaine version de la 1.0bêta5, j'ai rajouté deux fonctions sur Geoportal.Map qui sont appelées lors d'un moveTo() :

    1. beforeOnBeforeMove({Event});
    2. afterOnBeforeMove({Event});

    Elles ne font rien par défaut.
    L'évènement transporte les informations suivantes :

    • map - {<OpenLayers.Map>} la carte courante;
    • ll - {<OpenLayers.LonLat>} le nouveau centre de la carte. Peut être modifié.
    • z - {Number} le nouveau zoom cherché. Peut être modifié.
    • zChanged - {Boolean} indicateur de modifcation du zoom. Peut être modifié.
    • cChanged - {Boolean} indicateur de changement de centre. Peut être modifié.
    • dragging - {Boolean} indicateur de déplacement.
    • noEvent - {Boolean} indicateur de levée d'évènements.

    La méthode onBeforeMove() est systématiquement appelée dans l'API (une proposition a été effectuée vers OpenLayers - Cf. tickets 2359 et 2360).

  5. #5
    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 Unusual Voir le message
    Ok...Merci !...mais pas terrible si on ne veut pas l'avoir d'afficher au niveau 17
    Et en mettant le minZoomLevel à 18 ?)

  6. #6
    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épondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. gestion affichage de couches
    Par lalie73 dans le forum IGN API Géoportail
    Réponses: 13
    Dernier message: 12/06/2012, 15h33
  2. gestion affichage dans la vue (MFC - C++)
    Par kam42 dans le forum MFC
    Réponses: 5
    Dernier message: 04/12/2007, 17h13
  3. gestion affichage mdi
    Par totoche dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 15/11/2007, 11h59
  4. Réponses: 2
    Dernier message: 30/08/2007, 16h49
  5. gestion des couches présentation et session
    Par youp_db dans le forum Développement
    Réponses: 1
    Dernier message: 19/04/2007, 17h10

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