geolocation - saber - tipos de coordenadas geograficas
Nombre del paĆs para coordenadas GPS (5)
¿Qué hay de usar el servicio de codificación geográfica inversa de google ?
¿Existe una manera fácil de obtener el nombre del país en cuyo territorio se encuentra un punto determinado?
No me importa demasiado la precisión ni las ambigüedades dadas por las disputas políticas. Sólo necesito una aproximación lo suficientemente buena.
Aquí hay algunos códigos JavaScript para obtener el nombre del país a partir de las coordenadas de latitud y longitud:
Usando los servicios de geocodificación de Google [jsfiddle] :
var lookupCountryWithGoogle = function (lat, lng) {var latlng = new google.maps.LatLng (lat, lng);
var geoCoder = new google.maps.Geocoder(); geoCoder.geocode({ location: latlng }, function(results, statusCode) { var lastResult = results.slice(-1)[0]; if (statusCode == ''OK'' && lastResult && ''address_components'' in lastResult) { alert(''coordinates: '' + lat + '', '' + lng + ''/n'' + ''country: '' + lastResult.address_components.slice(-1)[0].long_name); } else { alert(''coordinates: '' + lat + '', '' + lng + ''/n'' + ''failed: '' + statusCode); } });
};
lookupCountryWithGoogle (43.7534932, 28.5743187); // tendrá éxito lookupCountryWithGoogle (142, 124); // fallará
(Deberá cargar el soporte de Google para JavaScript desde una URL como maps.google.com/maps/api/js?sensor=false&fake=.js
)
Utilizando
ws.geonames.org
[jsfiddle] :var lookupCountryWithGeonames = function (lat, lng) {
$.getJSON(''http://ws.geonames.org/countryCode'', { lat: lat, lng: lng, type: ''JSON'' }, function(results) { if (results.countryCode) { alert(''coordinates: '' + lat + '', '' + lng + ''/n'' + ''country: '' + results.countryName); } else { alert(''coordinates: '' + lat + '', '' + lng + ''/n'' + ''failed: '' + results.status.value + '' '' + results.status.message); } });
};
lookupCountryWithGeonames (43.7534932, 28.5743187); // podría suceder
lookupCountryWithGeonames (142, 124); // fallará
Solo para la referencia, geonames.org también tiene un buen servicio web, pero tiene una tasa limitada (lo cual fue un problema en mi caso ya que tuve que buscar un gran lote de coordenadas).
Ejemplo: http://ws.geonames.org/findNearbyPlaceName?lat=47.3&lng=9
También puede consultar los servicios de tinygeocoder.
Otra alternativa es descargar los mapas de países de la tierra natural (u otra fuente). Usando Geotools puede buscar si el punto está dentro de uno de los países.
EDITAR: Yahoo Where API ya no está disponible.
Prueba el Yahoo! APIs .
Latitud y longitud
La latitud y la longitud se pueden especificar para el parámetro de ubicación. La latitud y la longitud se pueden expresar como grados decimales o grados-minutos-segundos, con direccionales iniciales o finales o signos principales. Si se proporcionan direccionales, la longitud puede aparecer antes de la latitud. Si no se proporcionan direcciones, la longitud puede aparecer antes de la latitud si está fuera del rango de -90 a 90. De lo contrario, la latitud debe aparecer primero. Los signos de puntuación (comas, grados, minutos, segundos) se ignoran.
Examples:
•50.3 -120.5
•50.3, -120.5
•-120.5 50.3
•50.3 N 120.5 W
•120.5 W 50.3 N
•50 18 0 -120 30 0
•50 18 0 N 120 30 0 W
•50° 18'' 0" N 120° 30'' 0" W
El elemento de respuesta le dará el país, así como muchos otros elements .
No olvide enviar como parámetro gflags = R, para realizar la geocodificación inversa. Si desea la salida en json, envíe también los parámetros parámetros = J.