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 :

V2 changement appel des couches


Sujet :

IGN API Géoportail

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2010
    Messages : 67
    Points : 35
    Points
    35
    Par défaut V2 changement appel des couches
    Bonjour,

    depuis mon passage à la V2, je n'ai pas réussi à créer une fonction createMap() qui fonctionne bien. Disons qu'elle fonctionne parfois et parfois, de façon aléatoire, j'ai l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TypeError: Geoportal.Catalogue.TERRITORIES[d] is undefined
        transform("FXX"d=) GeoportalMin.js (ligne 138)
        createMap() applic...hese.js (ligne 258)
        createMap()
        ....

    Je sais qu'il n'y a plus besoin de territoire pour la définition des layers dans cette nouvelle api 2.0.0 mais ça fonctionne quand même avec (?), sauf parfois ; ce qui n'est pas très facile à débugguer et surtout je ne sais pas comment m'y prendre pour modifier le code afin de ne plus avoir besoin de cette notion de territoire.

    Je travaille avec extjs 3.4 et openlayers 2.11 chargé depuis un fichier view.yml dans symfony.

    Voici donc ma fonction que j'avais à l'époque paufinée avec DgRichard ici
    J'ai modifié la projection pour passer en 3857 et retiré le setGeoRM() inutile.
    mais j'aurais besoin d'aide pour me passer de la notion de territoire qui provoque l'erreur.
    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
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    ,createMap: function() {
    
                function createIgnLayer(couche,opacite,LayerBase,extentMax){
                    if(couche==null){
                        setTimeout('createIgnLayer('+couche+','+opacite+','+LayerBase+','+extentMax+');',300);
                        return;
                    }
                        couche.options.opacity = opacite;
                        couche.options.isBaseLayer = LayerBase;
                        couche.options.maxExtent = extentMax;
                        couche.transitionEffect= 'resize';
                        var ignLayer = new couche.classLayer(
                            OpenLayers.i18n(couche.options.name),
                            couche.url,
                            couche.params,
                            couche.options);
    
                    return ignLayer
                };
                
                var id = Ext.id();
                Ext.DomHelper.append(Ext.getBody(), {tag: 'div', cn: {tag: 'div', id: id}, style:'visibility: hidden'});
                map = new OpenLayers.Map(id 
                    ,OpenLayers.Util.extend({
                        maxResolution: resolution_max
                        ,numZoomLevels: num_zoom_levels
                        ,projection: 'EPSG:3857'
                        // ,projection: 'EPSG:310024001'
                        ,units: 'meters'
                        ,maxExtent: extent_max
                        ,controls:[
                            new Geoportal.Control.TermsOfService()
                            ,new Geoportal.Control.PermanentLogo()
                            ,new OpenLayers.Control.ScaleLine()
                            ,new OpenLayers.Control.MousePosition({
                                prefix: "Lambert 93 : x = "
                                ,suffix: " m"
                                ,separator: " m, y = "
                                ,displayProjection: new OpenLayers.Projection("IGNF:LAMB93")
                                ,numDigits: 0
                                ,emptyString: ''
                            })
                            ,new OpenLayers.Control.KeyboardDefaults()
                            ,new OpenLayers.Control.Attribution()
                            ,new OpenLayers.Control.Navigation()
                        ]
                    }
                    ,gGEOPORTALRIGHTSMANAGEMENT)
                );
                maMap = map;//debug
                // get IGNF's catalogue :
                var cat = new Geoportal.Catalogue(map,gGEOPORTALRIGHTSMANAGEMENT);
                var zon = cat.getTerritory('EUE');
                // get Geoportail layer's parameters :
                var scanOpts= cat.getLayerParameters(zon, 'GEOGRAPHICALGRIDSYSTEMS.MAPS');
                var orthoOpts= cat.getLayerParameters(zon, 'ORTHOIMAGERY.ORTHOPHOTOS');
                var cadastreOpts= cat.getLayerParameters(zon, 'CADASTRALPARCELS.PARCELS');
                // var etatmajorOpts= cat.getLayerParameters(zon, 'GEOGRAPHICALGRIDSYSTEMS.ETATMAJOR40');
                //create layers
                var scan = createIgnLayer(scanOpts,1.0,true,extent_max);
                var ortho = createIgnLayer(orthoOpts,1.0,false,extent_max);
                var cadastre = createIgnLayer(cadastreOpts,null,false,extent_max);
                // var etatmajor = createIgnLayer(etatmajorOpts,1.0,false,extent_max);
                // map.addLayers([scan,ortho,cadastre,etatmajor]);
                map.addLayers([scan,ortho,cadastre]);
    
                var overlay = new OpenLayers.Layer.WMS("overlay",
                    "/faun/faun"
                    ,{
                        layers: [
                          'znieff2'
                          ,'znieff1'
                          ,'coeur'
                          ,'aoa'
                          , 'ab'
                          ,'reservesnat'
                          ,'reservesint'
                          , 'reserveschasse'
                          , 'sitesinscrits'
                          , 'sitesclasses'
                          , 'n2000'
                          ,'communes'
                          ,'secteurs'
                          ,'unitesgeo'
                        ]
                        ,transparent: true
                        ,projection:'EPSG:3857'
                        ,units: 'meters'
                        ,maxResolution: resolution_max
                        ,maxExtent: extent_max
                        ,statuscode: application.synthese.user.statuscode
                    }
                    ,{singleTile: true}
                );
                map.addLayers([overlay]);
                
                this.searchVectorLayer = new OpenLayers.Layer.Vector('search_vector_layer', {
                    style: {
                      fillColor: "#000000"
                      ,strokeColor: "#ff0000"
                      ,cursor: "pointer"
                      ,fillOpacity: 0.1
                      ,strokeOpacity: 1
                      ,strokeWidth: 2
                      ,pointRadius: 8
                    }
                    ,styleMap: new OpenLayers.StyleMap({
                      temporary: new OpenLayers.Style({
                        strokeWidth: 2
                        ,strokeColor: "#ffa500"
                        ,fillOpacity: 0.2
                      })
                    })
                  });
                map.addLayers([this.searchVectorLayer]);
                this.selectFeatureControl = new OpenLayers.Control.SelectFeature(this.searchVectorLayer, {});
                map.addControl(this.selectFeatureControl);
                this.selectFeatureControl.activate();
                map.setCenter(centre_map, 13);
                
                return map;
            }
    Rien ne se lance avant le chargement de l'API et d'Openlayers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ,init:function(){
                // on attend que les classes soient chargées
                 if (typeof(OpenLayers)==='undefined' || typeof(Geoportal)==='undefined') {
                    setTimeout('application.synthese.init();',300);
                    return;
                }
                // on charge la configuration de la clef API, puis on charge l'application
                Geoportal.GeoRMHandler.getConfig([ign_api_key], null,null, {
                    onContractsComplete: ...lancement de l'application qui a un moment donnée appelle la fonction ci-dessus pour créer la carte
                });
            }

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2010
    Messages : 67
    Points : 35
    Points
    35
    Par défaut
    Je sais qu'il serait plus simple de fournir un lien mais la page est dans une application métier qui n'est pas accessible sans login. Désolé.

  3. #3
    Membre chevronné Avatar de gcebelieu
    Homme Profil pro
    Ingénieur Géographe et Cartographe
    Inscrit en
    Novembre 2010
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Géographe et Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 1 106
    Points : 1 843
    Points
    1 843
    Par défaut
    Citation Envoyé par gilgil Voir le message
    Bonjour,

    depuis mon passage à la V2, je n'ai pas réussi à créer une fonction createMap() qui fonctionne bien. Disons qu'elle fonctionne parfois et parfois, de façon aléatoire, j'ai l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TypeError: Geoportal.Catalogue.TERRITORIES[d] is undefined
        transform("FXX"d=) GeoportalMin.js (ligne 138)
        createMap() applic...hese.js (ligne 258)
        createMap()
        ....
    Bonjour,

    afin de mieux cibler l'erreur levée pouvez vous charger l'api avec le lien suivant (API décompressée) :

    http://api.ign.fr/geoportail/api/js/...eoportalMin.js

    au lieu de

    http://api.ign.fr/geoportail/api/js/...eoportalMin.js

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2010
    Messages : 67
    Points : 35
    Points
    35
    Par défaut
    bonjour,
    Et merci pour votre aide. Qui me permet d'analyser la fonction getTerritory() qui provoque l'erreur. Voici le message de firebug lorsque l'erreur se produit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TypeError: Geoportal.Catalogue.TERRITORIES[territory] is undefined
    getTerritory()                    Catalogue.js (ligne 153)
    territory = "FXX"
    createMap()                      application.synthese.js (ligne 237)
    la ligne 237 est la deuxième ligne de ce bout de code de ma fonction createMap()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var cat = new Geoportal.Catalogue(map,gGEOPORTALRIGHTSMANAGEMENT);
    var zon = cat.getTerritory('EUE');
    et voici la function dans le Catalogue.js du geoportail. J'ai mis en gras le bout de code qui retourne "Geoportal.Catalogue.TERRITORIES[territory] is undefined"
    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
    /**
         * APIMethod: getTerritory
         * Returns a valid territory.
         *
         * Parameters:
         * territory - {String} the territory.
         *
         * Returns:
         * {String} Either the territory or 'FXX' when the territory is wrong.
         */
        getTerritory: function(territory) {
            if(territory==undefined) {
                if (this.map) {
                    territory= this.map.territory || 'FXX';
                } else {
                    territory= 'FXX';
                }
            }
            if(Geoportal.Catalogue.TERRITORIES[territory]==undefined) {
                if (this.map) {
                    territory= this.map.territory || 'FXX';
                } else {
                    territory= 'FXX';
                }
            }
            for (var i= 0, len= Geoportal.Catalogue.TERRITORIES[territory].defaultCRS.length; i<len; i++) {
                var proj= Geoportal.Catalogue.TERRITORIES[territory].defaultCRS[i];
                if (typeof(proj)=='string') {
                    Geoportal.Catalogue.TERRITORIES[territory].defaultCRS[i]= new OpenLayers.Projection(
                        proj,
                        {
                            domainOfValidity: OpenLayers.Bounds.fromArray(Geoportal.Catalogue.TERRITORIES[territory].geobbox)
                        });
                }
            }
            if (typeof(Geoportal.Catalogue.TERRITORIES[territory].geoCRS[0])=='string') {
                Geoportal.Catalogue.TERRITORIES[territory].geoCRS[0]= new OpenLayers.Projection(
                    Geoportal.Catalogue.TERRITORIES[territory].geoCRS[0],
                    {
                        domainOfValidity: OpenLayers.Bounds.fromArray(Geoportal.Catalogue.TERRITORIES[territory].geobbox)
                    });
            }
            return territory;
        }
    Pourtant tout semble en place pour retourner 'FXX' à la place du 'EUE' fourni dans mon code. Et d'ailleurs firebug affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    getTerritory()                    Catalogue.js (ligne 153)
    territory = "FXX"
    Est-ce que tout ça vous donne une idée du problème ?

  5. #5
    Membre chevronné Avatar de gcebelieu
    Homme Profil pro
    Ingénieur Géographe et Cartographe
    Inscrit en
    Novembre 2010
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Géographe et Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 1 106
    Points : 1 843
    Points
    1 843
    Par défaut
    Visiblement la variable Geoportal.Catalogue n'est pas initialisée.

    Deux pistes de recherche :

    1. dans firebug, que donne l'appel au service d'autoconf ?

    http://gpp3-wxs.ign.fr/VOTRE_CLEF_AP...egistry.regId1

    La variable Catalogue doit être remplie à partir des informations retournées par cet appel à ce service.

    2. avez-vous comparé votre code avec l'exemple suivant qui utilise l'API minimum et openlayers :

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

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2010
    Messages : 67
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par gcebelieu Voir le message
    1. dans firebug, que donne l'appel au service d'autoconf ?

    http://gpp3-wxs.ign.fr/VOTRE_CLEF_AP...egistry.regId1
    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
    Citation Envoyé par gcebelieu Voir le message
    La variable Catalogue doit être remplie à partir des informations retournées par cet appel à ce service.
    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.

  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
    Bon, sans clef et sans site, difficile d'avancer ...

    Reste une chose, as-tu jeter un œil à ceci ?

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2010
    Messages : 67
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par dgrichard Voir le message
    Reste une chose, as-tu jeter un œil à ceci ?
    Merci Dg Richard.
    J'ai repris cet exemple pour totalement revoir ma fonction en l'adaptant
    J'obtiens l'affichage des cartes

    Il me reste deux soucis :
    1/ La carte s'affiche sur l'emprise monde et je ne trouve pas le (les ?) paramètre(s) à modifier pour afficher uniquement la métropole ou juste une région comme le parc national des Ecrins par exemple. Mes anciens paramètres ne fonctionnent pas. On dirait que les paramètres maxResolution ou maxExtent sont ignorés et si je fais un map.zoomToMaxExtent() en fin de fonction, il est ignoré aussi. Par contre si je le fais en console dans firebug une fois que tout est affiché, ça fonctionne.

    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
    map = new OpenLayers.Map(id 
                    ,{
                        projection: wm
                        ,units: wm.getUnits()
                        ,resolutions: Geoportal.Catalogue.RESOLUTIONS.slice(0)
                        ,maxResolution: 2445.9849051256406
                        ,maxExtent: new OpenLayers.Bounds(-200000, 5100000,760000, 6300000)
                        // ,maxExtent: new OpenLayers.Bounds(-180, -57, 180, 72).transform(epsg4326,wm,true)
                        ,units: wm.getUnits()
                        ,controls:[
                            new Geoportal.Control.TermsOfService()
                            ,new Geoportal.Control.PermanentLogo()
                            ,new OpenLayers.Control.ScaleLine()
                            ,new OpenLayers.Control.MousePosition({
                                // prefix: "Lambert 93 : x = "
                                suffix: " m"
                                ,separator: " m, y = "
                                // ,displayProjection: new OpenLayers.Projection("IGNF:LAMB93")
                                ,numDigits: 0
                                ,emptyString: ''
                            })
                            ,new OpenLayers.Control.KeyboardDefaults()
                            ,new OpenLayers.Control.Attribution()
                            ,new OpenLayers.Control.Navigation()
                        ]
                    }
    2/ La couche des parcelles cadastrales a un fond blanc et plus transparent comme avant. J'ai essayé plusieurs valeurs pour opacity (0. null, 1, 0.25) mais cela joue sur l'opacité globale de la couche et le fond reste blanc.
    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
    var createCadastralLayer = function() {
                    var matrixIds3857= new Array(22);
                    for (var i= 0; i<22; i++) {
                        matrixIds3857[i]= {
                            identifier    : "" + i,
                            topLeftCorner : new OpenLayers.LonLat(-20037508,20037508)
                        };
                    }
                    var l0= new Geoportal.Layer.WMTS(
                            'Parcelles cadastrales',
                            gGEOPORTALRIGHTSMANAGEMENT[gGEOPORTALRIGHTSMANAGEMENT.apiKey]
                                  .resources['CADASTRALPARCELS.PARCELS:WMTS'].url,
                            {
                              layer: 'CADASTRALPARCELS.PARCELS',
                              style: 'normal',
                              matrixSet: "PM",
                              matrixIds: matrixIds3857,
                              format:'image/png',
                              exceptions:"text/xml"
                            },
                            {
                              tileOrigin: new OpenLayers.LonLat(0,0),
                              isBaseLayer: false,
                              // resolutions: Geoportal.Catalogue.RESOLUTIONS.slice(0,20),
                              maxResolution: 2445.9849051256406,
                              alwaysInRange: false,
                              // opacity : null,
                              projection: wm,
                              // maxExtent: new OpenLayers.Bounds(-180, -57, 180, 72).transform(epsg4326,wm, true),
                              maxExtent: new OpenLayers.Bounds(-200000, 5100000,760000, 6300000),
                              units: wm.getUnits(),
                              attribution: 'provided by IGN'
                            }
                          );
                          map.addLayer(l0);
                };
                createCadastralLayer();
    En vous remerciant

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2010
    Messages : 67
    Points : 35
    Points
    35
    Par défaut
    j'ai trouver pour le point 2 grâce au getCapabilities
    j'ai remplacé
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    style: 'bdparcellaire',
    Je cherche tjs pour que la carte s'ouvre sur l'extent max et non sur le monde

  10. #10
    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
    Utilise restrictedExtent sur OpenLayers.Map (au même niveau que maxExtent)

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2010
    Messages : 67
    Points : 35
    Points
    35
    Par défaut
    Bonjour,

    le restricted extend ne changeait rien.
    Après plusieurs journées consacrées au sujet j'ai fini par trouvé d'où venait le problème. Il semble que l'appel au catalogue fonctionne de manière aléatoire, sans que je sache pourquoi (peut-être le coté asynchrone de extjs et ou d'openlayers). En tout cas mon tableau des résolutions était vide lors de la construction de la map qui présentait une erreur avec cette appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ,resolutions: Geoportal.Catalogue.RESOLUTIONS.slice(0)
    J'ai donc remplacé le chargement des résolutions via le catalogue par une valeur en dur récupéré dans le DOM les rares fois où cela fonctionnait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var ign_resolutions=[156543.03392804103,78271.5169640205,39135.75848201024,19567.879241005125,9783.939620502562,4891.969810251281,2445.9849051256406,1222.9924525628203,611.4962262814101,305.74811314070485,152.87405657035254,76.43702828517625,38.218514142588134,19.109257071294063,9.554628535647034,4.777314267823517,2.3886571339117584,1.1943285669558792,0.5971642834779396,0.29858214173896974,0.14929107086948493,0.07464553543474241];
    puis dans la définition de la map :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ,resolutions: ign_resolutions
    Merci à tous pour votre soutien.

  12. #12
    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
    Certes, mais c'est absolument pas normal d'avoir à écrire en dur : c'était justement l'objectif du service d'auto-configuration que de faire ce travail ...

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2010
    Messages : 67
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par dgrichard Voir le message
    Certes, mais c'est absolument pas normal d'avoir à écrire en dur : c'était justement l'objectif du service d'auto-configuration que de faire ce travail ...
    Oui je sais bien
    Mais entre qq chose de peu élégant qui fonctionne et ce qu'il serait bien de faire mais qui ne fonctionne pas bien sans vraiment savoir pourquoi ...
    En attendant, depuis que j'ai retiré tout appel au catalogue, je n'ai plus aucune erreur. Je ne sais pas dans quelle mesure ce pb peut être lié au fonctionnement du reste de mon application mais force est de constater que le pb venait bien de l'appel au catalogue.
    Au vu de mes analyses, la construction des couches se poursuivait avant que le catalogue ne réponde. C'était vraiment flagrant sur des sites avec des connexions internet lentes où l'ouverture de l'application ne fonctionnait qu'une fois sur 10, alors que quand le débit était meilleur, c'était moins fréquent.
    Je me suis aussi parfois demandé si le pb ne venait pas de la disponibilité du service du catalogue car parfois, sur un même site ça pouvait très bien fonctionner le matin et très mal l'aprem par exemple.

  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 gilgil Voir le message
    Au vu de mes analyses, la construction des couches se poursuivait avant que le catalogue ne réponde. C'était vraiment flagrant sur des sites avec des connexions internet lentes où l'ouverture de l'application ne fonctionnait qu'une fois sur 10, alors que quand le débit était meilleur, c'était moins fréquent.
    On a un problème similaire sur une application que j'avais écrite en 1.3.0, ready 2.0.0 et qui remonte les mêmes erreurs ...
    Elle est à base de JQUERY ...

    Citation Envoyé par gilgil Voir le message
    Je me suis aussi parfois demandé si le pb ne venait pas de la disponibilité du service du catalogue car parfois, sur un même site ça pouvait très bien fonctionner le matin et très mal l'aprem par exemple.
    Possible, mais pas certain

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

Discussions similaires

  1. Position de POI selon l'ordre d'appel des couches
    Par christian.bleau dans le forum IGN API Géoportail
    Réponses: 3
    Dernier message: 20/09/2012, 19h48
  2. appel des services web dans une couche WCF
    Par aida1986 dans le forum Windows Communication Foundation
    Réponses: 3
    Dernier message: 26/05/2010, 18h57
  3. Réponses: 4
    Dernier message: 25/11/2004, 13h24
  4. Appel à des fonctions incluses dans des DLL
    Par Greybird dans le forum Langage
    Réponses: 3
    Dernier message: 26/05/2003, 14h33

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