159 votes

Comment obtenir l'emplacement du visiteur (c'est-à-dire le pays) à l'aide de la géolocalisation ?

J'essaie d'étendre la fonction de géolocalisation native

if(navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(position) {
        var latitude = position.coords.latitude;
        var longitude = position.coords.longitude;
    });
}

afin que je puisse utiliser le nom du pays du visiteur (et éventuellement renvoyer un tableau informatif).

Jusqu'à présent, tout ce que j'ai pu trouver, ce sont des fonctions qui affichent une interface google maps, mais aucune ne donne réellement ce que je veux, à l'exception de cette bibliothèque qui a bien fonctionné dans cet exemple mais pour une raison quelconque, il n'a pas fonctionné sur mon ordinateur. Je ne sais pas pourquoi cela s'est mal passé.

Enfin, savez-vous comment renvoyer un tableau contenant des informations telles que le pays, la ville, etc. à partir des valeurs de latitude et de longitude ?

235voto

Ben Dowling Points 2849

Vous pouvez faire appel à mes services, http://ipinfo.io Le Conseil d'administration de la Commission européenne a décidé d'adopter une loi sur la protection de l'environnement, pour cela. Il vous donnera l'IP du client, le nom d'hôte, les informations de géolocalisation (ville, région, pays, code régional, code postal, etc.) et le propriétaire du réseau. Voici un exemple simple qui enregistre la ville et le pays :

$.get("https://ipinfo.io", function(response) {
    console.log(response.city, response.country);
}, "jsonp");

Voici un exemple plus détaillé de JSFiddle qui imprime également les informations complètes de la réponse, afin que vous puissiez voir tous les détails disponibles : http://jsfiddle.net/zK5FN/2/

La localisation sera généralement moins précise que les détails de la géolocalisation native, mais elle ne nécessite aucune autorisation de la part de l'utilisateur.

111voto

PossessWithin Points 532

Vous pouvez le faire de manière native sans dépendre des services IP. Vous pouvez obtenir le fuseau horaire de l'utilisateur comme suit :

Intl.DateTimeFormat().resolvedOptions().timeZone

et extraire le pays de cette valeur. Ici est un exemple de travail sur CodePen.

86voto

Galen Points 20535

Il n'est pas nécessaire de localiser l'utilisateur si vous n'avez besoin que de son pays. Vous pouvez consulter son adresse IP dans n'importe quel service de localisation d'adresses IP (comme maxmind , registre d'ip o ip2location ). La plupart du temps, ces données sont exactes.

Voici un exemple côté client avec Ipregistry (disclaimer, je travaille pour) :

fetch('https://api.ipregistry.co/?key=tryout')
    .then(function (response) {
        return response.json();
    })
    .then(function (payload) {
        console.log(payload.location.country.name + ', ' + payload.location.city);
    });

Si vous avez vraiment besoin de connaître leur position, vous pouvez obtenir leur lat/lng à l'aide de cette méthode, puis lancer une requête Google's o Yahoo's service de géocodage inversé.

39voto

Gil Epshtain Points 1736

Vous pouvez utiliser votre adresse IP pour obtenir votre "pays", votre "ville", votre "fournisseur d'accès", etc.
Il suffit d'utiliser l'un des services web qui vous fournissent une interface simple comme http://ip-api.com qui vous fournit un service JSON à http://ip-api.com/json . Il suffit d'envoyer une requête Ajax (ou Xhr) et d'analyser le JSON pour obtenir les données dont vous avez besoin.

var requestUrl = "http://ip-api.com/json";

$.ajax({
  url: requestUrl,
  type: 'GET',
  success: function(json)
  {
    console.log("My country is: " + json.country);
  },
  error: function(err)
  {
    console.log("Request failed, error= " + err);
  }
});

15voto

Jonathan Points 3225

Voir ipdata.co un service que j'ai construit qui est rapide et dont les performances sont fiables grâce à 10 points d'accès globaux capables de traiter chacun plus de 10 000 demandes par seconde !

Cette réponse utilise une clé API "test" qui est très limitée et uniquement destinée à tester quelques appels. S'inscrire pour obtenir votre propre clé API gratuite et recevoir jusqu'à 1500 requêtes par jour pour le développement.

Cet extrait renverra les détails de votre actuel ip. Pour rechercher d'autres adresses IP, il suffit d'ajouter l'adresse IP à la balise https://api.ipdata.co?api-key=test url ex.

https://api.ipdata.co/1.1.1.1?api-key=test

L'API fournit également une fonction is_eu champ indiquant si l'utilisateur se trouve dans un pays de l'UE.

$.get("https://api.ipdata.co?api-key=test", function (response) {
    $("#response").html(JSON.stringify(response, null, 4));
}, "jsonp");

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<pre id="response"></pre>

Voici le violon ; https://jsfiddle.net/ipdata/6wtf0q4g/922/

J'ai également écrit este Analyse détaillée de 8 des meilleures API de géolocalisation IP.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X