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 :

Repositionnement incongru à l'affichage d'une popup (KML)


Sujet :

IGN API Géoportail

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Repositionnement incongru à l'affichage d'une popup (KML)
    Bonjour,

    J'affiche une couche KML contenant des points et une linestring.
    Lorsque l'un de ces objets est cliqué, la popup associée s'affiche bien, mais la carte est re-centrée sur un point qui semble dépendre de la position de l'objet cliqué.
    Comment inhiber ce comportement, afin que la carte ne soit pas recentrée lors de la sélection d'un objet ?

  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
    Citation Envoyé par f.dellaCosta Voir le message
    Bonjour,

    J'affiche une couche KML contenant des points et une linestring.
    Lorsque l'un de ces objets est cliqué, la popup associée s'affiche bien, mais la carte est re-centrée sur un point qui semble dépendre de la position de l'objet cliqué.
    Comment inhiber ce comportement, afin que la carte ne soit pas recentrée lors de la sélection d'un objet ?
    Ce comportement est le comportement par défaut dans la 1.0bêta4 (centrage de la popup dans la fenêtre de visualisation).

    Dans la 1.0bêta5, il est possible d'ajouter l'option panMapIfOutOfView à false à la création du layer.

    En bêta4, il faut donc "à la main", ajouter cette option.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Merci.
    Une piste pour l'ajout "à la main" de cette option ?

  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
    Créer la couche à la main (comme dans OpenLayers) en mettant bien l'option panMapifOutOfView :

    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
    var kml= new OpenLayers.Layer.GML(
      "kml",
      URL,
      {
        isBaseLayer:false,
        visibility: false,//ou true ;)
        projection: VISU.getMap().getProjection(),
        panMapIfOutOfView:false,
        format: OpenLayers.Format.KML,
        formatOptions:{
            internalProjection: VISU.getMap().getProjection(),
            externalProjection: OpenLayers.Projection.CRS84.clone(),
            extractStyles: true // ou false
        },
        preFeatureInsert:function(f){...},//éventuellement
        onFeatureInsert:Geoportal.Popup.Anchored.createPopUpForKMLFeature,//par exemple
    
      });
    et d'ajouter le layer à la carte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    VISU.getMap().addLayer(kml);
    et d'ajouter le contrôle de sélection :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var select= new OpenLayers.Control.SelectFeature(
      kml,
      {
        onSelect:Geoportal.Control.selectFeature,//par exemple
        onUnselect:Geoportal.Control.unselectFeature//par exemple
      });
      VISU.getMap().addControl(select);

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Merci.
    Malheureusement, la couche KML ne s'affiche pas.
    ??

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Autant pour moi, l'affichage est impeccable.
    Par contre, le clic ne fait rien.

  7. #7
    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 f.dellaCosta Voir le message
    Autant pour moi, l'affichage est impeccable.
    Par contre, le clic ne fait rien.
    Comme d'hab, sans page à voir, pas d'avis ...

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Points : 3
    Points
    3

  9. #9
    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 f.dellaCosta Voir le message
    J'ai oublié un détail :


  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Merci.
    Le clic affiche bien la popup, mais le repositionnement de la carte a toujours lieu.

  11. #11
    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 f.dellaCosta Voir le message
    Merci.
    Le clic affiche bien la popup, mais le repositionnement de la carte a toujours lieu.
    Normal, avec la bêta5 le constructeur de Geoportal.Popup.Anchored a été amendé.

    En ajoutant ceci dans au début de initGeoportalMap(), cela devrait être mieux :

    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
    Geoportal.Popup.Anchored.prototype.initialize=function(id, lonlat, size, contentHTML, anchor, closeBox, backgroundColor, opacity, closeBoxCallback, feature) {
            var newArguments = [id, lonlat, size, contentHTML, closeBox, closeBoxCallback, feature];
            Geoportal.Popup.prototype.initialize.apply(this, newArguments);
            this.anchor = (anchor != null ? anchor :
                                            { size: new OpenLayers.Size(0,0),
                                              offset: new OpenLayers.Pixel(0,0)});
    
            this.border = this.BORDER;
            this.setBorder(this.border+"px solid #000000");
            this.backgroundColor = backgroundColor || this.backgroundColor;
            this.opacity = opacity || this.opacity;
            this.panMapIfOutOfView= feature &&
                                    feature.layer &&
                                    feature.layer.options &&
                                    feature.layer.options.panMapIfOutOfView || false;
        };
    L'utilisation directe de la 1.0bêta5 aurait finalement été plus rapide !

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Merci.
    J'ai toujours un déplacement.
    La page est là :
    http://fra.moulin.free.fr/rando/test...nc_layer3.html

  13. #13
    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 C'est toujours un appel de la beta4
    Avec la sortie imminente de la 1.0, il faut mieux migrer!

  14. #14
    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 mga_geo Voir le message
    Avec la sortie imminente de la 1.0, il faut mieux migrer!
    Tu l'as bien écrit

    Apparemment un autre bug lié à panMapIfOutOfView a été corrigé dans la 1.0 (code à rajouter dans ton monMezenc_layer3.html) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Geoportal.Popup.Anchored.show= function() {
            this.updatePosition();
            Geoportal.Popup.prototype.show.apply(this, arguments);
            if (this.panMapIfOutOfView) {
                this.panIntoView();
            }
        };

Discussions similaires

  1. Réponses: 11
    Dernier message: 12/03/2010, 10h50
  2. Rechargement de la page après l'affichage d'une popup
    Par hokidoki dans le forum ASP.NET
    Réponses: 4
    Dernier message: 23/02/2010, 15h12
  3. Affichage d'une popup
    Par khaled.mann dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 16/04/2009, 14h39
  4. affichage dans une popup
    Par aigle dans le forum ASP.NET
    Réponses: 3
    Dernier message: 16/02/2009, 11h06
  5. [HTML:ERROR] affichage dans une popup dédiée
    Par jdvacheron dans le forum Struts 1
    Réponses: 4
    Dernier message: 12/02/2008, 12h17

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