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 Géoportail et Powerbuilder


Sujet :

IGN API Géoportail

  1. #1
    Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 12
    Points : 4
    Points
    4
    Par défaut API Géoportail et Powerbuilder
    Bonjour,

    Nous sommes en train d'intégrer l'API Géoportail de l'IGN dans l'environnement de développement Powerbuilder de SAP/Sybase.
    L'objectif est simple : nous devons afficher une carte IGN (couche carte + couche photo), centrée sur un point donné et avec ses outils standards de navigation, et récupérer dans l'application appelante les coordonnées (longitude/latitude) du point cliqué par l'utilisateur.

    Nous avons écrit une page HTML (cf code ci-dessous), l'avons installée sous IIS : ca marche parfaitement.

    L'application sous PowerBuilder se connecte à cette même page sur ce même serveur IIS via un contrôle OLE "Microsoft Web Browser". Dans un premier temps, cette page se charge et fonctionne bien. Le problème survient quand on quitte cette page : l'erreur s'affiche (cf pièce jointe), et une fois qu'elle s'est affichée, elle se réaffiche systématiquement quand on ré-essaye d'ouvrir la page. Pour retrouver un fonctionnement "normal", il suffit d'effacer tout l'historique de navigation sous InternetExplorer - mais cela ne fait que réparer le premier chargement de la page, puisque l'erreur réapparait à la fermeture de la page et aux ré-ouvertures suivantes.

    Quelqu'un aurait-il une idée de l'origine de cette erreur et de comment nous pouvons la régler ?

    Merci

    Bruno

    Code de la page HTML :

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>IGN</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <meta id="SybLatt" name="SybLatt" content=""/>
    <meta id="SybLong" name="SybLong" content=""/>
    <link rel="shortcut icon" type="image/x-icon" href="img/favicon.ico"/>
    <style type="text/css">
    div#viewerDiv {width:800px; height:600px; background-color:white; background-position:center center; background-repeat:no-repeat; background-image:url(http://api.ign.fr/geoportail/api/js/latest/theme/geoportal/img/loading.gif);}
    </style>
    <script type="text/javascript" src="http://api.ign.fr/geoportail/api/js/latest/Geoportal.js"></script>
    <script type="text/javascript">
    var iv= " + string(now()) + ";
    window.onload= function() {
    iv= Geoportal.load( 'viewerDiv', ['8h332erd0cnbf39x6kmx4uva'], {place:"Touille"}, 10,
    {//LoaderOptions
    language:'fr',
    viewerClass:'Geoportal.Viewer.Default',
    onView: function() {
    OpenLayers.Control.Click= OpenLayers.Class(OpenLayers.Control, {
    defaultHandlerOptions:{'single': true, 'double': false, 'pixelTolerance': 0, 'stopSingle': false, 'stopDouble': false},
    initialize: function(options) {
    OpenLayers.Control.prototype.initialize.apply(this,arguments);
    this.handlerOptions= OpenLayers.Util.extend({},this.defaultHandlerOptions);
    this.handler= new OpenLayers.Handler.Click(this, {'click': this.trigger}, this.handlerOptions);
    },
    trigger: function(e) {
    var lonlat= this.map.getLonLatFromViewPortPx(e.xy).transform( this.map.getProjection(), OpenLayers.Projection.CRS84);
    document.getElementById("SybLatt").setAttribute("content",lonlat.lat.toString() );
    document.getElementById("SybLong").setAttribute("content",lonlat.lon.toString() );
    }
    });
    var monClic= new OpenLayers.Control.Click({autoActivate:true});
    this.getViewer().getMap().addControl(monClic);
    }
    }
    );
    };
    </script>
    </head>
    <body>
    <div id="viewerDiv"></div>
    </body>
    </html>
    Images attachées Images attachées  

  2. #2
    Membre éclairé Avatar de jrenard
    Homme Profil pro
    Webdesigner / développeur front-end
    Inscrit en
    Septembre 2013
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Webdesigner / développeur front-end
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2013
    Messages : 456
    Points : 894
    Points
    894
    Par défaut
    Bonjour,

    De mon coté je n'arrive pas à reproduire cette erreur. En même temps sur la seule base de la page HTML et sans l'environnement de travail complet il est difficile de reproduire totalement le comportement que vous avez de votre coté

    Une piste à essayer : le placement des scripts dans la page HTML. Si certains scripts peuvent effectivement trouver leur meilleure place dans la balise head du HTML, notamment ceux faisant appel à des bibliothèques comme c'est le cas pour l'appel à Geoportal.js, en revanche les scripts modifiant en profondeur le contenu du document HTML trouvent plutôt leur place dans la balise body, juste avant la fermeture de cette balise, de manière à être appelés une fois seulement que les éléments HTML basiques ont été créés. Du coup, tout le contenu de script personnel situé entre les deux balises <script type="text/javascript">...</script> aurait plus sa place si il était bougé (balises script incluses bien entendu) entre la div <div id="viewerDiv"></div> et la balise fermante </body>.

    Vous pouvez déjà tester si une telle modification résout l'erreur et nous proposer un retour d'expérience (très honnêtement je ne pense pas que cela règle le problème, mais sait-on jamais). Dans tous les cas vous aurez au moins un code plus fidèle aux standards du Web ce qui peut éviter de potentielles mauvaises surprises.

  3. #3
    Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Et merci de cette réponse.
    Mais cela ne règle rien : j'ai réécrit le source HTML comme proposé (cf source HTML ci-dessous), en supprimant de plus la gestion du clic pour simplifier et éliminer une cause potentielle d'erreur, et le résultat est le même.
    Si quelqu'un a une autre idée ...
    Il est possible de prendre le contrôle du poste de développement par Teamviewer, si cela peut aider.

    Merci et cordialement,

    Bruno

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>IGN</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <link rel="shortcut icon" type="image/x-icon" href="img/favicon.ico"/>
    <style type="text/css">
    div#viewerDiv {width:800px; height:600px; background-color:white; background-position:center center; background-repeat:no-repeat;
    background-image:url(http://api.ign.fr/geoportail/api/js/.../loading.gif);
    }
    </style>
    <script type="text/javascript" src="http://api.ign.fr/geoportail/api/js/latest/Geoportal.js"></script>
    </head>
    <body>
    <div id="viewerDiv"></div>
    <script type="text/javascript">
    window.onload= function() {iv=Geoportal.load('viewerDiv', ['8h332erd0cnbf39x6kmx4uva'],{place:"Toulouse"}, 10, {});};
    </script>
    </body>
    </html>

  4. #4
    Membre confirmé Avatar de acarme
    Femme Profil pro
    Ingénieur d'études en Géomatique
    Inscrit en
    Avril 2013
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études en Géomatique
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 237
    Points : 522
    Points
    522
    Par défaut
    Bonjour,

    afin d'affiner l'erreur, pouvez-vous remplacer http://api.ign.fr/geoportail/api/js/latest/Geoportal.js par http://api.ign.fr/geoportail/api/js/...talStandard.js, qui est la version non compressée de l'API (la page sera donc plus lente)

  5. #5
    Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Re,

    Le chargement est effectivement nettement plus long (+- 10 sec au lieu d'1 ou 2), et l'erreur est maintenant celle-ci : Nom : IGNErr.JPG
Affichages : 239
Taille : 17,3 Ko

    Merci !

  6. #6
    Membre confirmé Avatar de acarme
    Femme Profil pro
    Ingénieur d'études en Géomatique
    Inscrit en
    Avril 2013
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études en Géomatique
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 237
    Points : 522
    Points
    522
    Par défaut
    D'après l'erreur, il semble qu'il y a un soucis sur la destruction d'objet.
    Pour avancer encore un peu sur le problème, pouvez réessayer en remplaçant {place:"Toulouse"} par null ?

  7. #7
    Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Effectivement, ne pas mettre de "place" fait disparaitre le problème (et ce avec les 2 versions de l'API).

    Mais j'ai besoin de centrer la carte sur une commune, qui est sélectionnée au préalable par l'utilisateur dans l'application "maitre" (sous Powerbuilder, donc en dehors de l'API IGN)

    Quelle solution ?

    Merci

  8. #8
    Membre confirmé Avatar de acarme
    Femme Profil pro
    Ingénieur d'études en Géomatique
    Inscrit en
    Avril 2013
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études en Géomatique
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 237
    Points : 522
    Points
    522
    Par défaut Une possibilité
    En attendant que l'on trouve comment résoudre le problème, vous pouvez le contourner en utilisant le service de geocodage décrit ici : http://api.ign.fr/tech-docs-js/fr/de...ur/search.html dans votre application "maitre" afin de récupérer les latitudes et longitudes des lieux saisis par les utilisateurs.
    Ensuite au lieu de mettre {place:"Toulouse"}, il faudra mettre { lon:1.444, lat:43.605 }.

  9. #9
    Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Effectivement, suite à un test rapide, il n'y a pas d'erreur en spécifiant la localisation par la longitude/latitude.

    Je vais essayer d'intégrer cet appel par les coordonnées, mais je ne sais pas pour le moment (je vais chercher) comment intégrer un appel à une requête POST/GET dans mon application, en espérant que ce soit possible puisque ce n'est pas du tout un environnement de développement orienté web et que je ne l'y ai jamais tenté.

    J'ai par contre peut-être trouvé comment utiliser le service "auto-completion" décrit dans l'URL indiquée, mais ca ne marche pas dans mon appli, et j'obtiens effectivement une erreur "HTTP403" quand je copie dans InternetExplorer l'URL donnée en exemple : http://wxs.ign.fr/VOTRE_LICENCE/ols/...mumResponses=5, en remplacant "VOTRE_LICENCE" par la clé de développement que j'utilise par ailleurs dans mes tests.

    Si cela signifie que ma clé n'est pas valide pour ce type d'usage des services du géoportail, que dois-je faire ? Et sinon ?

    Merci pour votre rapidité à répondre et votre efficacité.

  10. #10
    Membre confirmé Avatar de acarme
    Femme Profil pro
    Ingénieur d'études en Géomatique
    Inscrit en
    Avril 2013
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études en Géomatique
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 237
    Points : 522
    Points
    522
    Par défaut
    Citation Envoyé par PHYLUM Voir le message

    J'ai par contre peut-être trouvé comment utiliser le service "auto-completion" décrit dans l'URL indiquée, mais ca ne marche pas dans mon appli, et j'obtiens effectivement une erreur "HTTP403" quand je copie dans InternetExplorer l'URL donnée en exemple : http://wxs.ign.fr/VOTRE_LICENCE/ols/...mumResponses=5, en remplacant "VOTRE_LICENCE" par la clé de développement que j'utilise par ailleurs dans mes tests.

    Si cela signifie que ma clé n'est pas valide pour ce type d'usage des services du géoportail, que dois-je faire ? Et sinon ?
    Bonjour,

    votre licence vous permet d'accéder au service d'autocomplétion au même titre qu'au service de geocodage.
    Le problème vient juste de la sécurisation. Je m'explique, votre licence vous permet d'utiliser ces services à partir d'une URL spécifique (le referer) correspondant à votre page web, or en utilisant l'url directement dans le navigateur, il n'y a pas la valeur associée à votre contrat.

    Pour pouvoir tester manuellement le service, il existe des outils tels que Poster sur Firefox qui permettent d'ajouter un referer dans l'entête de la requête.

  11. #11
    Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Merci de vos réponses et de votre aide, tout marche OK : récupération de longitude/lattitude à partir du nom de la commune, et affichage de la carte sans erreur si on en demande le centrage à partir de cette longitude/lattitude

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

Discussions similaires

  1. Bienvenue sur le forum IGN API Géoportail
    Par achaumet dans le forum IGN API Géoportail
    Réponses: 3
    Dernier message: 21/09/2021, 17h52
  2. Version RC4: OpenLayers et l'API Géoportail (minimum)
    Par mga_geo dans le forum IGN API Géoportail
    Réponses: 5
    Dernier message: 10/03/2010, 16h03
  3. API Géoportail plein écran
    Par oncle sam dans le forum IGN API Géoportail
    Réponses: 6
    Dernier message: 19/12/2009, 13h56
  4. Concours de la meilleure application à partir de l'API Géoportail
    Par JP-Lagrange dans le forum IGN API Géoportail
    Réponses: 0
    Dernier message: 19/11/2009, 12h25
  5. Prix Api Géoportail pour accés fermé
    Par julien75000 dans le forum IGN API Géoportail
    Réponses: 2
    Dernier message: 17/07/2009, 18h20

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