Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <script>
- // Par Julien Coquet
- // Inspiré par Sayf Sharif de Lunametrics
- // www.lunametrics.com/blog/2014/07/08/street-level-insight-google-analytics
- // N'utilise pas jQuery!
- function getLocation() {
- if (navigator.geolocation) {
- /*
- Si votre navigateur gère la géolocalisation HTML5,
- on utilise la fonction showPosition comme callback
- */
- navigator.geolocation.getCurrentPosition(showPosition);
- } else {
- // Géolocalisation non gérée par le navigateur
- console.log("Votre navigateur est moisi, changez-en.");
- }
- }
- /*
- Dans cette fonction de callback, on utilise le combo longitude/latitude
- comme paramètre d'API Geonames afin de récupérer le code postal
- */
- function showPosition(position) {
- var latitude = position.coords.latitude;
- var longitude = position.coords.longitude;
- var utilisateur = "juliencoquet"; // à remplacer par votre identifiant Geonames
- /*
- On compose l'URL d'appel à l'API Geonames
- */
- var URL = "http://api.geonames.org/findNearbyPostalCodesJSON?lat=";
- URL += latitude + "&lng=" + longitude + "&username=" + utilisateur;
- // On envoie la requête à l'API Geonames
- request = new XMLHttpRequest();
- request.open('GET', URL, true);
- request.onload = function() {
- if (request.status >= 200 && request.status < 400) {
- /*
- Super, on a accédé au flux de géolocalisation pour récupérer
- le code postal le plus proche.
- On va maintenant le passer à la dataLayer GTM comme paramètre
- d'un événement personnalisé
- */
- data = JSON.parse(request.responseText);
- dataLayer.push({
- 'event': 'geoloc',
- 'codePostal': data['postalCodes'][0]['postalCode']
- });
- } else {
- // Connexion au flux réussie mais erreur (pas de flux, URL mal formée, etc)
- }
- };
- request.onerror = function() {
- // Déclencher une alerte si la connexion à échoué
- console.log('Impossible de se connecter à l\'API de géolocalisation');
- };
- request.send();
- }
- // On exécute tout le code ci-dessus
- getLocation();
- </script>
Advertisement
Add Comment
Please, Sign In to add comment