Logré obtener la latitud y longitud del usuario utilizando la geolocalización basada en HTML.
//Check if browser supports W3C Geolocation API
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(successFunction, errorFunction);
}
//Get latitude and longitude;
function successFunction(position) {
var lat = position.coords.latitude;
var long = position.coords.longitude;
}
Quiero mostrar el nombre de la ciudad, parece que la única forma de obtenerlo es usar una API de geolocalización inversa. Leí la documentación de Google para la geolocalización inversa, pero no sé cómo obtener la salida en mi sitio.
No sé cómo usar esto: "http://maps.googleapis.com/maps/api/geocode/json?latlng='+lat+','+long+'&sensor=true"
para mostrar el nombre de la ciudad en la página.
¿Cómo puedo conseguir esto?
javascript
html
geolocation
lisovaccaro
fuente
fuente
Respuestas:
Harías algo así usando la API de Google.
Tenga en cuenta que debe incluir la biblioteca de Google Maps para que esto funcione. Google geocoder devuelve una gran cantidad de componentes de dirección, por lo que debe hacer una suposición informada sobre cuál tendrá la ciudad.
"Administrative_area_level_1" suele ser lo que está buscando, pero a veces la localidad es la ciudad que busca.
De todos modos, más detalles sobre los tipos de respuesta de Google se pueden encontrar aquí y aquí .
A continuación se muestra el código que debería hacer el truco:
fuente
Otro enfoque para esto es utilizar mi servicio, http://ipinfo.io , que devuelve el nombre de la ciudad, la región y el país en función de la dirección IP actual del usuario. Aquí hay un ejemplo simple:
Aquí hay un ejemplo más detallado de JSFiddle que también imprime la información de respuesta completa, para que pueda ver todos los detalles disponibles: http://jsfiddle.net/zK5FN/2/
fuente
El uso de la geolocalización html5 requiere permiso del usuario. En caso de que no desee esto, busque un localizador externo como https://geolocation-db.com IPv6 es compatible. No se permiten restricciones ni solicitudes ilimitadas.
Ejemplo
Para un ejemplo puro de JavaScript, sin usar jQuery, consulte esta respuesta.
fuente
Puede obtener el nombre de la ciudad, el país, el nombre de la calle y otros datos geográficos utilizando la API de geocodificación de Google Maps
y para mostrar estos datos en la página usando jQuery
fuente
Aquí hay una versión de trabajo actualizada para mí que obtendrá City / Town. Parece que algunos campos están modificados en la respuesta json. Refiriendo respuestas anteriores para estas preguntas. (Gracias a Michal y una referencia más: Enlace
fuente
geolocator.js puede hacer eso. (Soy el autor)
Cómo obtener el nombre de la ciudad (dirección limitada)
Obteniendo información completa de la dirección
El siguiente ejemplo probará primero la API de geolocalización HTML5 para obtener las coordenadas exactas. Si falla o se rechaza, recurrirá a la búsqueda de Geo-IP. Una vez que obtenga las coordenadas, geocodificará las coordenadas en una dirección.
Esto utiliza las API de Google internamente (para la búsqueda de direcciones). Entonces, antes de esta llamada, debe configurar el geolocalizador con su clave API de Google.
Geolocator admite ubicación geográfica (a través de búsquedas HTML5 o IP), geocodificación, búsquedas de direcciones (geocodificación inversa), distancia y duraciones, información de zona horaria y muchas más funciones ...
fuente
Después de buscar y reconstruir un par de soluciones diferentes junto con mis propias cosas, se me ocurrió esta función:
fuente
Puedes usar https://ip-api.io/ para obtener el nombre de la ciudad. Es compatible con IPv6.
Como beneficio adicional, permite verificar si la dirección IP es un nodo tor, proxy público o spammer.
Código Javascript:
código HTML
Salida JSON
fuente
Como @PirateApp mencionó en su comentario, está explícitamente en contra de las licencias de API de Google Maps utilizar la API de Google Maps como lo desee.
Tiene varias alternativas, incluida la descarga de una base de datos Geoip y la consulta local o el uso de un servicio API de terceros, como mi servicio ipdata.co .
ipdata le brinda la ubicación geográfica, la organización, la moneda, la zona horaria, el código de llamada, la bandera y los datos de estado del nodo de salida Tor desde cualquier dirección IPv4 o IPv6.
¡Y es escalable con 10 puntos finales globales, cada uno capaz de manejar> 10,000 solicitudes por segundo!
El violín; https://jsfiddle.net/ipdata/6wtf0q4g/922/
fuente
Aquí hay otra oportunidad ... Agregar más a la respuesta aceptada posiblemente más completa ... por supuesto, switch -case hará que parezca elegante.
fuente
Aquí hay una función fácil que puede usar para obtenerla. Solía axios para hacer la solicitud de la API, pero se puede usar cualquier otra cosa.
fuente