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 :

Pb de migration de code


Sujet :

IGN API Géoportail

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    379
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 379
    Par défaut Pb de migration de code
    Bonjour,

    Après quelques mois d'abandon de la carto IGN, je reviens afin de mettre à jour notre site avec la dernière version (GeoportalExtended.js).

    Le but est d'afficher des fichiers KML aussi ai-je récupérer le fichier Javascript de l'api et je l'utilise en local (au passage, y a-t-il besoin de plus ?).

    J'ai suivi toutes les étapes préconisées pour la migration mais j'obtiens dans firebug l'erreur suivante : "TypeError: Geoportal.Catalogue.TERRITORIES[territory] is undefined"

    J'y ai aussi vérifié que Geoportal.Catalogue.TERRITORIES['FXX'] était bien connu dans la console Firebug.

    Est-ce un problème de latence ?

    Voici une portion du code utilisé :

    Dans un premier temps, j'ai bien l'init

    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
    function loadAPI() 
        {
            if (IsCartoIGN==true)
    	    {
    	        // on attend que les classes soient chargées
    	        if (checkApiLoading('loadAPI();', ["OpenLayers", "Geoportal", "Geoportal.Viewer", "Geoportal.Viewer.Default", "Geoportal.Viewer.Standard", "Geoportal.Catalogue"]) === false)
                {
                    return;
                }
    
                // on charge la configuration de la clef API, puis on charge l'application
                Geoportal.GeoRMHandler.getConfig([CleIGN], null, null, {
                    onContractsComplete: initGeoportalMap
                });
            }
        }
        
        window.onload= loadAPI;
    puis une fois la page chargée...avec SystemeReferenceCoordonneesIGN = 'FXX' pour le cas de mon KML courant

    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
    function geoportalLoadmap(idDivMap, mode, territoire, crs, dispcrs, proxy) 
    {
            var options= {};
            if(mode) {options.mode= mode;}
            if (territoire) { options.territory = territoire; }
            if(crs) {options.projection= crs;}
            if(dispcrs) {options.displayProjection= dispcrs;}
            if(proxy) {options.proxy= proxy;}
            options.nameInstance = 'map';
            
            map = new Geoportal.Viewer.Default(idDivMap,  OpenLayers.Util.extend(options,
                                                            window.gGEOPORTALRIGHTSMANAGEMENT===undefined? {'apiKey':CleIGN} : gGEOPORTALRIGHTSMANAGEMENT)
            );
    
            return map;
    }
    
    function initGeoportalMap() 
    {
        ObjetDIV = window.document.getElementById('GeoportalMapDiv');    
        if ((ObjetDIV) && (IsAffichageAFaire == true))
        {
            if (map == null) 
            {
                if (typeof(geoportalLoadmap) == 'function')
                    {
                        geoportalLoadmap("GeoportalMapDiv", "normal", SystemeReferenceCoordonneesIGN);
                    }
    ... // Chargement des couches ad hoc
            }
    ...
        }
       ....
    C'est semble-t-il le "territory" qui semble ne pas être connu...comme c'est la version compressée javascript, difficile d'aller plus loin dans l'exploration du code afin de trouver le blême...

    Merci d'avance pour tout éclaircissement.

  2. #2
    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
    Une url svp !

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    379
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 379
    Par défaut
    Citation Envoyé par mga_geo Voir le message
    Une url svp !
    Je n'ai pas d'url à fournir, vu que pour l'instant c'est une clef pour le dév qui n'est valable qu'en localhost.

    Tous nos sites marchaient bien avant le changement d'API (après, on a suspendu tout développement et désactivé la carto IGN tant que les tractations commerciales n'étaient pas terminées avec l'IGN, et là, on doit juste réactiver la carto...après migration. Sur le papier, je n'ai pas l'impression d'avoir loupé une étape (appel, référence,...), mais là, je me sens pieds et poings liés du fait que cela se passe dans GeoportalExtended.js. Y a-t-il une initialisation préalable à faire pour les types de projection/territoire, d'autres variables à renseigner par rapport à avant (cf mon code cité) ?

    Vu que ma recherche de base sur ces critères d'erreur (google, ce forum) n'a rien donné, je comptais surtout sur le retour d'expérience pour émettre une hypothèse, une voie de recherche, une solution (soyons fou ! )...sinon il faudrait le GeoportalExtended.js en version décompressé pour voir dans quelle condition cela plante (variable non initialisée, tableau non encore rempli au moment de l'appel), mais est-il disponible sur une URL IGN ?

    J'avais bien vu une erreur similaire soulevée il y a quelques mois (pour le message d'erreur en tout cas), mais je n'ai pas compris la réponse de DGRichard...

    http://www.developpez.net/forums/d12...t=TypeError%3A

    La pertinence se situe là :

    Citation Envoyé par gilgil Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OpenLayers.Protocol.Script.registry.regId1({"http":{"status":200,"error":null},"xml":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><ViewContext xmlns=\"http://www.opengis.net/context\" xmlns:gpp=\"http://api.ign.fr/geoportail\" xmlns:ows=\"http://www.opengis.net/ows/1.1\" xmlns:sld=\"http://www.opengis.net/sld\" xmlns:wmts=\"http://www.opengis.net/wmts/1.0\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" id=\"autoConf\" version=\"1.1.0\" xsi:schemaLocation=\"http://www.opengis.net/context http://gpp3-wxs.ign.fr/schemas/extContext.xsd http://api.ign.fr/geoportail http://gpp3-wxs.ign.fr/schemas/autoconf.xsd\"><General><Window height=\"300\" width=\"500\"/><BoundingBox SRS=\"EPSG:4326\" maxx=\"180.0\" maxy=\"90.0\" minx=\"-90.0\" miny=\"-180.0\"/><Title>Service d'autoconfiguration des API</Title><Extension><gpp:General><gpp:Theme>default</gpp:Theme><gpp:Territories><gpp:Territory default=\"1\" id=\"FXX\" name=\"FXX\"> <gpp:defaultCRS>EPSG:3857</gpp:defaultCRS> <gpp:AdditionalCRS>CRS:84</gpp:AdditionalCRS> <gpp:AdditionalCRS>IGNF:RGF93G</gpp:AdditionalCRS> <gpp:AdditionalCRS>EPSG:4171</gpp:AdditionalCRS> <gpp:AdditionalCRS>IGNF:LAMB93</gpp:AdditionalCRS> <gpp:AdditionalCRS>EPSG:2154</gpp:AdditionalCRS> <gpp:AdditionalCRS>IGNF:LAMBE</gpp:AdditionalCRS> <gpp:AdditionalCRS>EPSG:27582</gpp:AdditionalCRS> <gpp:AdditionalCRS>EPSG:27572</gpp:AdditionalCRS> <gpp:BoundingBox>-31.17,27.33,69.03,80.83</gpp:BoundingBox> <sld:MinScaleDenominator>533</sld:MinScaleDenominator> <sld:MaxScaleDenominator>128209039</sld:MaxScaleDenominator> <gpp:Resolution>2445.984905</gpp:Resolution> <gpp:Center> <gpp:x>2.345274398</gpp:x> <gpp:y>48.860832558</gpp:y> </gpp:Center> <gpp:DefaultLayers> <gpp:DefaultLayer layerId=\"ORTHOIMAGERY.ORTHOPHOTOS$GEOPORTAIL:OGC:WMTS\"/> <gpp:DefaultLayer layerId=\"GEOGRAPHICALGRIDSYSTEMS.MAPS$GEOPORTAIL:OGC:WMTS\"/> <gpp:DefaultLayer layerId=\"CADASTRALPARCELS.PARCELS$GEOPORTAIL:OGC:WMTS\"/> </gpp:DefaultLayers> </gpp:Territory><gpp:Territory id=\"ANF\" name=\"ANF\"> <gpp:defaultCRS>EPSG:3857</gpp:defaultCRS> <gpp:AdditionalCRS>CRS:84</gpp:AdditionalCRS> <gpp:AdditionalCRS>IGNF:WGS84RRAFGEO</gpp:AdditionalCRS> <gpp:AdditionalCRS>EPSG:4558</gpp:AdditionalCRS> <gpp:AdditionalCRS>IGNF:UTM20W84GUAD</gpp:AdditionalCRS> <gpp:AdditionalCRS>EPSG:2969</gpp:AdditionalCRS> <gpp:AdditionalCRS>EPSG:4559</gpp:AdditionalCRS> <gpp:AdditionalCRS>IGNF:GUAD48UTM20</gpp:AdditionalCRS> <gpp:AdditionalCRS>EPSG:32620</gpp:AdditionalCRS> <gpp:BoundingBox>-64,11.7,-59,18.18</gpp:BoundingBox> <sld:MinScaleDenominator>533</sld:MinScaleDenominator> <sld:MaxScaleDenominator>128209039</sld:MaxScaleDenominator> <gpp:Resolution>9.554629</gpp:Resolution> <gpp:Center> <gpp:x>-61.732777778</gpp:x> <gpp:y>15.996111111</gpp:y> </gpp:Center> <gpp:DefaultLayers> <gpp:DefaultLayer layerId=\"ORTHOIMAGERY.ORTHOPHOTOS$GEOPORTAIL:OGC:WMTS\"/> <gpp:DefaultLayer layerId=\"GEOGRAPHICALGRIDSYSTEMS.MAPS$GEOPORTAIL:OGC:WMTS\"/> </gpp:DefaultLayers></gpp:Territory><gpp:Territory id=\"ASP\" name=\"ASP\"> <gpp:defaultCRS>EPSG:3857</gpp:defaultCRS> <gpp:AdditionalCRS>CRS:84</gpp:AdditionalCRS> <gpp:AdditionalCRS>IGNF:UTM43SW84</gpp:AdditionalCRS> <gpp:AdditionalCRS>EPSG:32743</gpp:AdditionalCRS> <gpp:BoundingBox>76,-40,79,-36</gpp:BoundingBox> <sld:MinScaleDenominator>8531</sld:MinScaleDenominator> <sld:MaxScaleDenominator>128209039</sld:MaxScaleDenominator> <gpp:Resolution>9.554629</gpp:Resolution> <gpp:Center> <gpp:x>77.571944</gpp:x> <gpp:y>-37.796389</gpp:y> </gpp:Center> <gpp:DefaultLayers> <gpp:DefaultLayer layerId=\"GEOGRAPHICALGRIDSYSTEMS.MAPS$GEOPORTAIL:OGC:WMTS\"/> </gpp:DefaultLayers> </gpp:Territory><gpp:Territory id=\"ATF\" name=\"ATF\"> <gpp:defaultCRS>EPSG:3857</gpp:defaultCRS> <gpp:AdditionalCRS>CRS:84</gpp:AdditionalCRS> <gpp:AdditionalCRS>IGNF:TERA50STEREO</gpp:AdditionalCRS> <gpp:AdditionalCRS>EPSG:2986</gpp:AdditionalCRS> <gpp:BoundingBox>132.56,-68.62,144.54,-64.03</gpp:BoundingBox> <sld:MinScaleDenominator>8531</sld:MinScaleDenominator> <sld:MaxScaleDenominator>128209039</sld:MaxScaleDenominator> <gpp:Resolution>76.437028</gpp:Resolution> <gpp:Center> <gpp:x>140.001389</gpp:x> <gpp:y>-66.66278</gpp:y> </gpp:Center> <gpp:DefaultLayers> <gpp:DefaultLayer layerId=\"GEOGRAPHICALGRIDSYSTEMS.MAPS$GEOPORTAIL:OGC:WMTS\"/> </gpp:DefaultLayers> </gpp:Territory><gpp:Territory id=\"CRZ\" name=\"CRZ\"> <gpp:defaultCRS>EPSG:3857</gpp:defaultCRS> <gpp:AdditionalCRS>CRS:84</gpp:AdditionalCRS> <gpp:AdditionalCRS>IGNF:UTM39SW84</gpp:AdditionalCRS> <gpp:AdditionalCRS>EPSG:32739</gpp:AdditionalCRS> <gpp:AdditionalCRS>IGNF:CROZ63UTM39S</gpp:AdditionalCRS> <gpp:BoundingBox>47,-48,55,-44</gpp:BoundingBox> <sld:MinScaleDenominator>34124</sld:MinScaleDenominator> <sld:MaxScaleDenominator>128209039</sld:MaxScaleDenominator> <gpp:Resolution>38.218514</gpp:Resolution> <gpp:Center> <gpp:x>51.866667</gpp:x> <gpp:y>-46.433333</gpp:y> </gpp:Center> <gpp:DefaultLayers> <gpp:DefaultLayer layerId=\"ORTHOIMAGERY.ORTHOPHOTOS$GEOPORTAIL:OGC:WMTS\"/> <gpp:DefaultLayer layerId=\"GEOGRAPHICALGRIDSYSTEMS.MAPS$GEOPORTAIL:OGC:WMTS\"/> </gpp:DefaultLayers> </gpp:Territory><gpp:Territory id=\"EUE\" name=\"EUE\">
    Voici un bout de la réponse que je ne peux pas poster entière car trop longue mais je ne comprends pas votre proposition

    J'ai modifié ma fonction d'attente de chargement des classes Geoportal et Openlayers pour mettre celle proposée dans l'exemple 'checkApiLoading'. Et j'ai ajouté l'attente de chargement de la classe Geoportal.Catalogue. Le pb reste entier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // on attend que les classes soient chargées
    if (checkApiLoading('application.init();',['OpenLayers','Geoportal','Geoportal.Catalogue'])===false) {
    return;
    }
    Le soucis c'est que lorsque j'ai l'erreur : Geoportal.Catalogue.TERRITORIES[d] is undefined, si je tape en console 'Geoportal.Catalogue.TERRITORIES['FXX'] : firebug me retourne bien un objet que je peux inspecter dans le DOM.
    On dirait donc bien que lors de l'execution de 'Geoportal.Catalogue.TERRITORIES['FXX'] par mon applicatio, cela retourne undefined mais que quelques fractions de seconde plus tard, ça retournerait qq chose.
    Réponse de DGRichard :

    Citation Envoyé par dgrichard Voir le message
    Bon, sans clef et sans site, difficile d'avancer ...

    Reste une chose, as-tu jeter un œil à ceci ?
    quand il cite "As-tu jeté un coup d'oeil à ceci ?"

    http://api.ign.fr/tech-docs-js/examp...ortalGeoExt.js

    cela ne m'a pas mis la puce à l'oreille (contrairement à gilgil semble-t-il)....une idée ?

  4. #4
    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
    Par défaut
    A defaut d'URL, il faut donner tout ton code, si tu veux qu'on se penche sur ton problème...
    Les experts de l'IGN sont très forts, mais ils ne sont pas devins!

    Sinon il faudrait le GeoportalExtended.js en version décompressé
    Ici qui renvoie sur les différentes procédures dans http://depot.ign.fr/geoportail/api/d...lib/Geoportal/ . Sauf erreur de ma part, que mga_geo (ou d'autres) voudra bien me corriger...

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    379
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 379
    Par défaut
    Citation Envoyé par cmail Voir le message
    A defaut d'URL, il faut donner tout ton code, si tu veux qu'on se penche sur ton problème...
    Les experts de l'IGN sont très forts, mais ils ne sont pas devins!


    Ici qui renvoie sur les différentes procédures dans http://depot.ign.fr/geoportail/api/d...lib/Geoportal/ . Sauf erreur de ma part, que mga_geo (ou d'autres) voudra bien me corriger...
    Tout mon code, cela n'est pas possible, c'est un gros projet GMAO en C#/ASP.NET, base de données oracle, identification, différentes cartographies, etc.

    Cela marchait très bien avant la migration, donc je pense qu'il y a surtout à voir de ce côté (un contexte, un effet de bord,...). Par contre, là, c'est bien mieux avec le lien sur le GeoportalExtended.js décompressé (au passage, cela marche bien, le lien que tu cites est bon). J'ai bien la même erreur (c'est rassurant...ou pas) sauf que là, je vais pouvoir remonter le fil du bug, j'espère. Je refais le test en faisant toutes les captures pour isoler le traitement déclencheur, mais a priori, c'est dans l'initialisation (cf ligne de mon code précité)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     map = new Geoportal.Viewer.Default(idDivMap,  OpenLayers.Util.extend(options,
                                                            window.gGEOPORTALRIGHTSMANAGEMENT===undefined? {'apiKey':CleIGN} : gGEOPORTALRIGHTSMANAGEMENT)
            );
    Je reviens avec plus de détails...

    P.S. : Encore merci pour le lien, cmail

  6. #6
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    379
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 379
    Par défaut
    Voilà les captures d'erreur sous Firebug :



    ce qui nous mène là :



    Je suis donc aller mettre un point d'arrêt à la ligne spécifiée (l. 153) et en remontant pas à pas, je suis revenu à l'appel initial déclenchant le plantage :



    ce qui montre bien que c'est au démarrage que le plantage intervient...

    Si on revient à la deuxième capture (la fameuse ligne 153 dans le fichier catalogue.js), Geoportal.Catalogue.TERRITORIES[territory] vaut UNDEFINED donc a fortiori le defaultCRS n'est pas connu...
    alors qu'après, lors d'un deuxième passage, on a bien la valeur ['EPSG:3857'] pour defaultCRS et une taille de 1 pour le tableau...et cela passe.

    Cela fait penser à un problème de latence ou d'initialisation différée, non ?...Quand est-ce que cette initialisation intervient ? Doit-on la faire nous-mêmes ?

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

Discussions similaires

  1. [Débutant] migration de code sources sharepoint 2007 vers 2010
    Par roubi dans le forum SharePoint
    Réponses: 7
    Dernier message: 13/09/2012, 09h03
  2. Migration de Code
    Par pottiez dans le forum C++Builder
    Réponses: 0
    Dernier message: 29/07/2008, 14h29
  3. Migrations de codes MFC de Visual 6.0 vers Visual studio 2005
    Par jojo le boss dans le forum VC++ .NET
    Réponses: 12
    Dernier message: 06/08/2006, 11h47
  4. [C#] Migration de code VB - Fonction CreateObject
    Par Agoye dans le forum ASP.NET
    Réponses: 2
    Dernier message: 26/06/2006, 15h23
  5. Migration de code EasyPHP 1.6=>1.8
    Par lolodelp dans le forum Administration
    Réponses: 2
    Dernier message: 04/05/2006, 11h06

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