juliencoquet

Géolocalisation - code postal pour Google Analytics

Oct 23rd, 2014
3,632
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.01 KB | None | 0 0
  1. <script>
  2. // Par Julien Coquet
  3. // Inspiré par Sayf Sharif de Lunametrics
  4. // www.lunametrics.com/blog/2014/07/08/street-level-insight-google-analytics
  5. // N'utilise pas jQuery!
  6.  
  7. function getLocation() {
  8. if (navigator.geolocation) {
  9. /*
  10. Si votre navigateur gère la géolocalisation HTML5,
  11. on utilise la fonction showPosition comme callback
  12. */
  13. navigator.geolocation.getCurrentPosition(showPosition);
  14. } else {
  15. // Géolocalisation non gérée par le navigateur
  16. console.log("Votre navigateur est moisi, changez-en.");
  17. }
  18. }
  19.  
  20. /*
  21. Dans cette fonction de callback, on utilise le combo longitude/latitude
  22. comme paramètre d'API Geonames afin de récupérer le code postal
  23. */
  24.  
  25. function showPosition(position) {
  26. var latitude = position.coords.latitude;
  27. var longitude = position.coords.longitude;
  28. var utilisateur = "juliencoquet"; // à remplacer par votre identifiant Geonames
  29. /*
  30. On compose l'URL d'appel à l'API Geonames
  31. */
  32. var URL = "http://api.geonames.org/findNearbyPostalCodesJSON?lat=";
  33. URL += latitude + "&lng=" + longitude + "&username=" + utilisateur;
  34.  
  35. // On envoie la requête à l'API Geonames
  36. request = new XMLHttpRequest();
  37. request.open('GET', URL, true);
  38.  
  39. request.onload = function() {
  40. if (request.status >= 200 && request.status < 400) {
  41. /*
  42. Super, on a accédé au flux de géolocalisation pour récupérer
  43. le code postal le plus proche.
  44. On va maintenant le passer à la dataLayer GTM comme paramètre
  45. d'un événement personnalisé
  46. */
  47. data = JSON.parse(request.responseText);
  48. dataLayer.push({
  49. 'event': 'geoloc',
  50. 'codePostal': data['postalCodes'][0]['postalCode']
  51. });
  52. } else {
  53. // Connexion au flux réussie mais erreur (pas de flux, URL mal formée, etc)
  54.  
  55. }
  56. };
  57.  
  58. request.onerror = function() {
  59. // Déclencher une alerte si la connexion à échoué
  60. console.log('Impossible de se connecter à l\'API de géolocalisation');
  61. };
  62.  
  63. request.send();
  64.  
  65. }
  66. // On exécute tout le code ci-dessus
  67. getLocation();
  68. </script>
Advertisement
Add Comment
Please, Sign In to add comment