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 IGN dans openlayers


Sujet :

IGN API Géoportail

  1. #21
    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 avancé mais je n'ai toujours pas les cartes ign en fond de carte.
    Je récaputule : voici mon code après toutes les modifications :

    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
    ,createMap: function() {
                if (typeof(OpenLayers)==='undefined' || typeof(Geoportal)==='undefined') {
                    setTimeout('application.createMap();',300);
                    return;
                }
                var map;
                /**
                 * Function: setGeoRM
                 * Assign Geoportal's GeoRM token to an Object.
                 *
                 * Returns:
                 * {Object} the rightsManagement key
                 */
                function setGeoRM() {
                    return Geoportal.GeoRMHandler.addKey(
                        gGEOPORTALRIGHTSMANAGEMENT.apiKey,
                        gGEOPORTALRIGHTSMANAGEMENT[gGEOPORTALRIGHTSMANAGEMENT.apiKey[0]].tokenServer.url,
                        gGEOPORTALRIGHTSMANAGEMENT[gGEOPORTALRIGHTSMANAGEMENT.apiKey[0]].tokenServer.ttl,
                        map);
                }
                var epsg4326= new OpenLayers.Projection("EPSG:4326");
                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: 0.02197265625
                        ,numZoomLevels: 15
                        ,projection: epsg4326
                        ,displayProjection:epsg4326
                        ,units: epsg4326.getUnits()
                        ,maxExtent: new OpenLayers.Bounds(-5, 40, 15, 50)
                        ,controls:[
                            new OpenLayers.Control.ScaleLine()
                            ,new OpenLayers.Control.MousePosition()
                            ,new OpenLayers.Control.KeyboardDefaults()
                            ,new OpenLayers.Control.Attribution()
                            ,new Geoportal.Control.PermanentLogo()
                            ,new Geoportal.Control.TermsOfService()
                        ]
                    }
                    ,gGEOPORTALRIGHTSMANAGEMENT)
                );
                maMap = map;//debug
                // get IGNF's catalogue :
                var cat = new Geoportal.Catalogue(map,gGEOPORTALRIGHTSMANAGEMENT);
                // prepare CRS :
                var zon = cat.getTerritory('EUE');
                map.addLayers([
                    new OpenLayers.Layer(
                        '__PlateCarre__',
                        {
                            isBaseLayer: true,
                            displayInLayerSwitcher: false,
                            projection: epsg4326,
                            units: 'degrees',
                            maxResolution: 0.02197265625,
                            numZoomLevels: 15,
                            maxExtent: new OpenLayers.Bounds(872150, 1942230, 943685, 2030790),
                            maxExtent: new OpenLayers.Bounds(-180, -90, 180, 90),
                            maxExtent: new OpenLayers.Bounds(-5, 40, 15, 50),
                            minZoomLevel:5,
                            maxZoomLevel:18,
                            territory:'EUE'
                        })
                    ]);
    
                // get Geoportail layer's parameters :
                var europeanMapOpts= cat.getLayerParameters(zon, 'GEOGRAPHICALGRIDSYSTEMS.MAPS:WMSC');
                // overwrite some :
                europeanMapOpts.options.opacity= 1.0;
                // link with GeoRM :
                europeanMapOpts.options["GeoRM"] = setGeoRM();
                europeanMapOpts.transitionEffect= 'resize';
                // build map :
                var europeanMap= new europeanMapOpts.classLayer(
                    OpenLayers.i18n(europeanMapOpts.options.name),
                    europeanMapOpts.url,
                    europeanMapOpts.params,
                    europeanMapOpts.options);
                // reproject maxExtent (Geoportal's API standard and extended do it automagically :
                europeanMapOpts.options.maxExtent.transform(europeanMapOpts.options.projection, map.getProjection(), true);
                // add it to the map :
                map.addLayers([europeanMap]);
    
                var overlay = new OpenLayers.Layer.WMS("overlay",
                    "/flor/flor",
                    {
                        layers: [
                          'coeur', 'aireadhesion',
                          'zones2', 'zones3', 'zones4', 'zones5',
                          'zones6', 'zones8', 'zones9',
                          'zones10', 'zones11', 'zones12',
                          'ap', 'zp_pasrelue', 'zp_relue', 'secteurs', 'communes', 'zp_Selected'
                        ],
                        transparent: true,
                        projection: epsg4326,
                        units: 'degrees',
                        maxResolution: 0.02197265625,
                        maxExtent: new OpenLayers.Bounds(-5, 40, 15, 50),
                        statuscode: application.user.statuscode,
                        indexzp: 0
                    },
                    {
                        singleTile: true
                    }
                );
                map.addLayers([overlay]);
                
                return map;
            }
    Voici ma carte :


    Au chargement de la carte, dans firebug, j'ai 6 fois l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "NetworkError: 500 Internal Server Error - http://dev.ecrins-parcnational.fr/flore/js/client/mfbase/proj4js/lib/projCode/null.js"
    Je n'ai plus d'erreur 403.
    Les requêtes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://wxs.ign.fr/geoportail/wmsc?LAYERS=GEOGRAPHICALGRIDSYSTEMS.MAPS&EXCEPTIONS=text/xml&FORMAT=image/jpeg&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&SRS=IGNF:GEOPORTALFXX&BBOX=0,0,128,128&WIDTH=256&HEIGHT=256&TILED=true&gppkey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    Me retourne une réponse vide.
    Ces requêtes apparaissent dans firebug /reseau/tous mais pas dans réseau/image.

    Si j'inspecte le DOM de ma carte (objet map), j'ai 5 layers dont la plate_carre, une vector pour mes features, une overlay pour mes limites en wms et une couche d'origine inconnue "OpenLayers.Control.SelectFeature_35_container". Toutes ces couches ont une projection 4326 comme la map.
    Et enfin, une couche "carte ign" avec la projection "IGNF:GEOPORTALFXX".
    Cette couche à un paramètre reproject = false ???
    Tous les controls ont une displayProjection en 4326 (j'ai ajouté le paramètre displayProjection = 4326 sur la map)

    Dans mon répertoire lib/defs de proj4js, j'ai un fichier "IGNFGEOPORTALFXX.js" avec ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Proj4js.defs["IGNFGEOPORTALFXX"]="+title=Geoportail - France metropolitaine +proj=eqc +nadgrids=null +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=0.000000000 +lat_ts=46.500000000 +x_0=0.000 +y_0=0.000 +units=m +no_defs ";
    et un fichier "EPSG4326.js" avec ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Proj4js.defs["EPSG:4326"]= "+title=WGS 84 +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs";
    Je ne vois null part de projection null.
    Dans les choses que je ne comprends pas :
    pourquoi dans l'exemple, on reprojete le maxExtent de la couche ign et pas toute la couche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    europeanMapOpts.options.maxExtent.transform(europeanMapOpts.options.projection, map.getProjection(), true);
    J'ai creuser tout ce qui est à ma portée dans firbug ou dans le dom, j'ai testé plusieurs options mais je ne vois pas ce qui interdit l'affichage des cartes.

  2. #22
    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 chargement de la carte, dans firebug, j'ai 6 fois l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "NetworkError: 500 Internal Server Error - http://dev.ecrins-parcnational.fr/flore/js/client/mfbase/proj4js/lib/projCode/null.js"
    Là, c'est MapFish qui va charger les JS de PROJ4JS... Normalement, GeoportalMap.js embarque une version de PROJ4JS

    Pourrais-tu dans la console de Firebug, exécuter ceci (après chargement de la page) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Proj4js.getScriptLocation()
    Citation Envoyé par gilgil Voir le message
    Je n'ai plus d'erreur 403.
    C'est toujours ça de gagner

    Citation Envoyé par gilgil Voir le message
    Les requêtes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://wxs.ign.fr/geoportail/wmsc?LAYERS=GEOGRAPHICALGRIDSYSTEMS.MAPS&EXCEPTIONS=text/xml&FORMAT=image/jpeg&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&SRS=IGNF:GEOPORTALFXX&BBOX=0,0,128,128&WIDTH=256&HEIGHT=256&TILED=true&gppkey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    Me retourne une réponse vide.
    Ces requêtes apparaissent dans firebug /reseau/tous mais pas dans réseau/image.[/code]
    Normal, elles retournent du XML

    Citation Envoyé par gilgil Voir le message
    Si j'inspecte le DOM de ma carte (objet map), j'ai 5 layers dont la plate_carre, une vector pour mes features, une overlay pour mes limites en wms et une couche d'origine inconnue "OpenLayers.Control.SelectFeature_35_container". Toutes ces couches ont une projection 4326 comme la map.
    Et enfin, une couche "carte ign" avec la projection "IGNF:GEOPORTALFXX".
    Cette couche à un paramètre reproject = false ???
    Tous les controls ont une displayProjection en 4326 (j'ai ajouté le paramètre displayProjection = 4326 sur la map)
    plate_carre : ok (isBaseLayer==true)
    vector: ok (isBaseLayer==true)
    overlay wms: ok (isBaseLayer==true)
    OpenLayers.Control.SelectFeature_35_container: probablement la couche feature liée à un contrôleur de sélection ...
    carte ign: reproject est à false car il n'y a surtout pas besoin de reprojeter

    Citation Envoyé par gilgil Voir le message
    Dans mon répertoire lib/defs de proj4js, j'ai un fichier "IGNFGEOPORTALFXX.js" avec ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Proj4js.defs["IGNFGEOPORTALFXX"]="+title=Geoportail - France metropolitaine +proj=eqc +nadgrids=null +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=0.000000000 +lon_0=0.000000000 +lat_ts=46.500000000 +x_0=0.000 +y_0=0.000 +units=m +no_defs ";
    et un fichier "EPSG4326.js" avec ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Proj4js.defs["EPSG:4326"]= "+title=WGS 84 +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs";
    Je ne vois null part de projection null.
    Es-tu sûr que ces fichiers sont chargés ? N'y-a-t-il pas des requêtes vers proj4js dans l'onglet "Réseau" ? Ils sont par ailleurs parfaitement inutile car déjà dans GeoportalMin.js

    Grosso modo, il ne faut surtout utiliser le PROJ4JS de MapFish car GeoportalMin.js surcharge certaines méthodes et définitions ...

    Citation Envoyé par gilgil Voir le message
    Dans les choses que je ne comprends pas :
    pourquoi dans l'exemple, on reprojete le maxExtent de la couche ign et pas toute la couche.
    Au passage, tu as trois maxExtent dans cette couche ...

    Pourquoi reprojeter l'emprise maximale ? simple, OpenLayers gère les emprises maximales dans le même système que la projection de la carte (et donc de la baseLayer courante au passage). Il faut donc reprojeter cette emprise (IGNF:GEOPORTALFXX en EPSG:4326).

    Citation Envoyé par gilgil Voir le message
    J'ai creuser tout ce qui est à ma portée dans firbug ou dans le dom, j'ai testé plusieurs options mais je ne vois pas ce qui interdit l'affichage des cartes.
    Dur, sans "voir" la page (protégée par mot de passe ...)

  3. #23
    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
    Au passage, l'outil "Gomme" après utilisation de l'outil "Modification" ne supprime pas les points intermédiaires.

  4. #24
    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
    Es-tu sûr que ces fichiers sont chargés ? N'y-a-t-il pas des requêtes vers proj4js dans l'onglet "Réseau" ? Ils sont par ailleurs parfaitement inutile car déjà dans GeoportalMin.js

    Grosso modo, il ne faut surtout utiliser le PROJ4JS de MapFish car GeoportalMin.js surcharge certaines méthodes et définitions ...
    OUI, c'est ça. Bien vu.
    J'ai supprimé mon appel à proj4js et tout s'est affiché comme par miracle.
    Grâce à toi j'aurai au moins fait un truc bien avant la fin de l'année.

    Citation Envoyé par dgrichard Voir le message
    Au passage, tu as trois maxExtent dans cette couche ...[/I]
    oui c'est du débug qui traine, j'ai nettoyé.

    Citation Envoyé par dgrichard Voir le message
    Pourquoi reprojeter l'emprise maximale ? simple, OpenLayers gère les emprises maximales dans le même système que la projection de la carte (et donc de la baseLayer courante au passage). Il faut donc reprojeter cette emprise (IGNF:GEOPORTALFXX en EPSG:4326).
    Ok.


    Citation Envoyé par dgrichard Voir le message
    Dur, sans "voir" la page (protégée par mot de passe ...)
    Si tu me contactes par le canal privé (je ne peux pas te contacter ainsi) je peux te passer des mdp, c'est un site de dev et de démo.

    Dis moi ? elle est mal projeté ma carte, non ?

    http://imageshack.us/photo/my-images/593/floremap2.jpg/
    C'est lié au 4326 ? Est-ce qu'il y a une projection (mieux) compatible avec IGNFXX pour la map et la baseLayer ?

  5. #25
    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 mga_geo Voir le message
    Au passage, l'outil "Gomme" après utilisation de l'outil "Modification" ne supprime pas les points intermédiaires.
    Je ne comprends pas bien ce que tu veux dire. J'ai cliqué sur éditer et j'ai modifié mon post. Je ne vois pas d'outil gomme.
    Tu veux dire qu'il est possible de voir ce qu'il y avait dans le post avant modification ?
    Si oui, est-ce qu'il possible... qu'en fait non ?

  6. #26
    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
    Dis moi ? elle est mal projeté ma carte, non ?
    Non

    Citation Envoyé par gilgil Voir le message
    C'est lié au 4326 ?
    Oui (en fait, à la "reprojection" IGNF:GEOPORTALFXX vers EPSG:4326 qui est en fait une simple compression des images du Géoportail)

    Citation Envoyé par gilgil Voir le message
    Est-ce qu'il y a une projection (mieux) compatible avec IGNFXX pour la map et la baseLayer ?
    ben, IGNF:GEOPORTALFXX
    Dans la prochaine version de l'API, tu pourras essayer avec le web mercator ...

  7. #27
    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
    Mes données dans postgis sont en 27572(que l'on va prochainement migrer en Lambert 93). Pour le test, je fais faire à mapfish un st_transform vers le 4326 avant de les charger coté client.

    2 questions pour retenir la meilleures des deux solutions :

    1/ est-ce que je peux mettre la map et la baseLayer en 27572 ou 2154 pour éviter une reprojection coté serveur (je garderais ma carte déformée mais peut être moins). Il me semble avoir lu que ce n'est pas possible.

    2/ Si je mets la map et la baseLayer en IGNFXX pour avoir une carte plus propre, coté postgis je crois qu'il est possible d'ajouter les projections IGNFXX dans spatial_ref_sys mais coté mapserver (pour mon wms des limites : layer overlay) est-ce qu'il existe un srs IGNFXX que le mapfile connaisse ?
    Enfin, je charge des gpx dans une layer en 4326, est-ce que le proj4 intégré à GeoportalMin.js va me la reprojeter automatiquement en IGNFXX ?

    Bonne fin d'année et merci encore pour ton aide précieuse.

  8. #28
    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
    Mes données dans postgis sont en 27572(que l'on va prochainement migrer en Lambert 93). Pour le test, je fais faire à mapfish un st_transform vers le 4326 avant de les charger coté client.
    Le mieux serait de migrer vers RGF93G (équivalent de 4326) ...

    Citation Envoyé par gilgil Voir le message
    2 questions pour retenir la meilleures des deux solutions :

    1/ est-ce que je peux mettre la map et la baseLayer en 27572 ou 2154 pour éviter une reprojection coté serveur (je garderais ma carte déformée mais peut être moins). Il me semble avoir lu que ce n'est pas possible.
    Non,car ni le Lambert2 étendu, ni le Lambert93 ne sont compatibles avec les caches Géoportail

    Citation Envoyé par gilgil Voir le message
    2/ Si je mets la map et la baseLayer en IGNFXX pour avoir une carte plus propre, coté postgis je crois qu'il est possible d'ajouter les projections IGNFXX dans spatial_ref_sys mais coté mapserver (pour mon wms des limites : layer overlay) est-ce qu'il existe un srs IGNFXX que le mapfile connaisse ?
    Oui, il suffit de déclarer la projection dans le map pour chaque LAYER :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            PROJECTION
                 "init=IGNF:GEOPORTALFXX"
            END
    Cela suppose que le fichier IGNF se trouve dans le répertoire $PROJ_LIB. Mais, le plus simple est d'exposer ces couches en plate-carré (EPSG:4171 qui est le code presque équivalent à IGNF:RGF93G ...à l'ordre des axes prêt --ce qui peut causer des soucis avec WMS 1.3.0 de mapserver--)

    Citation Envoyé par gilgil Voir le message
    Enfin, je charge des gpx dans une layer en 4326, est-ce que le proj4 intégré à GeoportalMin.js va me la reprojeter automatiquement en IGNFXX ?
    Oui, c'est natif !

    Citation Envoyé par gilgil Voir le message
    Bonne fin d'année.
    Merci, à toi aussi

  9. #29
    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
    Merci encore pour le suivi et l'aide précieuse. Ca fonctionne bien maintenant.
    J'ai passé tout mon projet en IGNF:GEOPORTALFXX ; mapserver pour le wms et postgis pour mes intersections quand c'est nécessaire me reprojette nickel tout ce qui est en Lambert II étendu dans la base.

    Voici mon code pour celles et ceux que ça pourrait aider :

    Je charge :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        - "http://dev.openlayers.org/releases/OpenLayers-2.10/OpenLayers.js"    
        - "http://api.ign.fr/api?v=1.2-m&key=xxx_maclef_xxx&includeEngine=false"
        - "http://api.ign.fr/geoportail/api/js/1.2/GeoportalMin.js"
        - client/mfbase/mapfish/MapFish.js
        - mes_js_de_l_appli.js
    La fonction qui créé la carte avec les couches ign et ma couche wms (en localhost) :
    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
            ,createMap: function() {
                if (typeof(OpenLayers)==='undefined' || typeof(Geoportal)==='undefined') {
                    setTimeout('application.createMap();',300);
                    return;
                }
                var map;
                 /**
                 * Function: setGeoRM
                 * Assign Geoportal's GeoRM token to an Object.
                 *
                 * Returns:
                 * {Object} the rightsManagement key
                 */
                function setGeoRM() {
                    return Geoportal.GeoRMHandler.addKey(
                        gGEOPORTALRIGHTSMANAGEMENT.apiKey,
                        gGEOPORTALRIGHTSMANAGEMENT[gGEOPORTALRIGHTSMANAGEMENT.apiKey[0]].tokenServer.url,
                        gGEOPORTALRIGHTSMANAGEMENT[gGEOPORTALRIGHTSMANAGEMENT.apiKey[0]].tokenServer.ttl,
                        map);
                }
                function createIgnLayer(couche,opacite,LayerBase,extentMax){
                    couche.options.opacity = opacite;
                    couche.options.isBaseLayer = LayerBase;
                    couche.options.maxExtent = extentMax;
                    couche.options["GeoRM"] = setGeoRM();
                    couche.transitionEffect= 'resize';
                    var ignLayer = new couche.classLayer(
                        OpenLayers.i18n(couche.options.name),
                        couche.url,
                        couche.params,
                        couche.options);
                    return ignLayer
                };
                var epsg4171= new OpenLayers.Projection("EPSG:4171");
                var ignfxx= new OpenLayers.Projection("IGNF:GEOPORTALFXX");
                var monExtentMax = new OpenLayers.Bounds(360000, 4783000,600000, 5200000)
                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: 1024
                        ,numZoomLevels: 15
                        ,projection: ignfxx
                        // ,displayProjection:epsg4171
                        ,units: ignfxx.getUnits()
                        ,maxExtent: monExtentMax
                        ,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:WMSC');
                var orthoOpts= cat.getLayerParameters(zon, 'ORTHOIMAGERY.ORTHOPHOTOS:WMSC');
                var cadastreOpts= cat.getLayerParameters(zon, 'CADASTRALPARCELS.PARCELS:WMSC');
                var etatmajorOpts= cat.getLayerParameters(zon, 'GEOGRAPHICALGRIDSYSTEMS.ETATMAJOR40:WMSC');
                //create layers
                var scan = createIgnLayer(scanOpts,1.0,true,monExtentMax);
                var ortho = createIgnLayer(orthoOpts,1.0,false,monExtentMax);
                var cadastre = createIgnLayer(cadastreOpts,null,false,monExtentMax);
                var etatmajor = createIgnLayer(etatmajorOpts,1.0,false,monExtentMax);
                // reproject maxExtent (Geoportal's API standard and extended do it automagically :
                // scanOpts.options.maxExtent.transform(scanOpts.options.projection, map.getProjection(), true);
                // add it to the map :
                map.addLayers([scan,ortho,cadastre,etatmajor]);
     
                var overlay = new OpenLayers.Layer.WMS("overlay",
                    "/flor/flor"
                    ,{
                        layers: [
                          'coeur', 'aireadhesion',
                          'zones2', 'zones3', 'zones4', 'zones5',
                          'zones6', 'zones8', 'zones9',
                          'zones10', 'zones11', 'zones12',
                          'ap', 'zp_pasrelue', 'zp_relue', 'secteurs', 'communes', 'zp_Selected'
                        ]
                        ,transparent: true
                        ,projection: epsg4171
                        ,units: 'degrees'
                        ,maxResolution: 1024
                        ,maxExtent: monExtentMax
                        ,statuscode: application.user.statuscode
                        ,indexzp: 0
                    }
                    ,{singleTile: true}
                );
                map.addLayers([overlay]);
                
                return map;
            }
        }
    }();
    Dernière petite question : comme tu peux le voir sur les images précédentes, les 2 controls Geoportal.Control.TermsOfService() et Geoportal.Control.PermanentLogo() sont empilés l'un sur l'autre : est-ce qu'on peut mettre l'un ou l'autre en haut à droite (ou autre solution) ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/03/2015, 11h16
  2. Du webservices ESRI à l'API IGN dans un logiciel SIG
    Par little_kevin dans le forum IGN API Géoportail
    Réponses: 5
    Dernier message: 28/11/2014, 15h06
  3. ajouter l'API JDom dans un projet
    Par samia13 dans le forum Eclipse Java
    Réponses: 12
    Dernier message: 18/05/2007, 10h27
  4. Réponses: 3
    Dernier message: 10/10/2006, 16h30
  5. Demande d'information pour ajout d'API Java dans eclipse
    Par BernardT dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 07/07/2005, 17h08

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