72 votes

Obtenir le pays à partir de la latitude et de la longitude

Je voudrais savoir comment obtenir le nom du pays à partir de la latitude et de la longitude en utilisant JavaScript. Je suis ouvert à l'utilisation de l'API JavaScript de Google Maps. Puis-je également obtenir la ville et le code postal ?

Edit : Mon objectif est de remplir automatiquement le champ d'adresse, et non de l'afficher sur une carte.

0 votes

80voto

Christian Points 2047

Je ne sais pas si cela fonctionne avec google maps, mais il existe un service web qui renvoie un code pays et prend comme paramètres le lat et le long.

Voici un exemple :
http://api.geonames.org/countryCodeJSON?lat=49.03&lng=10.2&username=demo

Renvoie une donnée JSON : {"languages":"de","distance":"0","countryCode":"DE","countryName":"Germany"}

J'ai aussi trouvé une petite description :

Le code pays ISO d'un point donné.

  • Type de service Web : REST
  • Url : ws.geonames.org/countryCode?
  • Paramètres : lat , lng , type , lang , radius (tampon en km pour le pays le plus proche dans les zones côtières)
  • Résultat : renvoie le code pays ISO pour la latitude/longitude donnée.

Avec le paramètre type=xml ce service retourne un document xml avec le code pays iso et le nom du pays. Le paramètre facultatif lang peut être utilisé pour spécifier la langue dans laquelle le nom du pays doit être rédigé. La sortie JSON est produite avec type=JSON

Voir le docs

Edit : Veuillez noter que demo n'est qu'un utilisateur de démonstration et vous devez créer un compte utilisateur à l'adresse suivante http://www.geonames.org/login afin d'utiliser le service.

0 votes

Ce service web a mis 17 secondes pour répondre à la requête de l'exemple. Il n'est pas raisonnable d'utiliser un service aussi lent pour une interface utilisateur synchrone.

0 votes

Peut-être que le serveur était lent quand vous avez vérifié. Je viens de vérifier maintenant et hier : Les deux fois, il a répondu instantanément.

1 votes

S'étrangle après 2 000 demandes.

18voto

Nishad Up Points 1631

L'API de géocodage de Google fournit ces résultats au format JSON. Elle dispose d'un niveau gratuit, mais vous devrez payer pour un nombre illimité de requêtes à l'API.

Le lien API vers la demande ressemblera à ceci :

'https://maps.googleapis.com/maps/api/geocode/json?latlng=11.2742848,75.8013801&key=YOUR_API_KEY_HERE'

12voto

headuck Points 2258

Si une bibliothèque autonome (c'est-à-dire sans serveur / connexion Internet, et rapide) est souhaitée, et que seules des informations sur les pays sont nécessaires, la bibliothèque suivante, basée sur les données d'openstreetmap, peut s'avérer utile - https://github.com/hlaw/codegrid-js

<script type="text/javascript" src="[path]/codegrid.js"></script>
grid = codegrid.CodeGrid(); // initialize

grid.getCode (lat, lng, function (err, code) { ... });

Le callback est appelé avec code le code du pays pour la localisation.

8voto

Krishna Patel Points 111
<form id="form1" runat="server">
<div>
    <script type="text/javascript" src="http://j.maxmind.com/app/geoip.js" ></script>
    <br />Country Code:
    <script type="text/javascript">document.write(geoip_country_code());</script>
    <br />Country Name:
    <script type="text/javascript">document.write(geoip_country_name());</script>
    <br />City:
    <script type="text/javascript">document.write(geoip_city());</script>
    <br />Region:
    <script type="text/javascript">document.write(geoip_region());</script>
    <br />Region Name:
    <script type="text/javascript">document.write(geoip_region_name());</script>
    <br />Latitude:
    <script type="text/javascript">document.write(geoip_latitude());</script>
    <br />Longitude:
    <script type="text/javascript">document.write(geoip_longitude());</script>
    <br />Postal Code:
    <script type="text/javascript">document.write(geoip_postal_code());</script>

</div>
</form>

2 votes

Il semble que cela ne fonctionne pas, puisque l'élément j.maxmind.com/app/geoip.js script ne se charge plus.

5voto

aniri Points 1279

Oui, vous pouvez utiliser google maps pour trouver le pays pour des latitudes et longitudes données. Utilisez le service de géocodage inverse .

Vous pouvez obtenir le pays, la ville, le code postal et l'adresse complète à partir de la réponse que vous recevez du serveur. Consultez l'exemple du lien pour plus de détails ;)

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