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 :

Compatibilité avec Firefox 4.0


Sujet :

IGN API Géoportail

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 23
    Points : 15
    Points
    15
    Par défaut Compatibilité avec Firefox 4.0
    En utilisant la nouvelle version Firefox 4.0 mon application avec l'API géoportail fonctionne de manière aléatoire, alors qu'elle fonctionne bien avec la version précédente de Firefox et avec Internet Explorer 8.


    Mon application est la suivante :
    http://zoom-guadeloupe.fr/Randos/gp-...6.246131,%2009

    La carte, et les points d'intérêt ne s'affichent pas. Le transfert avec les serveurs s'interrompt rapidement.
    De temps en temps cela fonctionne. Dans ce cas si on actualise la page cela ne marche pas de manière systématique.

    Si vous mêmes utilisez la nouvelle version Firefox, avez vous rencontré ce genre de problème et si oui avez vous trouvé une parade ?

  2. #2
    Membre du Club
    Homme Profil pro
    developpeur
    Inscrit en
    Février 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Février 2010
    Messages : 54
    Points : 65
    Points
    65
    Par défaut
    Bonjour,

    Tout à fait d'accord avec vous !! 3 fois sur 4 la fonction initGeoportalMap();
    ne se lance même pas ...

    Le problème semble venir à l'exécution du script présent dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://api.ign.fr/geoportail/api?v=1.2&key=KEY&instance=VISU
    En attendant de corriger le problème, tu peux essayer cette petite parade qui permet de forcer manuellement le lancement d' initGeoportalMap(); si celui-ci n'a pas été lancé au bout de 2 secondes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function firefox4()
    {
    	if (!__Geoportal$ready)
    	{
    		__Geoportal$launch();
    	}	
    }
    window.setTimeout('firefox4();', 2000);
    Bonne journée

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par lhapaipai Voir le message
    En attendant de corriger le problème, tu peux essayer cette petite parade qui permet de forcer manuellement le lancement d' initGeoportalMap(); si celui-ci n'a pas été lancé au bout de 2 secondes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function firefox4()
    {
    	if (!__Geoportal$ready)
    	{
    		__Geoportal$launch();
    	}	
    }
    window.setTimeout('firefox4();', 2000);
    Merci beaucoup, lhapaipai, pour cette parade qui marche très bien au premier appel.

    Par contre si on actualise la page cela ne marche pas dans tous les cas mais c'est quand même beaucoup mieux qu'avant.

  4. #4
    Membre du Club
    Homme Profil pro
    developpeur
    Inscrit en
    Février 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Février 2010
    Messages : 54
    Points : 65
    Points
    65
    Par défaut
    En regardant de plus près la réponse en javascript de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     http://api.ign.fr/geoportail/api?v=1.2&key=KEY&instance=VISU

    Je m'interroge sur la fin du code :
    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
    (function() {
      __Geoportal$onloadCallbacks= window.onload;
      window.onload= __Geoportal$nof;
      /* quand includeEngine est omis ou true : */
      var _sGP= document.createElement('script');
      _sGP.type= 'text/javascript';
      _sGP.src= "http://api.ign.fr/geoportail/api/js" + VERSION + "GeoportalMODE.js';
      _sGP.charset= 'utf-8';
      _sGP.onload= __Geoportal$loadListener; // __Geoportal$init;
      _sGP.onerror= function(){//utile seulement pour FireFox (pour lever une erreur en cas de 404)
        throw ('The script ' + this.src + ' has not been found.');
      };
      if (/msie/.test(__Geoportal$ua) || /webkit/.test(__Geoportal$ua)) {
        _sGP.onload= __Geoportal$init;
        _sGP.onreadystatechange= __Geoportal$onloadcheck;
      }
      var nodes= document.getElementsByTagName('head');
      var head= nodes.length>0? nodes[0]: document.body;
      head.appendChild(_sGP);
      /* sinon */
      __Geoportal$loadListener();
      /* fin quand */
    })();
    Pourquoi la fonction appelée à l'issue du chargement diffère en fonction du navigateur. Ou plutôt pourquoi Firefox lance-t-il __Geoportal$loadListener, et non __Geoportal$init comme les autres ? Je suppose qu'il y a une bonne raison derrière cela mais je n'arrive à voir laquelle. Chez moi, le problème est corrigé en changeant la fonction de la ligne 9.


    La fonction __Geoportal$init ne lance la fonction __Geoportal$launch que si l'objet Geoportal.Viewer.Standard est en mémoire et SI elle est appelée pour la deuxième fois au moins... Or Firefox 4 ne lance (dans mon cas, et dans ton cas je suppose oncidium) __Geoportal$init qu'une seule fois.

    Le problème vient au niveau de cet écouteur d'évenement "DOMContentLoaded" qui n'exécute jamais son code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    
    document.addEventListener("DOMContentLoaded", function () {
                document.removeEventListener("DOMContentLoaded", arguments.callee, false);
                __Geoportal$init();
            }, false);
    Pourrait-on m'éclairer à propos de cette fameuse ligne 9 ??

  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 lhapaipai Voir le message
    Le problème vient au niveau de cet écouteur d'évenement "DOMContentLoaded" qui n'exécute jamais son code
    Je pense que le problème est plutôt là qu'en ligne 9.
    Je regarderai s'il y a un fix pour cela.

    Ma suggestion serait plutôt de faire ceci :

    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
    <html>
    <head>
    ... <!-- code du header avec css -->
    </head>
    <body onload="initGeoportalMap();">
    ...
    <!-- chargement du contrat :-->
    <script type="text/javascript" src="http://api.ign.fr/geoportail/api?v=1.2&key=KEY&includeEngine=false&"></script>
    <!-- chargement de l'API : -->
    <script type="text/javascript" src="http://api.ign.fr/geoportail/api/js/1.2/Geoportal.js"></script>
    <script type="text/javascript">
    var VISU=null;
    ...
    function initGeoportalMap() {
        ...
    }
    ...
    </script>
    </body>
    </html>
    A terme (1,5 an), l'appel qui pose problème (et qui est à chaque nouvelle version d'un butineur à modifier), sera probablement ignoré de l'API...

  6. #6
    Membre du Club
    Homme Profil pro
    developpeur
    Inscrit en
    Février 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Février 2010
    Messages : 54
    Points : 65
    Points
    65
    Par défaut
    Vous avez raison,

    Inutile de se casser la tête sur ces appels qui changent avec chaque nouveau navigateur...

    Bonne soirée

  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 lhapaipai Voir le message
    Inutile de se casser la tête sur ces appels qui changent avec chaque nouveau navigateur...
    C'est de l'humour ou ...

    La question de fond est :

    Est-ce que ma suggestion fonctionne (en dehors des tests que j'ai effectué) ?

  8. #8
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par dgrichard Voir le message
    La question de fond est :
    Bonjour,
    Module de test :
    http://zoom-guadeloupe.fr/Randos/gp-...16.246131,%209

    Avec ta suggestion, dgrichard, cela fonctionne bien maintenant.

    Cependant j'ai modifié la ligne de chargement de contrat en y ajoutant
    &instance=VISU. Sans ce rajout j'avais un message d'erreur "geoportalLoadVISU is not defined".
    <!-- chargement du contrat :-->
    <script type="text/javascript" src="http://api.ign.fr/geoportail/api?v=1.2&key=5785947631536528042&instance=VISU&includeEngine=false&"></script>

    Je vais donc généraliser cette modification dans mon application, ce qui me permet en même temps de changer de version de 1.0 à 1.2. Merci

  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 oncidium Voir le message
    Cependant j'ai modifié la ligne de chargement de contrat en y ajoutant
    &instance=VISU. Sans ce rajout j'avais un message d'erreur "geoportalLoadVISU is not defined".
    Oui, pardon, je suis allé trop vite en besogne
    Dans mon exemple, il ne faut pas utiliser geoportalLoadVISU(), mais construire à la main la visualisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    VISU= new Geoportal.Viewer.Defaut(
        "GeoportalVisuDiv",
        OpenLayers.Util.extent(
            {mode:"normal", territory:"GLP"},
            gGEOPORTALRIGHTSMANAGEMENT));
    Sinon, merci pour le test

  10. #10
    Membre du Club
    Homme Profil pro
    developpeur
    Inscrit en
    Février 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Février 2010
    Messages : 54
    Points : 65
    Points
    65
    Par défaut
    Merci ça fonctionne super bien !!

  11. #11
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    De mon coté je n'arrive pas à mettre en oeuvre cette nouvelle proposition.
    Je me pose des questions sur l'écriture exacte, par exemple :
    - ne serait-ce pas "extend" au lieu de extent ?
    - est-ce bien "gGEOPORTALRIGHTSMANAGEMENT" ?

    J'ai fait différents essais, sans succès.

    Comment s'intègre la modif dans mon code existant ?

    J'ai juste remplacé la ligne "geoportalLoadVISU("GeoportalVisuDiv", "normal", "GLP");" par ta proposition.

  12. #12
    Membre du Club
    Homme Profil pro
    developpeur
    Inscrit en
    Février 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Février 2010
    Messages : 54
    Points : 65
    Points
    65
    Par défaut
    En fait tu peux t'appuyer de l'exemple de code du modèle développeur :
    http://api.ign.fr/geoportail/api/doc...sed_local.txt&

    Est-ce que ce code marche chez toi ?

    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" debug="true">
    <head>
        <title>uncompressed_local.html</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <link rel="shortcut icon" type="image/x-icon" href="img/favicon.ico" />
        <script type="text/javascript" src="http://api.ign.fr/geoportail/api?v=1.2&key=TA_CLE&includeEngine=false&"></script>
        <script type="text/javascript" src="http://api.ign.fr/geoportail/api/js/1.2/Geoportal.js"></script>
    
        <link id="__OpenLayersCss__" rel="stylesheet" type="text/css" href="http://api.ign.fr/geoportail/api/js/1.2/theme/geoportal/style.css"/>
        <link id="__GeoportalCss__" rel="stylesheet" type="text/css" href="http://api.ign.fr/geoportail/api/js/1.2/theme/default/style.css"/>
        <style type="text/css">
        div#footer {
            font-size:x-small;
            text-align:center;
            width:800px;
        }
        div#footer a, div#footer a:link, div#footer a:visited, div#footer a:hover {
            text-decoration:none;
            color:black;
        }
        </style>
    </head>
    <body onload="initGeoportalMap();">                                       
        <div id="GeoportalVisuDiv" style="width:800px;height:600px;"></div>
        <script type="text/javascript">
        var VISU= null;
    	
        if (window.__Geoportal$timer===undefined) {
            var __Geoportal$timer= null;
        }
    
        // onload event will call myOnLoad :
        function initGeoportalMap() {
            if (__Geoportal$timer!=null) {
                window.clearTimeout(__Geoportal$timer);
                __Geoportal$timer= null;
            }
            if (typeof(OpenLayers)=='undefined'              ||
                typeof(Geoportal)=='undefined'               ||
                typeof(Geoportal.Viewer)=='undefined'        ||
                typeof(Geoportal.Viewer.Default)=='undefined') {
                __Geoportal$timer= window.setTimeout('myOnLoad();', 300);
                return;
            }
            // build a new VISU :
            VISU= new Geoportal.Viewer.Default(           // Default VISU (one could use Geoportal.VISU.Standard)
                    "GeoportalVisuDiv",                            // div id where to display dataset
                    OpenLayers.Util.extend({                // VISU parameters :
                        mode:'normal',
                        territory:'GLP',
                        projection:'IGNF:GEOPORTALANT',
                        displayProjection:'IGNF:RGF93G',
                        proxy:'proxy.php?url=',
                        nameInstance:'VISU'},
                        gGEOPORTALRIGHTSMANAGEMENT          // API configuration with regard to the API key
                    )
            );
            if (!VISU) {
                alert('failed loading VISU');
                return;
            }
    		VISU.addGeoportalLayer('ORTHOIMAGERY.ORTHOPHOTOS:WMSC', {name:'Photo aérienne', visibility:false, opacity: 1});
    		VISU.addGeoportalLayer('GEOGRAPHICALGRIDSYSTEMS.MAPS:WMSC', {visibility:true, opacity:1});              
    		
    		VISU.getMap().addLayer("KML", "Points-Cliquables", "Points-Cliquables.kml", {
    			minZoomLevel:0,
    			maxZoomLevel:20,
    			originators:[{pictureUrl:'logo.png', url:'http://zoom-guadeloupe.fr/'}],
    			visibility:true});
    		
    		VISU.setLayersPanelVisibility(true);
    		VISU.openLayersPanel(true);
    		VISU.setToolsPanelVisibility(true);
    		VISU.openToolsPanel(true);
    		VISU.getMap().setCenterAtLonLat(  -61.505275, 16.246131, 9 );
        }
    
        
        
    
    
        
        </script>
    </body>
    </html>

  13. #13
    Membre du Club
    Homme Profil pro
    developpeur
    Inscrit en
    Février 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Février 2010
    Messages : 54
    Points : 65
    Points
    65
    Par défaut
    ah oui dans l'exemple tu auras besoin de télécharger le fichier proxy.php (ou un autre) et le placer dans le même répertoire que ton code.
    https://api.ign.fr/geoportail/api/do.../download.html

  14. #14
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par lhapaipai Voir le message

    Est-ce que ce code marche chez toi ?
    Oui, merci il fonctionne, voir sur ce lien
    http://zoom-guadeloupe.fr/Randos/Essai.html

    Maintenant, il me reste à l'intégrer à mon environnement.
    Merci beaucoup pour ton aide.

  15. #15
    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 oncidium Voir le message
    - ne serait-ce pas "extend" au lieu de extent ?
    Oui

    Citation Envoyé par oncidium Voir le message
    - est-ce bien "gGEOPORTALRIGHTSMANAGEMENT" ?
    Oui

    Citation Envoyé par oncidium Voir le message
    J'ai fait différents essais, sans succès.

    Comment s'intègre la modif dans mon code existant ?

    J'ai juste remplacé la ligne "geoportalLoadVISU("GeoportalVisuDiv", "normal", "GLP");" par ta proposition.
    Il faut aussi dans ce cas, retirer instance :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <script type="text/javascript" src="http://api.ign.fr/geoportail/api?v=1.2&amp;key=TA_CLE&amp;includeEngine=false&amp;><!-- --></script>
    Je conseille aussi de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    includeEngine=false&amp;
    et d'inclure une version de l'API qui va bien (surtout en production) pour ne pas dépendre de la version en ligne ...

Discussions similaires

  1. compatibilité avec firefox
    Par hokidoki dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/08/2007, 11h27
  2. Compatibilité avec firefox
    Par xav20 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/08/2007, 22h23
  3. problème de compatibilité avec Firefox
    Par aztec dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/08/2006, 14h42
  4. Problème de compatibilité avec firefox
    Par djnext dans le forum Mon site
    Réponses: 4
    Dernier message: 15/08/2006, 23h39
  5. [CKEditor] Problème de compatibilité avec FireFox
    Par FzF dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 28/06/2006, 16h07

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