Par exemple, si nous avons cet ensemble de coordonnées
"latitude": 48.858844300000001,
"longitude": 2.2943506,
Comment peut-on connaître la ville/pays ?
Par exemple, si nous avons cet ensemble de coordonnées
"latitude": 48.858844300000001,
"longitude": 2.2943506,
Comment peut-on connaître la ville/pays ?
Une autre option :
Avantages :
Inconvénients :
Cela donnera également des résultats bizarres pour les villes à l'intérieur des villes, par exemple certains endroits de Rome peuvent donner "Cité du Vatican" - en fonction de la lat/lon spécifiée dans la base de données pour chacun.
Le libre API de géocodage Google fournit ce service via une API HTTP REST. Remarque : l'API est usage et taux limité mais vous pouvez payer pour un accès illimité.
Essayez ce lien pour voir un exemple de la sortie (ceci est en json, la sortie est aussi disponible en XML)
https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=true
J'accepte cette réponse parce que c'est celle que je finirai par choisir :) La réponse de Michael est certainement une bonne option !
Le géocodage inversé de Google n'est autorisé que s'il est associé à une carte Google. Si vous souhaitez une solution qui n'a pas de telles restrictions (bien qu'elle soit commerciale et ne propose que des villes américaines), consultez : askgeo.com
Mapquest api est une autre option ici, car elle n'a pas de limites de débit dans certains cas et des limites de débit très élevées pour divers besoins de géocodage.
J'ai passé environ 30 minutes à essayer de trouver un exemple de code permettant de faire cela en Javascript. Je n'ai pas trouvé de réponse rapide et claire à la question que vous avez posée. Alors... j'ai fait le mien. J'espère que les gens pourront l'utiliser sans avoir à creuser dans l'API ou à regarder du code qu'ils n'ont aucune idée de comment lire. Ha si rien d'autre je peux référencer ce post pour mes propres trucs... Bonne question et merci pour le forum de discussion !
Il s'agit d'utiliser l'API de Google.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=<YOURGOOGLEKEY>&sensor=false&v=3&libraries=geometry"></script>
.
//CHECK IF BROWSER HAS HTML5 GEO LOCATION
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (position) {
//GET USER CURRENT LOCATION
var locCurrent = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
//CHECK IF THE USERS GEOLOCATION IS IN AUSTRALIA
var geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'latLng': locCurrent }, function (results, status) {
var locItemCount = results.length;
var locCountryNameCount = locItemCount - 1;
var locCountryName = results[locCountryNameCount].formatted_address;
if (locCountryName == "Australia") {
//SET COOKIE FOR GIVING
jQuery.cookie('locCountry', locCountryName, { expires: 30, path: '/' });
}
});
}
}
Cela dépend vraiment des restrictions technologiques dont vous disposez.
L'une des solutions consiste à disposer d'une base de données spatiale contenant les contours des pays et des villes qui vous intéressent. Par contour, j'entends que les pays et les villes sont stockés sous forme de polygones de type spatial. Votre jeu de coordonnées peut être converti en point de type spatial et interrogé sur les polygones pour obtenir le nom du pays ou de la ville où se trouve le point.
Voici quelques-unes des bases de données qui prennent en charge le type spatial : SQL server 2008 , MySQL , postGIS - une extension de postgreSQL et Oracle .
Si vous souhaitez utiliser un service au lieu d'avoir votre propre base de données, vous pouvez utiliser le service de Yahoo. GeoPlanet . Pour l'approche par les services, vous pouvez consulter les sites suivants ce réponse sur gis.stackexchange.com qui couvre la disponibilité des services pour résoudre votre problème.
Veuillez vérifier la réponse ci-dessous. Cela fonctionne pour moi
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position){
initialize(position.coords.latitude,position.coords.longitude);
});
}
function initialize(lat,lng) {
//directionsDisplay = new google.maps.DirectionsRenderer(rendererOptions);
//directionsService = new google.maps.DirectionsService();
var latlng = new google.maps.LatLng(lat, lng);
//alert(latlng);
getLocation(latlng);
}
function getLocation(latlng){
var geocoder = new google.maps.Geocoder();
geocoder.geocode({'latLng': latlng}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[0]) {
var loc = getCountry(results);
alert("location is::"+loc);
}
}
});
}
function getCountry(results)
{
for (var i = 0; i < results[0].address_components.length; i++)
{
var shortname = results[0].address_components[i].short_name;
var longname = results[0].address_components[i].long_name;
var type = results[0].address_components[i].types;
if (type.indexOf("country") != -1)
{
if (!isNullOrWhitespace(shortname))
{
return shortname;
}
else
{
return longname;
}
}
}
}
function isNullOrWhitespace(text) {
if (text == null) {
return true;
}
return text.replace(/\s/gi, '').length < 1;
}
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.
2 votes
Vous aurez probablement besoin d'une sorte de base de données. J'essaierais moi-même de jouer avec l'API de Google Maps... elle prend en charge la lat/long.
1 votes
Voir aussi Obtenir le pays à partir de la latitude et de la longitude