11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour a tous,

Je viens vers vous, pour savoir si ya moyen de geolocaliser un visiteur par IP ?
J'ai essayé avec Google Ajax APIs, mais ça n'a pas l'air de marcher.
Voici le test que je fais :


if(google.loader.ClientLocation)
  {
    lat = google.loader.ClientLocation.latitude;
    lon = google.loader.ClientLocation.longitude;
    ville = google.loader.ClientLocation.address.city;
    region = google.loader.ClientLocation.address.region;
    pays = google.loader.ClientLocation.address.country;
    payscode = google.loader.ClientLocation.address.country_code;
    alert('YES');
  }
  else
  {
    alert('NO');
  }


Avez vous des pistes ?

merci,
Modérateur
Bonjour,

Est-ce qu'une alternative payante pourrait t'intéresser? Je peux t'en proposer une que j'utilise.
Modifié par Tony Monast (28 Apr 2012 - 15:44)
Merci Tony, par ta réponse.
j'ai trouvé une autre solution, toujours avec GG ajax Api, mais ce qui est chiant, c'est que le navigateur te demande à chaque fois d'autoriser la localisation.
Avec la solution payante, on aura cette confirmation aussi ? sinon, je vais voir avec le client si ça l'interesse.

merci
J'utilise quova.com pour ça. Il est gratuit pour moins de 1000 requêtes par mois, payant au delà. Dans mon cas c'est largement suffisant vu que j'utilise la geolocalisation seulement quand un membre crée un compte.

integrateurweb2 a écrit :

Avec la solution payante, on aura cette confirmation aussi ? sinon, je vais voir avec le client si ça l'interesse.


Avec Quova, non, pas besoin de confirmation.
Modifié par jb_gfx (28 Apr 2012 - 18:04)
Modérateur
La solution payante que nous utilisons est celle de MaxMind. Côté serveur, il suffit de fournir à leur API l'adresse IP du visiteur et on obtient diverses informations comme la ville, la province et le pays. Il n'y a aucune interaction requise pour l'utilisateur. Je suis plutôt satisfait des résultats même si ça reste approximatif. Nous avons payé pour x requêtes et j'utilise un système de cache d'une durée déterminée pour ne pas faire deux requêtes pour la même adresse IP. Tu peux essayer leur démo.

Ça dépend aussi du marché ciblé et du contexte d'utilisation (ordinateurs ou téléphones mobiles). En HTML5, il y a une API de géolocalisation, mais j'imagine que l'utilisateur doit l'accepter. Je n'ai pas approfondie mes recherches là-dessus.
Salut je vais compléter la réponse de tony....

L’avantage de MaxMind est que tu peux avoir le fichier en local, ce qui évite aussi de faire x requètes. Dans les site où je l'utilise, il y a entre 5000 et 20000 leads par jour... le résultat est en effet assez approximatif, mais pour autant suffisant pour se faire une idée de la région et de la ville... surtout dans les régions où les dslan sont nombreux car la localisation est plus précise.

Je fais une mise à jour par mois du fichier gratuit, et j'utilise l'api php fournie.

Et c'est vraiment bien... je ne vois pas l'intérêt de la version payante.


Les autres systèmes qui tourne sur navigateur demandes tous l'autorisation de l'utilisateur, en revanche pour en avoir testé plusieurs... autant avec maxmind je suis à pratiquement 150 km de chez moi (région pas très desservie Smiley cligne ) autant avec les api navigateurs je suis à 5 kms...

Donc tout dépend aussi de la précision et de l'intérêt que tu va porter à cette information.

Pour nous c'est une situation régionale qui nous intéresse donc maxmind suffit...
Bonjour,
integrateurweb2 a écrit :

j'ai trouvé une autre solution, toujours avec GG ajax Api, mais ce qui est chiant, c'est que le navigateur te demande à chaque fois d'autoriser la localisation.

en test local, le partage est a confirmer à chaque fois pour des raisons de sécurité j'imagine , Ton premier exemple devrait fonctionner en ligne avec une clé unique et sans te redemander confirmation à chaque fois. .

Personnellement je me sert de HTML5(enfin javascript en testant si le navigateur a cette fonction) pour la géolocalisation. Les données utilisables sont limités a :
lattitude, longitude, orientation, altitude, vitesse de déplacement d'un point a un autre mais point d'adresse postale Smiley smile .
http://dev.w3.org/geo/api/spec-source.html#coordinates_interface
http://dev.w3.org/geo/api/ a écrit :
The geographic coordinate reference system used by the attributes in this interface is the World Geodetic System (2d) [WGS84]. No other reference system is supported.


Sur un mobile avec une puce GPS activé elle seront trés précises (a défaut il y a moyen de récupérer les dernières enregistrer sous les cieux ) et pour un PC connecté, ce sera le point ou son fournisseur le relis à internet (quelques kms) , donc pas d'adresse du visiteur mais le quartier ou du moins relais le plus proche).

Ces coordonnées récupérées peuvent ensuite être utiliser avec googlemaps ou autre service du genre (mais tu connais déjà) payant ou gratuit , et compléter/remplacer la localisation par IP .

test de base javascript :

<script type="text/javascript">
    function loadGeo() {
        if(navigator.geolocation) {
            document.getElementById("geole").innerHTML = "(votre navigateur permet la géolocalisation)";
            navigator.geolocation.getCurrentPosition(updateLocation);
        }
    }
    function updateLocation(position) {
        var latitude = position.coords.latitude;
        var longitude = position.coords.longitude;
        if (!latitude || !longitude) {
            document.getElementById("geole").innerHTML = "(géolocalisation actuellement indisponible) ";
            return;
        }

        document.getElementById("caught").innerHTML = latitude +' , '+longitude;
    }

window.onload = function() {   loadGeo();  }
</script>
<p id="geole"> JavaScript Inactif </p>
<p id="caught"> Latitude et Longitude ici si JavaScript ou géolocalisation supporté/autorisé .</p>
Tony Monast a écrit :
Ça dépend aussi du marché ciblé et du contexte d'utilisation (ordinateurs ou téléphones mobiles). En HTML5, il y a une API de géolocalisation, mais j'imagine que l'utilisateur doit l'accepter. Je n'ai pas approfondie mes recherches là-dessus.


Comparé a Quova ou Maxmind (que j'avais aussi testé) je trouve que la géolocalisation en HTML 5 est, au jour d’aujourd’hui, complètement bidon/erronée/à l'ouest, sur un device sans GPS intégré (et en plus, l'utilisateur doit effectivement accepter à chaque fois).

Par contre Quova donnait de meilleurs résultats que MaxMind, mais ça vient peut être du fait que je suis en Europe. Faudrait faire des tests à plus grande échelle.
Modifié par jb_gfx (03 May 2012 - 23:57)
Modérateur
Quova/maxmind peuvent être bidon, comme toutes les technos se basant sur l'ip. Par exemple maxmind me situe à Paris Oo alors que présentement à Strasbourg. D'ailleurs, plus ces systèmes deviennent efficaces, plus ils deviennent limite sur le plan légal et éthique.

Pour l'html5, il doit bien y avoir acceptation de l'utilisateur (encore heureux). :
a écrit :
For both getCurrentPosition and watchPosition, the implementation must never invoke the successCallback without having first obtained permission from the user to share location. Furthermore, the implementation should always obtain the user's permission to share location before executing any of the getCurrentPosition or watchPosition steps described above. If the user grants permission, the appropriate callback must be invoked as described above.
kustolovic a écrit :
Quova/maxmind peuvent être bidon, comme toutes les technos se basant sur l'ip. Par exemple maxmind me situe à Paris Oo alors que présentement à Strasbourg. D'ailleurs, plus ces systèmes deviennent efficaces, plus ils deviennent limite sur le plan légal et éthique.


Oui, ils peuvent, en attendant ils ont 5 ou 10 ans d'avance sur la géolocalisation en HTML5. Donc, pour l'instant c'est comme ça. Smiley cligne Et puis comme je l'ai dit Quova donne de biens meilleurs résultats que MaxMind (PM moi ton IP si tu veux que je teste).

Pour la validation par l'utilisateur, dans Windows 8 on peut l'activer pour accepter automatiquement à chaque fois. Pour les autres plateformes je sais pas. Mais dans certains cas (comme le mien) ce n'est pas acceptable.

Par contre ça dépend vraiment des besoins et de chaque cas, personnellement je m'en sers comme un filtre (parmi d'autres) pour savoir si un utilisateur est localisé dans un pays autorisé sur mon site. Après chacun ses besoins.
Modifié par jb_gfx (04 May 2012 - 01:33)