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 :

Appeler deux services sur la même action


Sujet :

IGN API Géoportail

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2018
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 75
    Points : 37
    Points
    37
    Par défaut Appeler deux services sur la même action
    Bonjour

    J'utilise GpPluginOpenLayers (sur Open Layers 4.4.2) et je souhaite récupérer, au clic, les infos suivantes : longitude, latitude, altitude, INSEE

    Je sais récupérer longitude + latitude + altitude en faisant appel au service Gp.Services.getAltitude en utilisant le code suivant :
    Code JavaScript : 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
    map.on('singleclick',function (e) {
    var clickCoord = e.coordinate;
    var clickCoordLonLat = ol.proj.transform(clickCoord, map.getView().getProjection(), 'EPSG:4326');
    	Gp.Services.getAltitude({
    		apiKey : "maclé",
    		positions : [ // positions pour le calcul alti
    			{ lon: clickCoordLonLat[0], lat: clickCoordLonLat[1] },
    		],
    		onSuccess : function (result) {
                //renvoi dans le formulaire de lat et lon arrondies à 6 chiffres et altitude arrondi à l'entier
    			document.monform.lon.value=Math.round(1000000*clickCoordLonLat[0])/1000000;
    			document.monform.lat.value=Math.round(1000000*clickCoordLonLat[1])/1000000;
    			document.monform.alt.value=Math.round(result.elevations[0].z);
    		}
    	});
    }
    );

    Je sais, par ailleurs, récupérer l'INSEE, en faisant appel au service Gp.Services.reverseGeocode, avec le code suivant puis extraire l'INSEE avec un preg_match
    Code JavaScript : 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
    map.on('singleclick',function (e) {
    var clickCoord = e.coordinate;
    var clickCoordLonLat = ol.proj.transform(clickCoord, map.getView().getProjection(), 'EPSG:4326');
    var fo = {type: ["PositionOfInterest"]};
        Gp.Services.reverseGeocode({
          position: {
            x: clickCoordLonLat[0],
            y: clickCoordLonLat[1]
          },
          filterOptions: fo,
          apiKey: "maclé",
          onSuccess: function(result) {
            document.monform.insee.innerHTML = "<p>" + JSON.stringify(result) + "</p>"
          },
          onFailure: function(error) {
            document.monform.insee.innerHTML = "<p>" + error + "</p>"
          }
        });
    }
    );

    Mais, je n'arrive pas à lier les deux dans la même action, c'est à dire remplir mes 4 champs sur le même clic de souris

    Je vous remercie de vos suggestions

    Dom

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 119
    Points : 1 764
    Points
    1 764
    Par défaut
    Bonjour Dom,
    En mettant les codes à l'intérieur d'un seul map.on cela ne fonctionne pas ?

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    map.on('singleclick',function (e) {
      code1
    }
    map.on('singleclick',function (e) {
      code2
    }
    nouvelle version
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    map.on('singleclick',function (e) {
      code1
      code2
    }
    Marc

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2018
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 75
    Points : 37
    Points
    37
    Par défaut
    Bonjour Marc

    Merci pour ta réponse.
    J'avais bien essayé de regrouper les deux appels dans le même map.
    Mais ça ne fonctionne pas, la page ne renvoie que latitude / longitude / altitude dans les champs du formulaire ; l'appel à Gp.Services.reverseGeocode semble ignoré

    Voici le code avec les deux appels :
    Code JavaScript : 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
    map.on('singleclick',function (e) {
    var clickCoord = e.coordinate;
    var clickCoordLonLat = ol.proj.transform(clickCoord, map.getView().getProjection(), 'EPSG:4326');
    var fo = {type: ["PositionOfInterest"]};
    	Gp.Services.getAltitude({
    		apiKey : "5tddd1s4k1a9vr174isjuy2d",
    		positions : [ // positions pour le calcul alti
    			{ lon: clickCoordLonLat[0], lat: clickCoordLonLat[1] },
    		],
    		onSuccess : function (result) {
                //renvoi dans le formulaire de lat et lon arrondies à 6 chiffres et altitude arrondi à l'entier
    			document.monform.lon.value=Math.round(1000000*clickCoordLonLat[0])/1000000;
    			document.monform.lat.value=Math.round(1000000*clickCoordLonLat[1])/1000000;
    			document.monform.alt.value=Math.round(result.elevations[0].z);
    			document.monform.lat_lon.value=Math.round(1000000*clickCoordLonLat[1])/1000000+','+Math.round(1000000*clickCoordLonLat[0])/1000000;
    		}
    	});
        Gp.Services.reverseGeocode({
          position: {
            x: clickCoordLonLat[0],
            y: clickCoordLonLat[1]
          },
          filterOptions: fo,
          apiKey: "5tddd1s4k1a9vr174isjuy2d",
          onSuccess: function(result) {
            document.monform.insee.innerHTML = "<p>" + JSON.stringify(result) + "</p>"
          },
          onFailure: function(error) {
            document.monform.insee.innerHTML = "<p>" + error + "</p>"
          }
        });
    }
    );

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2018
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 75
    Points : 37
    Points
    37
    Par défaut
    Je complète ma réponse du précédent post ; j'ai fait passer la déclaration de variable "fo" juste avant l'appel à Gp.Services.reverseGeocode au lieu de la mettre au début et ça fonctionne !

    Voici le code OK

    Merci pour ton intervention qui m'a relancé !

    Code JavaScript : 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
    map.on('singleclick',function (e) {
    var clickCoord = e.coordinate;
    var clickCoordLonLat = ol.proj.transform(clickCoord, map.getView().getProjection(), 'EPSG:4326');
    	Gp.Services.getAltitude({
    		apiKey : "5tddd1s4k1a9vr174isjuy2d",
    		positions : [ // positions pour le calcul alti
    			{ lon: clickCoordLonLat[0], lat: clickCoordLonLat[1] },
    		],
    		onSuccess : function (result) {
                //renvoi dans le formulaire de lat et lon arrondies à 6 chiffres et altitude arrondi à l'entier
    			document.monform.lon.value=Math.round(1000000*clickCoordLonLat[0])/1000000;
    			document.monform.lat.value=Math.round(1000000*clickCoordLonLat[1])/1000000;
    			document.monform.alt.value=Math.round(result.elevations[0].z);
    			document.monform.lat_lon.value=Math.round(1000000*clickCoordLonLat[1])/1000000+','+Math.round(1000000*clickCoordLonLat[0])/1000000;
    		}
    	});
    var fo = {type: ["PositionOfInterest"]};
        Gp.Services.reverseGeocode({
          position: {
            x: clickCoordLonLat[0],
            y: clickCoordLonLat[1]
          },
          filterOptions: fo,
          apiKey: "5tddd1s4k1a9vr174isjuy2d",
          onSuccess: function(result) {
            document.monform.insee.innerHTML = "<p>" + JSON.stringify(result) + "</p>"
          },
          onFailure: function(error) {
            document.monform.insee.innerHTML = "<p>" + error + "</p>"
          }
        });
    }
    );

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

Discussions similaires

  1. Deux squid sur le même serveur
    Par photorelief dans le forum Administration système
    Réponses: 5
    Dernier message: 21/07/2009, 11h39
  2. Comment disposer deux formulaires sur la même ligne ??
    Par soad029 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 05/05/2007, 04h14
  3. [Thread] deux joueurs sur le même clavier
    Par homeostasie dans le forum SDL
    Réponses: 16
    Dernier message: 04/11/2006, 15h30
  4. Réponses: 6
    Dernier message: 28/09/2005, 10h24
  5. installation de deux serveurs sur une même machine
    Par desdak dans le forum Installation
    Réponses: 1
    Dernier message: 29/06/2005, 23h09

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