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 :

Comment faire pour incorporer l'outil de recherche


Sujet :

IGN API Géoportail

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 27
    Points : 18
    Points
    18
    Par défaut Comment faire pour incorporer l'outil de recherche
    Bonjour à tous... Voilà j'ai un problème et je me casse la tête dessus depuis un bon moment.
    Ce que veux faire, c'est utiliser l'outil de recherche proposé par IGN afin de géocoder des adresses. Vous pouvez voir un exemple sur le site des exemples IGN.
    Alors, je crois que j'ai fais le nécessaire:
    1. J'ai un contrat, qui comprend ADRESSES.CROSSINGS
    2. J'arrive à charger la carte
    3. J'arrive à inclure l'outil de recherche dans la "boîte à outils"
    4. Lorsque je clique sur l'outil (les "jumelles avec un numéro") l'outil de saisie d'une adresse apparaît correctement.
    Seulement, voilà, lorsque je saisis l'adresse il me signale systématiquement "Pas de correspondance" ("No match found"). Je sais que l'adresse est bonne parce que cela marche quand je teste dans l'exemple (ci-dessus).
    J'ai constaté une différence de taille entre mon application de test et l'exemple: sur ce dernier, lorsque je clique sur "Rechercher" dans le site exemple, le console Firebug me signale l'envoi d'un POST, mais quand j'utilise mon site de test je ne vois rien apparaître.
    Je me demande si je n'ai pas oublié un composant nécessaire dans le code, mais je n'arrive pas à trouver quoi.
    Voici le code que j'utilise:
    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
                    geoportalLoadviewer("plancheCartographique","normal");
                    if(viewer){
                        viewer.addGeoportalLayers();
                        // add "Search Toolbar" :
                        var tbx= viewer.getMap().getControlsByClass('Geoportal.Control.ToolBox')[0];
                        var searchbar= new Geoportal.Control.SearchToolbar(
                        {
                            div: OpenLayers.Util.getElement(tbx.id+'_search'),
                            // Geonames removed, does not seem very useful
                            geocodeOptions: {
                                layerOptions: {
                                    name: 'ADDRESSES.CROSSINGS:OPENLS',
                                    formatOptions: {
                                        version:'1.0'
                                    }
                                },
                                matchTypes: [
                                    {re:/city/i,    src:Geoportal.Util.getImagesLocation()+'OLScity.gif'},
                                    {re:/street$/i, src:Geoportal.Util.getImagesLocation()+'OLSstreet.gif'},
                                    {re:/number/i,  src:Geoportal.Util.getImagesLocation()+'OLSstreetnumber.gif'},
                                    {re:/enhanced/i,src:Geoportal.Util.getImagesLocation()+'OLSstreetenhanced.gif'},
                                    {re:null,       src:Geoportal.Util.getImagesLocation()+'OLSstreet.gif'}
                                ]
                            }
                        }
                    );
                        viewer.getMap().addControl(searchbar);
                    // Set map center at 10 rue des pavillons, Vitry s/ Seine, zoom level 12
                    viewer.getMap().setCenterAtLonLat(2.382745, 48.7944649, 12);
    Si quelqu'un peut m'aider je serais très reconnaissant!

  2. #2
    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
    Bonsoir,

    en regardant ton code et en comparant avec celui de l'exemple, il me semble qu'il te manque des paramètres dans l'appel à geoportalLoadviewer() :

    Chez toi, il y a ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                    geoportalLoadviewer("plancheCartographique","normal");

    dans l'exemple, il y a ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     geoportalLoadviewer(
                        "viewerDiv",
                        VIEWEROPTIONS.mode,
                        VIEWEROPTIONS.territory,
                        VIEWEROPTIONS.projection,
                        VIEWEROPTIONS.displayProjection,
                        '/geoportail/api/xmlproxy'+'?url='
            );
    si les paramètres sont optionnels (à part le premier), dans le cas de la geolocalisation, le dernier est nécessaire : il s'agit d'un proxy à mettre en place sur ton serveur pour gérer les problèmes de sécurité lié à l'accès à des services situés sur un autre serveur.

    Je t'invite à te référer à cette page de doc pour plus d'explications et sur comment mettre en oeuvre le proxy.

    En espérant t'avoir aidé.

    Gilles

  3. #3
    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
    Et avec un exemple du code en ligne, on arrive beaucoup plus facilement à diagnostiquer!

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Merci - j'ai commencé dans ce sens, en fait j'ai fini par charger les fichiers exemples pour voir si je pouvais les faire marcher (au moins je pars de quelque chose qui fonctionne ). Et j'ai trouvé l'histoire de proxy dans le code, mais je ne savais pas quoi faire avec, merci donc beaucoup du tuyau.
    J'ai un serveur Apache avec PHP et tout et tout, mais une chose qui me manque (et qui n'est pas expliqué dans le code PHP Proxy proposé), c'est comment l'installer et où. Est-ce qu'il suffit de mettre le code PHP dans une page à la racine du serveur web? Est-ce que je dois convertir les pages des exemples (que je vais essayer de faire marcher) en PHP? Est-ce qu'il y a des considérations de configuration? C'est bizarre que la page qui propose le code du proxy n'explique pas comment l'installer.
    J'aurais aimé essayer un des autres scripts proposés comme Glype ou Zelune, mais chez moi l'accès est bloqué par le proxy de notre réseau

  5. #5
    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
    Points : 966
    Points
    966
    Par défaut
    Quelques premières remarques sur ton problème de proxy (sous le controle final des plus aguerris...)

    1/ Tu récupères le fichier "proxy.php" sur le site déjà évoqué ou/et en faisant un copier-coller du code 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
    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
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    <?php
    <?php
    // proxy http
    // auteur: Marc Gauthier
    // 02/09/2009
    // les erreurs dans les log du serveur
    // http://www.papygeek.com/download/53/
    // Transfer-Encoding: chunked
    //
    // Didier Richard - IGN - dérivation pour publication
    // (c) IGN 2010
    // License : http://creativecommons.org/licenses/by-nc-sa/2.0/fr/
    
        // ----------------------------------------------------------
        // global variables :
        $debug= 1;
        $debug_html= 0;
        $sUrl= '';
        $sReponse= '';
        $chunked= -1;
        // via un proxy d'entreprise/IP
        $proxy_host= '';
        $proxy_port= 80;
        $content_types= array(
            'application/vnd.google-earth.kml+xml',
            'application/vnd.google-earth.kml',
            //'application/vnd.google-earth.kmz', # TODO needs to unzip response ...
            'application/vnd.ogc.se_xml',
            'application/vnd.ogc.wms_xml',
            'application/vnd.ogc.wfs_xml',
            'application/vnd.ogc.gml',
            'application/soap+xml',
            'application/xml',
            'text/xml',
            'text/plain',
            'text/html');
        // ----------------------------------------------------------
    
        //
        // écriture d'un message de log
        function carp($msg) {
            global $debug;
            global $debug_html;
            if ($debug) {
                if ($debug_html) {
                    print "__FILE__.:$msg.<br>\n";
                }
                error_log(__FILE__.": $msg", 0);
            }
        }
    
        //
        // écriture d'un message de log et erreur http
        function confess($msg) {
            carp($msg);
            header("HTTP/1.0 500 $msg");
            exit;
        }
    
        //
        // mode chunk
        function unchunk($result) {
            return preg_replace_callback(
                '/(?:(?:\r\n|\n)|^)([0-9A-F]+)(?:\r\n|\n){1,2}(.*?)'.
                '((?:\r\n|\n)(?:[0-9A-F]+(?:\r\n|\n))|$)/si',
                create_function(
                    '$matches',
                    'return hexdec($matches[1]) == strlen($matches[2]) ? $matches[2] : $matches[0];'
                ),
                $result
            );
        }
    
        //
        // la fonction proxy
        // 2 grandes étapes:
        // - émission de la requête
        // - réception de la réponse
        function proxy($sUrl) {
            global $proxy_host, $proxy_port, $chunked, $content_types;
            //
            // analyse de l'url et construction de la requête
            $sUrl= urldecode($sUrl);
            $referrer= $_SERVER["HTTP_REFERER"];
            $userAgent= $_SERVER["HTTP_USER_AGENT"];
            $aUrl= @parse_url($sUrl);
            if (!isset($aUrl['scheme'])) {
                //try absolute and relative path:
                confess("proxy scheme missing");
            }
            // construction de la requete
            $acceptH= $_SERVER['HTTP_ACCEPT'];
            $pragmaH= $_SERVER['HTTP_PRAGMA'];
            $cacheControlH= $_SERVER['HTTP_CACHE_CONTROL'];
            $acceptLanguageH= $_SERVER['HTTP_ACCEPT_CHARSET'];
            $keepAliveH= $_SERVER['HTTP_KEEP_ALIVE'];
            $acceptEncodingH= $_SERVER['HTTP_ACCEPT_ENCODING'];
            $connectionH= $_SERVER['HTTP_CONNECTION'];
            $SOAPActionH= $_SERVER['HTTP_SOAPACTION'];
            $acceptCharsetH= $_SERVER['HTTP_ACCEPT_CHARSET'];
            $gppKeyH= $_SERVER['HTTP_GPPKEY'];#if gppKey in HTTP Header
            $Hs= "Host: ".$aUrl['host'].($aUrl['port']? ":".$aUrl['port'] : "")."\r\n"
                . (strlen($acceptH)>0? "Accept: ".$acceptH : join(",", $content_types))."\r\n"
                . (strlen($pragmaH)>0? "Pragma: ".$pragmaH."\r\n" : "")
                . (strlen($cacheControlH)>0? "Cache-Control: ".$cacheControlH."\r\n" : "")
                . (strlen($acceptLanguageH)>0? "Accept-Language: ".$acceptLanguageH."\r\n" : "")
                . (strlen($keepAliveH)>0? "Keep-Alive: ".$keepAliveH."\r\n" : "")
                . (strlen($acceptEncodingH)>0? "Accept-Encoding: ".$acceptEncodingH."\r\n" : "")
                . (strlen($connectionH)>0? "Connection: ".$connectionH."\r\n" : "")
                . (strlen($SOAPActionH)>0? "SOAPAction: ".$SOAPActionH."\r\n" : "")
                . (strlen($acceptCharsetH)>0? "Accept-Charset: ".$acceptCharsetH."\r\n" : "")
                . (strlen($gppKeyH)>0? "gppkey: ".$gppKeyH."\r\n" : "")
                . (strlen($referrer)>0? "Referer: ".$referrer."\r\n" : "")
                . (strlen($userAgent)>0? "User-Agent: ".$userAgent."\r\n" : "")
                ;
            carp($Hs);
            if ($_SERVER["REQUEST_METHOD"]==='GET') {
                $sReq= "GET $sUrl HTTP/1.0\r\n"
                     . $Hs
                     ;
            } else {
                if ($_SERVER["REQUEST_METHOD"]==='POST') {
                    $data= '';
                    if (count($_POST)){
                        while (list($key, $val)= each($_POST)){
                            $data.="$key : $val\n";
                        }
                    } else {
                        $data= trim(file_get_contents('php://input'));
                    }
                    $sReq= "POST $sUrl HTTP/1.0\r\n"
                         . $Hs
                         . "Content-Type: text/xml\r\n"
                         . "Content-length: ".strlen($data)."\r\n"
                         . "\r\n"
                         . $data
                         ;
                }
            }
            $sReq.= "\r\n";
            if (empty($proxy_host)) {
                $host= $aUrl["host"];
                $port= $aUrl["port"] ? $aUrl["port"] : 80;
            } else {
                $host= $proxy_host;
                $port= $proxy_port;
            }
            // envoi de la requête
            carp("host:$host port:$port url:$sUrl");
            $fp= @fsockopen($host, $port, $errno, $errstr, 5);
            if (!$fp) {
                confess("fsockopen failed: $errstr ($errno)");
            }
            carp("sReq:$sReq");
            fwrite($fp, $sReq);
            // attente de la réponse
            $headers= '';
            $sReponse= '';
            ob_start();
            while (!feof($fp)) {
                $sReponse.= fread($fp, 4096);
            }
            fclose ($fp);
            $eoh= strpos($sReponse, "\r\n\r\n");
            $headers= substr($sReponse, 0, $eoh);
            $sReponse= substr($sReponse, $eoh+4);
            $Hs= preg_split('/(?:\r\n|\n)/', $headers);
            carp("Hs=[".count($hs)."]");
            for ($i= 0, $l= count($hs); $i<$l; $i++) {
                if (preg_match('/^Content-Length/i', $hs[$i])) {
                    continue;
                }
                if (preg_match('/^Transfer-Encoding: chunked/i', $hs[$i])) {
                    // Transfer-Encoding: chunked
                    carp("chunked response");
                    $sReponse= unchunck($sReponse);
                    continue;
                }
                #carp("header=[$hs[$i]]");
                header($hs[$i]);
            }
            header("Content-Length: ".strlen($sReponse));
            print $sReponse;
        }
    
        // ----------------------------------------------------------
        // programme principal:
        // on accept que GET/POST (pour l'instant)
        if (($_SERVER["REQUEST_METHOD"]==='GET' or $_SERVER["REQUEST_METHOD"]==='POST') &&
            (isset($_REQUEST["url"]) && strlen($_REQUEST["url"])>0)) {
            $sUrl= substr($_SERVER["QUERY_STRING"],4);
            carp("GET url:$sUrl");
            proxy($sUrl);
            exit;
        }
        // on ne traite pas la demande :
        carp("REQUEST_METHOD:".$_SERVER["REQUEST_METHOD"]." QUERY_STRING:".$_SERVER["QUERY_STRING"] );
        if ($debug) {
            phpinfo(INFO_VARIABLES);
        }
        exit;
        // ----------------------------------------------------------
    ?>
    Remarque à confirmer : Il fut un temps où il y avait quelques problèmes entre les différentes versions de proxy en circulation sur le site ign. J'espère que c'est résolu...

    2/ Tu installes ce fichier "proxy.php" par exemple sur ta racine de ton site.
    3/ Tu appelles en respectant les conventions d'écriture pour les chemins ce fichier soit comme déjà indiqué:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     geoportalLoadviewer(
                        "viewerDiv",
                        VIEWEROPTIONS.mode,
                        VIEWEROPTIONS.territory,
                        VIEWEROPTIONS.projection,
                        VIEWEROPTIONS.displayProjection,
                        '/geoportail/api/proxy.php'+'?url='
            );
    soit comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      viewer.getMap().setProxyUrl("http://43.lignon.free.fr/proxy.php?url=");

    Est-ce qu'il suffit de mettre le code PHP
    Oui sans modif, à moins que tu maitrises ++ le php et ses protocoles
    dans une page à la racine du serveur web?
    Tu choisis le chemin que tu veux, mais la racine est un placement correct.

    Est-ce que je dois convertir les pages des exemples (que je vais essayer de faire marcher) en PHP?
    Non.

    Est-ce qu'il y a des considérations de configuration?
    Pas particulièrement. Tu parles de configuration php? ou serveur?

    En fait, au début je me posais les mêmes questions que toi, mais en fait l'utilisation du proxy est assez transparente et simple, à la portée d'un béotien comme moi!

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    J'avance petit à petit, grâce à ceux qui m'ont répondu. Maintenant j'ai installé mon serveur, j'ai créé le fichier PHP, j'ai configuré un des fichiers exemples, et je lance ma requête. Toujours pas de réponse.
    Pourtant, quand je regarde avec Firebug je constate que le POST s'est bien fait, et que j'ai bien récupéré une réponse qui a l'air identique à la réponse que je reçois quand j'utilise l'exemple sur le portail IGN. Je reste donc très perplexe.

  7. #7
    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 martink Voir le message
    J'avance petit à petit, grâce à ceux qui m'ont répondu. Maintenant j'ai installé mon serveur, j'ai créé le fichier PHP, j'ai configuré un des fichiers exemples, et je lance ma requête. Toujours pas de réponse.
    Pourtant, quand je regarde avec Firebug je constate que le POST s'est bien fait, et que j'ai bien récupéré une réponse qui a l'air identique à la réponse que je reçois quand j'utilise l'exemple sur le portail IGN. Je reste donc très perplexe.
    Si tu vois le POST avec la réponse dans Firebug, c'est que ta requête est bien envoyée et la réponse reçue. Le PB doit maintenant venir de l'exploitation de cette dernière. Là il faudrait un peu plus de visibilité sur ton code ou sur ta page pour t'aider.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par gcebelieu Voir le message
    Si tu vois le POST avec la réponse dans Firebug, c'est que ta requête est bien envoyée et la réponse reçue. Le PB doit maintenant venir de l'exploitation de cette dernière. Là il faudrait un peu plus de visibilité sur ton code ou sur ta page pour t'aider.
    Justement c'est ça qui m'embête parce que je suis en train de travailler (dans un premier temps) avec le code des exemples! En particulier j'utilise (installés sur mon serveur) geoportalAlert.html et geoportalAddressForm.html et j'ai le même souci dans les deux. A ma connaissance je n'ai rien changé dans le code, sauf évidemment la clé et l'appel proxy (ce qui semble fonctionner correctement).
    Je suppose que je pourrais essayer en faisant un "afficher le code de la page" à partir des exemples qui fonctionne, dans le cas où il y aurait un "hic" dans les exemples téléchargeables, mais à part ça je ne vois pas quoi faire (j'hésite d'essayer de debugger le Javascript, ce n'est pas vraiment mon point fort).

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    J'ai essayé avec le copier/coller du code de l'exemple tel que je l'ai exécuté sur le site IGN - le résultat est le même. Peut-être qu'il y a quelque chose que j'ai oublié, puisqu'il faut quand même ajouter la mention explicite "http://api.ign.fr" à plusieurs endroits pour que cela s'affiche correctement.

  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
    Et si tu nous mettais le code de ta page en document attaché

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Comme demandé... la pièce jointe est jointe! J'ai aussi ajouté le proxy.php par acquis de conscience.
    Fichiers attachés Fichiers attachés

  12. #12
    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 Problème de clé!!!
    J'ai modifié dans ton code:
    1. le proxy: '/geoportail/mgaProxy.php?url='
    2. enlevé un "alert"
    3. la clé (j'ai remplacé avec la mienne)
    et cela fonctionne ...

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par mga_geo Voir le message
    J'ai modifié dans ton code:
    1. le proxy: '/geoportail/mgaProxy.php?url='
    2. enlevé un "alert"
    3. la clé (j'ai remplacé avec la mienne)
    et cela fonctionne ...
    Alors, voici d'abord par rapport à cela.
    1. Je suis obligé d'avoir le proxy sur mon propre serveur pour des raisons de sécurité (l'URL du proxy doit correspondre au URL du serveur), le proxy est copié du site IGN
    2. L'alerte a été enlevée chez moi aussi, ça ne change rien
    3. La clé évidemment doit être spécifique au site
    Ensuite, voici ce que je constate en y allant pas à pas avec le debuggeur de Firebug:
    Dans le champ pour l'adresse je saisis "10 Rue des Pavillons, 94400, Vitry-sur-Seine"
    Dans le console Firebug, je constate l'envoi d'un "post" (bizarrement, je dois attendre 2 minutes pour une réponse, alors que si je mets seulement "10 Rue des Pavillons, Vitry" j'ai une réponse tout de suite, mais avec une liste de choix potentiels assez longue). La réponse renvoyée au "post" est la suivante:
    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
    <xls:XLS xmlns:xls="http://www.opengis.net/xls" version="1.000000" xmlns:gml="http://www.opengis.net/gml"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/xls /WEBS/ign/interop-ols.ign.fr/docs/lbs_p/gen/data/openls/LocationUtilityService.xsd">
    
      <ResponseHeader xmlns="http://www.opengis.net/xls"/>
    
      <Response xmlns="http://www.opengis.net/xls" requestID="" version="1.0">
        <GeocodeResponse>
          <GeocodeResponseList numberOfGeocodedAddresses="1">
            <GeocodedAddress>
              <Point xmlns="http://www.opengis.net/gml">
                <pos dimension="2">48.794465 2.382745</pos>
              </Point>
              <Address countryCode="FR">
                <StreetAddress>
                  <Street>10 R DES PAVILLONS</Street>
                </StreetAddress>
                <Place type="Municipality">Vitry-sur-Seine</Place>
                <PostalCode>94400</PostalCode>
              </Address>
              <GeocodeMatchCode accuracy="1" matchType="Street number"/>
            </GeocodedAddress>
          </GeocodeResponseList>
        </GeocodeResponse>
      </Response>
    
    </xls:XLS>
    Ensuite, je fais un essai plus détaillé
    Je mets un breakpoint avant la ligne 259, qui est, si je comprends bien, l'endroit où on va appeler le service de géocodage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
                    this.layer.GEOCODE(
                        [a],
                        {
                            onSuccess: this.LUSSuccess,
                            onFailure: this.LUSFailure,
                            scopeOn: this
                        });
    Lorsque l'exécution du JS s'arrête ici, cela semble a priori correcte (pour autant que je puisse en juger) - j'ai attaché une copie d'écran de Firebug.
    Ensuite, je continue au breakpoint sur la ligne 283, au tout début du retour de l'appel au géocodage.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                LUSSuccess: function(request) {
                    if (!this.layer.queriedAddresses) {
                       this.LUSFailure(request);
                       return false;
                    }
    Au retour du géocodage je constate dans Firebug que this.layer.queriedAddresses est effectivement null, cependant request.responsetext contient la réponse au POST ci-dessus (en XML). Où est donc l'erreur? Je ne vois pas comment cela peut être dans le code que j'utilise, à moins que la façon de saisir l'adresse pose un problème. En même temps, l'adresse semble être correcte (dans le var 'a' avant appel au géocodage). Je suis toujours aussi perplexe...
    Images attachées Images attachées  

  14. #14
    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
    J'ai la page avec mes modifs à cette adresse: http://atlasnw.free.fr/geoportail/ma...dressForm.html
    Lorsque je pose la question "35000, Rennes", j'obtiens bien une ligne avec "Ville [Rennes], [35000]" et la carte s'affiche en centrée sur Rennes.
    Lorsque je clique sur cette ligne, j'obtiens ", 35000, Rennes" dans la ligne adresse et le bouton "géo" est inopérant.

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Mon impression c'est que le problème intervient dans l'appel à la méthode GEOCODE et non pas dans le code de la page lui-même. Si on arrive à faire fonctionner le même code dans une installation et pas dans une autre, alors a priori le problème ne provient pas du code mais de l'installation - par exemple un problème de pare-feu, ou peut-être de configuration de proxy chez moi.
    Est-ce qu'il y a des règles sur ce plan que j'ai ignorées peut-être?

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Eh bien ça marche enfin!!
    Je m'y suis mis ensemble avec une collègue et nous avons passé toutes les sources d'erreur possible en revue, et c'était.... le code du proxy.php
    Comment cela? Eh bien il semble qu'il y a deux sources sur le site IGN.
    J'utilisais le code que j'ai copié/collé à partir de la doc qui explique comment faire le proxy.
    Mais ce code n'est pas du tout le même que ce que tu trouves sur la page des téléchargements.
    D'où l'erreur.... je proposerais donc d'éliminer l'une ou l'autre. Dans mon expérience si tu as deux copies de la même chose dans deux endroits différents, tu auras fatalement une divergence tôt ou tard (en général tôt )

  17. #17
    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
    Points : 966
    Points
    966
    Par défaut
    Remarque à confirmer : Il fut un temps où il y avait quelques problèmes entre les différentes versions de proxy en circulation sur le site ign. J'espère que c'est résolu...
    Qu'est-ce que je disais!!
    Finalement, cela n'a pas été corrigé, comme promis

  18. #18
    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 cmail Voir le message
    Qu'est-ce que je disais!!
    Finalement, cela n'a pas été corrigé, comme promis
    Normal, on a bien écrit « sera », pas encore écrit « c'est » ...

Discussions similaires

  1. [AC-2003] comment faire pour rechercher sur une table ?
    Par Kalem dans le forum VBA Access
    Réponses: 8
    Dernier message: 10/04/2012, 09h33
  2. recherche comment faire pour convertir info rs232 en info eib
    Par kaporal69 dans le forum Autres Logiciels
    Réponses: 0
    Dernier message: 17/04/2009, 20h09
  3. Réponses: 1
    Dernier message: 02/12/2008, 21h16
  4. Réponses: 8
    Dernier message: 20/06/2008, 10h33
  5. Réponses: 6
    Dernier message: 20/05/2006, 10h42

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