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 :

API et GPX : Zoom sur Trace


Sujet :

IGN API Géoportail

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 7
    Par défaut API et GPX : Zoom sur Trace
    Bonjour à tous,

    En zyeutant tous les messages concernant ce sujet, je suis tombé sur du code source qui m'a beaucoup aidé pour démarrer la chose.

    Je suis maintenant confronté à un problème pour lequel je commence à être "un peu sec".

    Symptômes : le premier chargement de la page montre l'ensemble du monde (zoom: 0). On distingue malgré tout la présence du GPX...
    Un rafraîchissement de ladite page (Touche F5, par ex.) recentre la vue sur la trace GPX incluse.
    Chaque nouvel accès montre la vue de façon correcte.
    Cela repasse à une vue mondiale dès que l'on vide la cache du navigateur.

    Ci-joint, le code utilisé.
    --------
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//FR"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="Author" content="Patrick AGRAIN">
    <meta name="keywords" content="VTT alsace">
    <title>Le Circuit avec Geoportail</title>

    <script type="text/javascript"
    src="http://api.ign.fr/geoportail/api?v=1.0-e&amp;key=9072066421036500892&amp;instance=MapIGN&amp;">
    <!-- -->
    </script>
    <script type="text/javascript"
    src="http://api.ign.fr/geoportail/api/js/1.0/Geoportal.js">
    <!-- -->
    </script>

    <script type="text/javascript">
    function initGeoportalMap() {
    // creation de la carte
    geoportalLoadMapIGN("plancheCarto", "normal", "FXX");

    // ajout des couches auxquelles la licence donne accès après le chargement du gpx : évite de charger la france pour rien..
    // MapIGN.addGeoportalLayers();
    // OU ajout des couches une à une:
    // MapIGN.addGeoportalLayer('ORTHOIMAGERY.ORTHOPHOTOS:WMSC',{opacity:1, visibility:false});
    MapIGN.addGeoportalLayer('GEOGRAPHICALGRIDSYSTEMS.MAPS:WMSC',{opacity:1, visibility:true});

    // ajout d'une couche vide pour éviter le bug du blocage du zoom maxi si carte seul
    // MapIGN.getMap().addLayers([new OpenLayers.Layer.Vector('')]);

    MapIGN.setInformationPanelVisibility(false);
    MapIGN.openLayersPanel(false);
    MapIGN.openToolsPanel(false);

    olmap = MapIGN.getMap();

    // tracage de la couche en important le gpx
    nom_couche = "Gpx";
    url = "./gpx/geoportail.gpx";
    if (url != "0") {
    gpxlayer = olmap.addLayer(
    "GPX",
    nom_couche,
    url,
    {
    // styleMap: styleMap
    style: {strokeColor: "#666699", strokeWidth: 5 }
    }
    );

    // transparence du la couche contenant la trace
    gpxlayer.setOpacity(0.8);

    // zoom sur la trace issue du gpx
    gpxlayer.events.register('loadend', gpxlayer, function()
    {
    this.map.zoomToExtent(this.getDataExtent());
    } );

    gpxlayer.visibility = true;
    }

    }
    </script>


    </head>
    <body>
    <div id='plancheCarto' style="width:100%;height:500px;"></div>
    </body>
    </html>
    --------

    Y aurait-il quelque chose de "choquant" là-dedans ?
    D'avance merci pour l'aide que vous pourriez m'apporter.

    Cordialement,
    Patrick

  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
    Par défaut
    Citation Envoyé par patrick.agrain Voir le message
    Symptômes : le premier chargement de la page montre l'ensemble du monde (zoom: 0). On distingue malgré tout la présence du GPX...
    1. La gestion de l'évènement "loadend" n'est donc pas effectuée ...

    Citation Envoyé par patrick.agrain Voir le message
    Un rafraîchissement de ladite page (Touche F5, par ex.) recentre la vue sur la trace GPX incluse.
    2. L'API ayant été préalablement chargée, l'évènement "loadend" est intercepté ...

    Citation Envoyé par patrick.agrain Voir le message
    Chaque nouvel accès montre la vue de façon correcte.
    Cela repasse à une vue mondiale dès que l'on vide la cache du navigateur.
    Cf. 1 et 2 ci-dessus ...

    Citation Envoyé par patrick.agrain Voir le message
    Ci-joint, le code utilisé.
    --------
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//FR"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="Author" content="Patrick AGRAIN">
    <meta name="keywords" content="VTT alsace">
    <title>Le Circuit avec Geoportail</title>

    <script type="text/javascript"
    src="http://api.ign.fr/geoportail/api?v=1.0-e&amp;key=9072066421036500892&amp;instance=MapIGN&amp;">
    <!-- -->
    </script>
    <script type="text/javascript"
    src="http://api.ign.fr/geoportail/api/js/1.0/Geoportal.js">
    <!-- -->
    </script>

    <script type="text/javascript">
    function initGeoportalMap() {
    // creation de la carte
    geoportalLoadMapIGN("plancheCarto", "normal", "FXX");

    // ajout des couches auxquelles la licence donne accès après le chargement du gpx : évite de charger la france pour rien..
    // MapIGN.addGeoportalLayers();
    // OU ajout des couches une à une:
    // MapIGN.addGeoportalLayer('ORTHOIMAGERY.ORTHOPHOTOS:WMSC',{opacity:1, visibility:false});
    MapIGN.addGeoportalLayer('GEOGRAPHICALGRIDSYSTEMS.MAPS:WMSC',{opacity:1, visibility:true});

    // ajout d'une couche vide pour éviter le bug du blocage du zoom maxi si carte seul
    // MapIGN.getMap().addLayers([new OpenLayers.Layer.Vector('')]);

    MapIGN.setInformationPanelVisibility(false);
    MapIGN.openLayersPanel(false);
    MapIGN.openToolsPanel(false);

    olmap = MapIGN.getMap();

    // tracage de la couche en important le gpx
    nom_couche = "Gpx";
    url = "./gpx/geoportail.gpx";
    if (url != "0") {
    gpxlayer = olmap.addLayer(
    "GPX",
    nom_couche,
    url,
    {
    visibility: true,
    opacity:0.8,

    // styleMap: styleMap
    style: {strokeColor: "#666699", strokeWidth: 5 }
    }
    );

    // transparence du la couche contenant la trace
    //gpxlayer.setOpacity(0.8);

    // zoom sur la trace issue du gpx
    //gpxlayer.events.register('loadend', gpxlayer, function()
    // {
    // this.map.zoomToExtent(this.getDataExtent());
    // } );
    //
    //gpxlayer.visibility = true;
    }

    }
    </script>


    </head>
    <body>
    <div id='plancheCarto' style="width:100%;height:500px;"></div>
    </body>
    </html>
    --------
    J'ai modifié légèrement le code - pourrais-tu tester ?

    L'idée est que la couche est rendu visible au chargement et que l'API gère l'évènement "loadend" par défaut en zoomant sur l'emprise.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 7
    Par défaut
    Bonjour,

    Tout d'abord, merci d'avoir jeté un coup d'oeil.

    J'ai effectué la modification. Mais à présent :
    - Pas de zoom sur le GPX.
    - Vision du monde (zoom:0) systématique, même après rafraîchissement de la page.

    Cordialement,
    Patrick

    PS : l'essai s'est effectué sous FF 3.6.8.

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 133
    Par défaut
    Dans le code modifié par Didier, j'ai l'impression que le code javascript de l'API est chargé 2 fois: absence de includeEngine=false sur la ligne
    <script type="text/javascript" src="http://api.ign.fr/geoportail/api?v=1.0-e&amp;key=9072066421036500892&amp;instance=MapIGN&amp">
    J'ai une page qui se centre bien sur un gpx: http://atlasnw.free.fr/geoportail/ex...px_centre.html

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 7
    Par défaut
    Bonjour,

    @mga_geo:
    Merci pour votre réponse.
    Effectivement votre page se charge correctement dès la première fois.
    J'étudie le code source et vais essayer de le reporter sur mon fichier.

    'includeEngine=false' ne modifie pas le comportement.

    @tous:
    Otez-moi d'un doute.
    Puisque les données finissent par arriver (au deuxième coup), il n'y a pas d'histoire de proxy mal ou non défini ?

    A+
    Patrick

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 7
    Par défaut
    Bonjour,

    Après moult essais, voici quelques observations qui, j'espère, feront avancer le schmilblick...

    Tout d'abord, l'environnement :
    - J'utilise le CMS Joomla 1.5.20.
    - Je suis en local (http://localhost)
    - La carte apparaît dans l'un des onglets d'un article.

    Les observations :
    - Lorsque l'onglet Geoportail est sélectionné par défaut, c'est OK, avec ou sans vidange de cache.
    - Lorsqu'un autre onglet est sélectionné, et que l'on passe pour la première fois (ex. après vidange du cache) sur l'onglet Geoportail, alors le zoom est à 0 (vision du monde). Ce n'est qu'en faisant F5 (rafraîchissement de la page) que tout rentre dans l'ordre. Les passages suivants d'un onglet à l'autre ne change plus le rendu, c'est toujours OK.

    Voilà, si cela peut en éclairer certains...
    A+
    Patrick

  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
    Par défaut
    Citation Envoyé par patrick.agrain Voir le message
    Bonjour,

    Tout d'abord, merci d'avoir jeté un coup d'oeil.

    J'ai effectué la modification. Mais à présent :
    - Pas de zoom sur le GPX.
    - Vision du monde (zoom:0) systématique, même après rafraîchissement de la page.

    Cordialement,
    Patrick

    PS : l'essai s'est effectué sous FF 3.6.8.
    C'est ma faute, j'ai oublié de copier une partie du code (que je refais de tête) :

    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
    gpxlayer = olmap.addLayer(
                   "GPX",
                   nom_couche,
                   url,
                   {
    visibility: true,
    opacity:0.8,
                     // styleMap: styleMap
                     style: {strokeColor: "#666699", strokeWidth: 5 },
    eventListeners:{
    "loadend":function(){
    if (this.maxExtent) {
    this.map.zoomToExtent(this.maxExtent);
     this.setVisibility(true);
    }
    }
    }
                );

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 7
    Par défaut
    Bonjour,

    Merci dgrichard pour cette correction. Désolé pour le délai, j'avais un peu décroché...

    Malheureusement, les effets sont toujours les mêmes.

    Je pense de plus en plus que ce symptôme provient du plugin "Tabs & Slides (in content items)" pour Joomla. Voir message du 03/08 de ce fil de discussion.

    En fait, je suis persuadé que les codes fournis par vous tous fonctionnent très bien (je vous en remercie d'ailleurs), mais aucun exemple fourni n'utilise un contenu encapsulé dans un onglet pour affichage.

    Un workaround serait de faire en sorte que ce soit systématiquement l'onglet Géoportail qui soit activé par défaut. Pour l'instant, ce n'est pas le cas, l'onglet actif est le dernier consulté.

    Je vais creuser côté plugin Joomla, soit pour corriger, soit pour en changer.

    Dans tous les cas, encore merci pour le temps passé.

    Cordialement,
    Patrick

Discussions similaires

  1. v1.0 : problème de zoom sur trace GPX
    Par jeanluc35 dans le forum IGN API Géoportail
    Réponses: 4
    Dernier message: 28/03/2010, 16h19
  2. [DirectX9] Plein écran et zoom sur texture
    Par SteelBox dans le forum DirectX
    Réponses: 10
    Dernier message: 21/03/2005, 23h26
  3. Zoom sur une image
    Par AurelBUD dans le forum C++Builder
    Réponses: 5
    Dernier message: 07/05/2004, 17h05
  4. zoom sur image de formulaire
    Par bourvil dans le forum VBA Access
    Réponses: 2
    Dernier message: 01/10/2003, 09h25
  5. Zoom sur des vecteurs ou lignes
    Par mat.M dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 25/11/2002, 10h40

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