Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Géolocalisation

  • Cefaliyon
  • Cefaliyon's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
6 years 8 months ago #157144 by Cefaliyon
Géolocalisation was created by Cefaliyon
Bonjour,

Je cherche urgemment un code JavaScript me permettant de récuperer ma position dans une question (lattitude, longitude) à partir de l'api JavaScript de google map. Quelqu'un peut-il m'aider ?
The topic has been locked.
  • Nickko
  • Nickko's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
6 years 8 months ago #157147 by Nickko
Replied by Nickko on topic Géolocalisation
Dans ton cas "urgemment" je te conseille de te tourner vers un développeur professionnel ou d'introduire une demande de feature payante auprès de l'équipe de Limesurvey (menu en haut de la page, communauté, bugtracker).

Sinon, tu peux nous poser la question, ici sur le forum d'entraide entre utilisateur mais dans ce cas, il est préférable d'être courtois et patient, les terms comme urgents, sont malvenus.

Tu as regardé dans le manuel ?
Tu as essayé le type de question "carte" ?

Nickko
Head of ergonomics, UX & UI.
The topic has been locked.
  • Cefaliyon
  • Cefaliyon's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
6 years 8 months ago #157148 by Cefaliyon
Replied by Cefaliyon on topic Géolocalisation
Bonjour Nickko,

Je m'excuse d'avoir été maladroit. Je ne m'attendais pas à une réponse aussi rapide et je t'en remercie.

J'ai essayé la carte mais elle ne me convient pas. Avec la carte, je dois connaître ma position, la chercher dans la carte et cliquer dessus pour qu'elle me renvoie mes coordonnées. Ce que je souhaite faire c'est plutôt l'inverse, c'est à dire récupérer automatiquement mes coordonnés (latitude, longitude) et afficher ma position mais pas nécessairement sur la carte.

J'ai fait quelques rechercher et j'ai vu que tu avais traité un sujet semblable et vous étiez allez plus loin d'ailleurs. Je ne m'y connaît pas trop en JavaScript et je te serai reconnaissant de m'aider à résoudre mon souci.
D'avance merci.
The topic has been locked.
  • Nickko
  • Nickko's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
6 years 8 months ago #157149 by Nickko
Replied by Nickko on topic Géolocalisation
Je ne pense pas que ce soit moi qui ai été plus loin, j'avoue, maintenant que je comprends ta demande que je ne sais pas trop quoi te proposer. Je pense que Denis, Louis ou Benoît devraient t'être plus utiles que moi.

Nickko
Head of ergonomics, UX & UI.
The topic has been locked.
More
6 years 8 months ago #157195 by Ben_V
Replied by Ben_V on topic Géolocalisation
Salut,


Le code javascript contenu dans la discussion suivante, bien qu'assez ancien semble toujours valide...
www.limesurvey.org/forum/can-i-do-this-w...ving-gps-coordinates

Sinon essaie de demander de l'aide ici dans le forum anglais car @MSMSEVN semble avoir réussi il y a peu à obtenir ce que tu recherches en se basant sur cette même discussion ;)

Benoît

EM Variables => bit.ly/1TKQyNu | EM Roadmap => bit.ly/1UTrOB4
Last Releases => 2.6x.x goo.gl/ztWfIV | 2.06/2.6.x => bit.ly/1Qv44A1
Demo Surveys => goo.gl/HuR6Xe (already included in /docs/demosurveys)
The topic has been locked.
  • Cefaliyon
  • Cefaliyon's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
6 years 8 months ago #157240 by Cefaliyon
Replied by Cefaliyon on topic Géolocalisation
Merci Ben_V.
C'est une solution qui doit marcher je pense. Je n'ai pas vu ta réponse plus tôt et je me suis démerdé tout seul pour apprendre les bases du JavaScript en 2 jours et résoudre mon problème. Je suis arrivé à un résultat satisfaisant et je le partage avec vous.
Ma solution permet de récupérer les coordonnées géographiques, de les insérer directement dans la réponse d'une question de type zone de texte court ou long et d'afficher la position récupérée sur une carte. Je vous laisse découvrir :
Code:
<script type="text/javascript" charset="utf-8">
 
var xlat ; var xlng ;
  function getLocation() {
   if(navigator.geolocation)
{
    navigator.geolocation.getCurrentPosition(showLocation, errorHandler);
}
else
{
    alert('Votre navigateur ne prend malheureusement pas en charge la géolocalisation.');
}
}
function showLocation(position)
{
    alert('Latitude : '+ position.coords.latitude +' - Longitude : '+ position.coords.longitude,"Votre position a été localisée avec succès");
           xlat = position.coords.latitude ;
           xlng = position.coords.longitude;
           var Idt = "{SGQ}";
           document.getElementById("answer"+Idt).value= xlat+", "+xlng;
}
 
function errorHandler(error)
{
    // On log l'erreur sans l'afficher, permet simplement de débugger.
    alert('Geolocation error : code '+ error.code +' - '+ error.message);
 
    // Affichage d'un message d'erreur plus "user friendly" pour l'utilisateur.
   // alert('Une erreur est survenue durant la géolocalisation. Veuillez réessayer plus tard ou contacter le support.');
}
 
function maPosition(){
  if(xlat==null &amp;&amp; xlng==null) {
    alert("Vous devez vous géolocaliser d'abord !");
  }
  else {
     alert("Longitude : "+xlng, "Latitude : "+xlat);
  }
}
 
function afficherCarte(){
   if(xlat==null &amp;&amp; xlng==null) {
    alert("Vous devez vous géolocaliser d'abord !");
  }
  else {
    myMap(xlat,xlng);
  }
}
</script>
 
<p id="paragraphe_01">
  <input id="Geolocaliser" onclick="getLocation()" type="button" value="Geolocaliser" /> 
  <input id="Coordonnees" onclick="maPosition()" type="button" value="Voir Coordonnés" /> 
  <input id="Carte" onclick="afficherCarte()" type="button" value="Afficher sur la carte" />
</p>
 
<script type="text/javascript" charset="utf-8">
  document.getElementById("Geolocaliser").style.color = "black";
  document.getElementById("Coordonnees").style.color = "black";
  document.getElementById("Carte").style.color = "black";
</script>
 
<div id="googleMap" style="width:100%;height:400px;"> </div>
<script>
function myMap(nlat,nlng) {
  var myLatlng = new google.maps.LatLng(nlat,nlng);
  var mapOptions = {
    zoom: 16,
    center: myLatlng
  }
  var map = new google.maps.Map(document.getElementById("googleMap"), mapOptions);
 
  var marker = new google.maps.Marker({
    position: myLatlng,
    title:"Ma Position"
  });
 
  // To add the marker to the map, call setMap();
  marker.setMap(map);
}
 
</script> <script src="https://maps.googleapis.com/maps/api/js?key=VotreCléGoogleMap&amp;callback=myMap"></script>
The topic has been locked.
  • Cefaliyon
  • Cefaliyon's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
6 years 8 months ago #157241 by Cefaliyon
Replied by Cefaliyon on topic Géolocalisation
Bon à savoir :

- Vous devez remplacer "VotreCléGoogleMap" par votre propre clé dans le code que j'ai posté précédemment ;
- Si vous êtes en http (donc site pas sécurisé) le navigateur Chrome refusera de laisser récupérer votre position ;
- LimeSurvey est tout simplement magic et on peut aller loin avec le fameux et puissant outil "Expression Manager" et du JavaScript si nécessaire...

Merci à tous et excellente soirée !
The following user(s) said Thank You: Ben_V
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
6 years 8 months ago #157246 by DenisChenu
Replied by DenisChenu on topic Géolocalisation
Salut,

En fait à la base : si tu n'as besoin que de la latitude et la longitude : le script de tpartner est tout à fait celui qu'il te faut.
Après j'ai bien un mini projet (c'est à dire, même sans financement) de proposer un plugin pour l'ajouter automatiquement au questions de type cartos de LimeSurvey.

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
The following user(s) said Thank You: Cefaliyon
The topic has been locked.
Moderators: Nickko

Lime-years ahead

Online-surveys for every purse and purpose