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 :

Correspondance gmaps / IGN


Sujet :

IGN API Géoportail

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 65
    Points : 28
    Points
    28
    Par défaut Correspondance gmaps / IGN
    Bonjour!

    Je me heurte a un problème : j'ai des points géocodés par google maps avec longitude / latitude, lorsque je passe les coordonées a ma carte IGN je ne suis jamais au bon endroit. Si une bonne ame pouvait m'expliquer ce que je dois faire?

    Exemple pour les coords : Lng=-1.68026542663574&Lat=48.1117630004883 google maps nous met en plein centre de rennes, par contre IGN nous met ailleurs

    Ma portion de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    
            function initGeoportalMap() {
    
                geoportalLoadmaCarte("plancheCartographique", "normal", "FXX");
                maCarte.addGeoportalLayers(maCarte.allowedGeoportalLayers);
    
    maCarte.getMap().setCenterAtLonLat(-1.68026542663574,48.1117630004883,13);
    Merci !

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 128
    Points : 1 764
    Points
    1 764
    Par défaut C'est bien dans Rennes

  3. #3
    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
    Ton code est nickel, est-il possible d'avoir accès à la page directement ?

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 65
    Points : 28
    Points
    28
    Par défaut
    Edit : Je me demande si ce n'est pas a cause du choix "degrès sexagéminaux"... Comment fais on pour passer en "degrès décimaux" ?

    Merci

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2 128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 128
    Points : 1 764
    Points
    1 764
    Par défaut Problème de conversion
    Essaye avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    maCarte.getMap().setCenterAtLonLat(parseFloat(valeur[0]), parseFloat(valeur[1]), parseInt(valeur[2]));

  6. #6
    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
    En fait, c'est normal

    Ton code récupère les paramètres de l'URL et les transmet à l'appel Geoportal.Map.setCenterAtLonLat() sous forme de chaînes de caractères. L'API teste si ce sont des nombres ou des chaînes et, dans ce dernier cas, considère que les chaînes représentent des degrés sexagécimaux (degrés, minutes, secondes) et non des degrés décimaux ...
    Il faudrait donc que tu écrives :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    valeur[i]= parseFloat(second[1]);
    Sinon, je te conseille d'utiliser OpenLayers.Util.getParameters() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var Args= OpenLayers.Util.getParameters();
    Args.lng= parseFloat(Args.lng);
    Args.lat= parseFloat(Args.lat);
    Args.zoom= parseFloat(Args.zoom);
    Cette méthode est plus efficace (elle décode les paramètres, prend en compte les listes de valeurs).
    Cela te permettra aussi d'enlever les variables globales param, first, second de ton code en le simplifiant

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2 128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 128
    Points : 1 764
    Points
    1 764
    Par défaut parseFloat ou parseInt
    Pour le zoom, laquelle des deux fonctions est préférable ?

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 65
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par dgrichard Voir le message
    En fait, c'est normal

    Ton code récupère les paramètres de l'URL et les transmet à l'appel Geoportal.Map.setCenterAtLonLat() sous forme de chaînes de caractères. L'API teste si ce sont des nombres ou des chaînes et, dans ce dernier cas, considère que les chaînes représentent des degrés sexagécimaux (degrés, minutes, secondes) et non des degrés décimaux ...
    Il faudrait donc que tu écrives :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    valeur[i]= parseFloat(second[1]);
    Sinon, je te conseille d'utiliser OpenLayers.Util.getParameters() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var Args= OpenLayers.Util.getParameters();
    Args.lng= parseFloat(Args.lng);
    Args.lat= parseFloat(Args.lat);
    Args.zoom= parseFloat(Args.zoom);
    Cette méthode est plus efficace (elle décode les paramètres, prend en compte les listes de valeurs).
    Cela te permettra aussi d'enlever les variables globales param, first, second de ton code en le simplifiant
    Merci bcp!!! ca marche nickel

  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 mga_geo Voir le message
    Pour le zoom, laquelle des deux fonctions est préférable ?
    Pour le zoom, j'aurai du effectivement écrire parseInt() au lieu de parseFloat() (merci mga_geo)

    Au passage, quant on change de centre, (Geoportal|OpenLayers).Map.setCenter*() est préférable car OpenLayers.Map.zoomTo(z) fait de toute façon un OpenLayers.Map.moveTo(c,z) comme les les premières fonctions (avec c à null).

  10. #10
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 65
    Points : 28
    Points
    28
    Par défaut
    Ah par contre tout de même un petit souci : il y a peut etre un bug avec internet explorer 8, lorsque je fais une redirection sur ma page avec les paramètres bien passés j'obtiens une page blanche sous IE8...

    Sous firefox aucun problème... est ce un bug?

    Sinon petit renseignement supplémentaire : comment initialiser la carte pour qu'elle affiche par défaut le cadastre?

    Merci encore!

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2 128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 128
    Points : 1 764
    Points
    1 764
    Par défaut Couche cadastre visible
    Pour modifier l'affichage des couches à posteriori, j'ai cette fonction:
    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
      this.wikiLayers = function() {
        console.log("wikiLayers()");
        for(var i = 1; i < this.map.layers.length; i++){
          var layer= this.map.layers[i];
          if ( ! layer.params ) {
            continue;
          }
          if(layer.params.LAYERS.search('ORTHOIMAGERY.ORTHOPHOTOS')!=-1) {
            layer.setVisibility(true);
            layer.setOpacity(0.3);
          }
          if(layer.params.LAYERS.search('GEOGRAPHICALGRIDSYSTEMS.MAPS')!=-1) {
            layer.setVisibility(true);
            layer.setOpacity(0.7);
          }
        }  
      };
    Il faut l'adapter en sachant que pour le cadastre la valeur est 'ADMINISTRATIVEUNITS.BOUNDARIES:WMSC'

    Il doit être aussi possible de le faire au chargement de la couche ...

  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
    Citation Envoyé par 404error Voir le message
    Ah par contre tout de même un petit souci : il y a peut etre un bug avec internet explorer 8, lorsque je fais une redirection sur ma page avec les paramètres bien passés j'obtiens une page blanche sous IE8...
    Je sais que Unusual a eu des problèmes similaires avec .NET, j'espère qu'il lit cette discussion car je suis un ignare complet sur le sujet ...

    Citation Envoyé par 404error Voir le message
    Sinon petit renseignement supplémentaire : comment initialiser la carte pour qu'elle affiche par défaut le cadastre?
    Dans ton code, remplace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    maCarte.addGeoportalLayers(maCarte.allowedGeoportalLayers);
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    maCarte.addGeoportalLayers(maCarte.allowedGeoportalLayers,
        {'CADASTRALPARCELS.PARCELS':{visibility:true}});

  13. #13
    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 dgrichard Voir le message
    Dans ton code, remplace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    maCarte.addGeoportalLayers(maCarte.allowedGeoportalLayers);
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    maCarte.addGeoportalLayers(maCarte.allowedGeoportalLayers,
        {'CADASTRALPARCELS.PARCELS':{visibility:true}});

    Oops, ce code fonctionne qu'en1.0bêta5, pas en 1.0bêta4;
    c'est donc bien le code de mga_geo qui fonctionnera sur ta page

  14. #14
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 65
    Points : 28
    Points
    28
    Par défaut
    Merci pour vos réponses! je vais essayer cela, par contre le bug d'ie 8 tu penses que ce serait lié a dotnet?... pourtant,en l'occurrence, la ce n'est qu'une simple html mais hébergée sur un site qui est en dotnet lui...

  15. #15
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 65
    Points : 28
    Points
    28
    Par défaut
    Désolé de revenir a la charge mais j'ai essayé le code de mga_geo et je n'arrive pas a initialiser avec le cadastre

    j'ai également essayé ceci sans plus de succès :

    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
             function initGeoportalMap() {
    
                geoportalLoadmaCarte("plancheCartographique", "normal", "FXX");
                maCarte.addGeoportalLayers(maCarte.allowedGeoportalLayers);
    
                var Args = OpenLayers.Util.getParameters();
                Args.Lng = parseFloat(Args.Lng);
                Args.Lat = parseFloat(Args.Lat);
    
                maCarte.getMap().setCenterAtLonLat(Args.Lng, Args.Lat, 16);
    
                for (var i = 0; i < viewer.getmap().layers.length; i++) {
                    var layer = viewer.getMap().layers[i];
                    if (typeof (layer.params) == 'object' && typeof (layer.params.LAYERS) == 'string') {
                        if (layer.params.LAYERS.search('ADMINISTRATIVEUNITS.BOUNDARIES:WMSC') != -1) {
                            layer.setVisibility(true);
                        }
                    }
                } 
    
    
            }

    La version beta 1.05 sera disponible bientot?

    Merci encore!

  16. #16
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2 128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 128
    Points : 1 764
    Points
    1 764
    Par défaut Faut adapter un peu ...
    viewer => maCarte
    ADMINISTRATIVEUNITS.BOUNDARIES =>CADASTRALPARCELS.PARCELS
    en espérant que les 2 soient en WMSC

  17. #17
    Membre habitué
    Inscrit en
    Juin 2006
    Messages
    379
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 379
    Points : 194
    Points
    194
    Par défaut
    Désolé d'arriver un peu tard sur ce fil...D'accord avec mga_geo pour la réponse précédente...

    Quant au problème IE8 qui affiche une page blanche, peux-tu décrire un peu plus ce que tu fais exactement ?

    Ce que je peux dire, c'est que j'ai déjà rencontré des soucis avec IE8 qui fait disparaitre toute la div (et donc la carte) lors de redimensionnements (typiquement si la largeur de la DIV est trop petite par rapport à la partie cliente d'IE ).

  18. #18
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 65
    Points : 28
    Points
    28
    Par défaut
    merci bien pour les réponses! j'ai changé ce que m'as dit mga_geo mais le cadastre ne se coche toujours pas par défaut

    Pour Ie 8 je ne fais rien de spécial je ne suis meme pas dans une div , mon code est le suivant :

    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
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <script
            type="text/javascript"
            src="http://api.ign.fr/geoportail/api?v=1.0beta4&amp;key=....&amp;instance=maCarte&amp;">
        </script>
        <script type="text/javascript">
       
                geoportalLoadmaCarte("plancheCartographique", "normal", "FXX");
    
                maCarte.addGeoportalLayers(maCarte.allowedGeoportalLayers);
    
                //Récup params url
                var Args = OpenLayers.Util.getParameters();
                Args.Lng = parseFloat(Args.Lng);
                Args.Lat = parseFloat(Args.Lat);
    
                maCarte.getMap().setCenterAtLonLat(Args.Lng, Args.Lat, 16);
    
                for (var i = 0; i < maCarte.getMap().layers.length; i++) {
                    var layer = maCarte.getMap().layers[i];
                    if (typeof (layer.params) == 'object' && typeof (layer.params.LAYERS) == 'string') {
                        if (layer.params.LAYERS.search('CADASTRALPARCELS.PARCELS:WMSC') != -1) {
                            layer.setVisibility(true);
                        }
                    }
                } 
    
    
            }
    
        </script>
      </head>
      <body>
        <div id="plancheCartographique" style="width:1024px;height:768px;"></div>
      </body>
    </html>

  19. #19
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2 128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 128
    Points : 1 764
    Points
    1 764
    Par défaut Précisions
    Avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (layer.params.LAYERS.search('CADASTRALPARCELS.PARCELS') != -1) {
      layer.setVisibility(true);
    }
    la couche est bien activée ...
    Il faut se mettre à Firebug pour mettre au point ses scripts: un petit
    console.log("%s",layer.params.LAYERS);
    permet de trouver le bon nom!

    Je n'ai pas vu la ligne
    function initGeoportalMap() {
    dans ton script.

  20. #20
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 65
    Points : 28
    Points
    28
    Par défaut
    merci bcp mga_geo, cela fonctionne! Oui pour firebug tu as effectivement raison, cela peut etre bien utile vu que je ne suis pas un expert javascript!

Discussions similaires

  1. Quel SGBD correspond aux fichiers à extension .DAT
    Par jcpitaud dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 12/04/2006, 20h11
  2. Correspondance de types lors d'un SELECT
    Par Alain Dionne dans le forum ASP
    Réponses: 5
    Dernier message: 18/05/2004, 20h54
  3. [debutant] correspondance JAVA C++ pour pointeur de fonction
    Par davidoff_tls dans le forum Langage
    Réponses: 7
    Dernier message: 15/04/2004, 09h13
  4. Récupérer le nom du fichier spool correspondant à un job
    Par chtiot dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 23/02/2004, 20h28

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