¿Cómo obtener la ubicación del visitante (es decir, el país) mediante la geolocalización? [cerrado]
Estoy intentando ampliar la función de geolocalización nativa.
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
});
}
para poder usar el nombre del país del visitante (quizás devolver una matriz informativa).
Hasta ahora, todo lo que he podido encontrar son funciones que muestran una interfaz de Google Maps, pero ninguna me dio lo que quería, excepto esta biblioteca que funcionó bien en este ejemplo pero que por alguna razón no funcionó en mi computadora. No estoy seguro de por qué salió mal allí.
De todos modos, ¿sabes cómo puedo simplemente devolver una matriz que contenga información como país, ciudad, etc. a partir de valores de latitud y longitud?
Puede utilizar mi servicio, http://ipinfo.io , para esto. Le proporcionará la IP del cliente, el nombre de host, la información de geolocalización (ciudad, región, país, código de área, código postal, etc.) y el propietario de la red. Aquí hay un ejemplo simple que registra la ciudad y el país:
$.get("https://ipinfo.io", function(response) {
console.log(response.city, response.country);
}, "jsonp");
Aquí hay un ejemplo de JSFiddle más detallado que también imprime la información de respuesta completa, para que pueda ver todos los detalles disponibles: http://jsfiddle.net/zK5FN/2/
La ubicación generalmente será menos precisa que los detalles de geolocalización nativos, pero no requiere ningún permiso del usuario.
Puede hacer esto de forma nativa sin depender de servicios IP. Puede obtener la zona horaria del usuario de esta manera:
Intl.DateTimeFormat().resolvedOptions().timeZone
y luego extraer al país de ese valor. Aquí hay un ejemplo funcional en CodePen.