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 :

Geocoding inverse : recherche des cadors en javascript


Sujet :

IGN API Géoportail

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 900
    Par défaut Geocoding inverse : recherche des cadors en javascript
    Salut à tous
    La page http://wnat.fr/geoportail_quel_lieudit.php retourne la localité la plus proche du ctrl+shift+click sur la carte.
    En fait, elle ne le retourne correctement que sous Firefox mais dans IE, Chrome ou Safari .
    Grosso modo, je charge le XML dans une variable avec loadXMLString et je fais des boucles en me basant sur xmlDoc.getElementsByTagName
    Le problème réside dans l'interprétation de la structure XML retournée.
    Avec Firebug, çà semble limpide mais sous Chrome les xmlDoc.getElementsByTagName plantent.
    Bref des yeux neufs ne seraient pas superflus
    Notez qu'une fonction alternative de parsing serait bien car la mienne ressemble à une usine à gaz.
    A+
    Pascal

  2. #2
    Membre chevronné Avatar de tcoupin
    Homme Profil pro
    Ingénieur Géodésien
    Inscrit en
    Octobre 2012
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Géodésien
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 276
    Par défaut
    Bonjour,

    vous pouvez utiliser ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var parser = new Geoportal.Format.XLS();
    var ols = parser.read(loadXMLString);
    ols est un objet de classe Geoportail.OLS.XLS (doc : http://api.ign.fr/tech-docs-js/2.0.1/jsdoc/index.html) qui vous permettra d'accéder aux adresses de la réponse.

    L'avantage de cette méthode est qu'elle utilise le parsing des XML par OpenLayers et est donc multi-navigateur.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 900
    Par défaut
    Thibault
    Aurais-tu un exemple d'utilisation ?

  4. #4
    Membre Expert 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
    Par défaut
    Bonjour,

    ce que tu essayes de faire est déjà écrit dans l'API Géoportail. Pourquoi ne pas faire simplement :


    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
    // creation de la couche avec les paramètres
       var layerResults= new Geoportal.Layer.OpenLS.Core.LocationUtilityService(
                'PositionOfInterest:OPENLS;ReverseGeocode',//layer name
                {
                    maximumResponses:100,
                    formatOptions: {
    ...
                    },
                }) ;
    
    
    ... 
    
    // appel du service de géocodage avec les coordonnées du point saisi
    layerResults.REVERSE_GEOCODE(
      new Geoportal.OLS.Position(new OpenLayers.Geometry.Point(lon,lat)),
      {
          onSuccess: function(resp) {
            console.log(resp) ; // pour voir à quoi ressemble la réponse
            // ici, on traite la réponse quand elle est OK
    
          },
          onFailure: function(resp) {
            console.log(resp) ;
            // ici, on traite la réponse quand elle est en erreur
    
          },
    
      }
    ) ;

    La gestion du protocole JSONP est déjà prise en charge, celles des différents navigateurs aussi...

  5. #5
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 900
    Par défaut
    Gilles
    J'ai créé la page http://wnat.fr/geoportail_quel_lieudit2.php en ajoutant le code suggéré.
    Sur la ligne 138 l'erreur "TypeError: this.format is null" est produite.

    Autrement j'ai du mal à raccrocher cette technique avec celles présentées dans les pages de recherches qui retournent du XML.

    Ma page initiale http://wnat.fr/geoportail_quel_lieudit.php, si elle n'est pas parfaite, est proche du but, hormis le parsing du résultat qui ne fonctionne que sous FF.
    Thibault avait proposé de passer par le parser
    var parser = new Geoportal.Format.XLS();
    var ols = parser.read(loadXMLString);

    La aussi, le renvoi vers la doc de la classe est assez obscure.

    Il y a plein d'exemple permettant de passer les requêtes, en POST en GET... (http://depot.ign.fr/geoportail/api/d...ur/search.html) mais aucun montrant comment exploiter le résultat.

    Je suis assez découragé en fait !

  6. #6
    Membre Expert 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
    Par défaut
    Bonjour Pascal,

    Citation Envoyé par saxrub Voir le message
    J'ai créé la page http://wnat.fr/geoportail_quel_lieudit2.php en ajoutant le code suggéré.
    Sur la ligne 138 l'erreur "TypeError: this.format is null" est produite.
    peux-tu, ligne 283 de ta page, remplacer :

    <script type="text/javascript" src="http://api.ign.fr/geoportail/api/js/2.1.0/Geoportal.js"></script>

    par

    <script type="text/javascript" src="http://api.ign.fr/geoportail/api/js/2.1.0/lib/geoportal/lib/GeoportalStandard.js"></script>


    ça chargera l'API en mode "non compacté" et nous permettra de voir plus précisément où intervient l'erreur levée.

    Aussi, par curiosité, pourquoi charges-tu spécifiquement le script :

    http://depot.ign.fr/geoportail/api/d...metry/Curve.js
    [/quote]


    Autrement j'ai du mal à raccrocher cette technique avec celles présentées dans les pages de recherches qui retournent du XML.

    Ma page initiale http://wnat.fr/geoportail_quel_lieudit.php, si elle n'est pas parfaite, est proche du but, hormis le parsing du résultat qui ne fonctionne que sous FF.
    Thibault avait proposé de passer par le parser
    var parser = new Geoportal.Format.XLS();
    var ols = parser.read(loadXMLString);

    La aussi, le renvoi vers la doc de la classe est assez obscure.

    Il y a plein d'exemple permettant de passer les requêtes, en POST en GET... (http://depot.ign.fr/geoportail/api/d...ur/search.html) mais aucun montrant comment exploiter le résultat.
    on a un chantier en cours pour remettre les exemples à plat afin de les simplifier et de les faire illustrer une fonctionnalité seulement dans la mesure du possible. Tes remarques alimenteront ce chantier...


    Je suis assez découragé en fait !
    ça va revenir

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

Discussions similaires

  1. Geocoding inverse : hiérarchisation des localités retournées
    Par saxrub dans le forum IGN API Géoportail
    Réponses: 6
    Dernier message: 22/09/2014, 21h51
  2. Réponses: 1
    Dernier message: 18/08/2014, 14h40
  3. Rechercher des exercices résolus sur le JavaScript
    Par depanamakudiatu dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/01/2013, 16h48
  4. Recherche des horloges en javascript
    Par grex1 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/11/2009, 16h40
  5. recherches des cours ou des explications sur les algorithmes
    Par Marcus2211 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 19/05/2002, 23h18

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