¿Convertir latitud / longitud en nombre de ciudad? (geolocalización inversa)
Frecuentes
Visto 32,593 equipos
14
Estoy trabajando en una bolsa de trabajo en Codeigniter PHP + jQuery donde los empleadores ingresan su ubicación y usamos la API de Google Maps para trazarla. Si bien esto ha tenido resultados de usabilidad asombrosos, el problema es que cuando intentamos mostrar estas ubicaciones a los solicitantes de empleo, son confusos y difíciles de discernir visualmente (dicen así: "02905, a 2 millas de distancia", "171 John St., 4 millas de distancia "," Providence, RI, a 10 millas de distancia ".
Quiero poder revertir la geolocalización desde una longitud / latitud a un nivel establecido (idealmente, el nombre de la ciudad) para que en los resultados de búsqueda pueda tener las ubicaciones en la lista de esta manera: "Providence, RI, 10 millas de distancia", " Providence, RI, a 5 millas de distancia "," Cranston, RI, a 16 millas de distancia ".
¿Hay alguna forma de revertir la codificación geográfica a la ciudad? Veo muchos ejemplos de formas de invertir la codificación geográfica a la ubicación direccionable más cercana, pero no hay forma de controlar el nivel.
¡Espero que esté claro! No dude en comentar cualquier pregunta que necesite aclarar.
6 Respuestas
12
Google Geocoder, que admite codificación geográfica inversa devoluciones dirección_componentes. Solo necesita extraer el componente de la dirección etiquetada con locality
y political
si solo quiere el nombre de la ciudad. Si también quieres estados, están etiquetados con administrative_area_level_1
Respondido 02 ago 10, 23:08
37
FUENTES GRATUITAS (por ejemplo, Creative Commons)
Geonombres
Si está buscando fuentes gratuitas (como libertad), puede usar la API de Geonames findNearbyPlaceName.
Por ejemplo, lo siguiente devuelve el nombre de lugar más cercano:
http://api.geonames.org/findNearbyPlaceName?lat=47.3&lng=9&username=demo
Más información está disponible aquí
http://www.geonames.org/export/web-services.html#findNearbyPlaceName
Freebase
En lugar de un solo punto, se necesita una caja acotada. Muestra de llamada:
Geocoder.ca
Codificación geográfica inversa para direcciones de América del Norte.
información: http://geocoder.ca/
Llamada de muestra: http://geocoder.ca/?latt=40.70771000786733&longt=-74.0109443664550&reverse=1&allna=1&geoit=xml&corner=1&jsonp=1&callback=test
API de Map Quest
Usando el servicio nominatim de Open Street Map:
http://open.mapquestapi.com/nominatim/v1/search?q=50.4,30.4&format=json
FUENTES NO LIBRES
Buscador de lugares de Yahoo
Documentación http://developer.yahoo.com/geo/placefinder/
Llamada de muestra:
http://where.yahooapis.com/geocode?q=38.898717,+-77.035974&gflags=R&appid=[yourappidhere]
API de Google Maps
Documentación:
http://code.google.com/apis/maps/documentation/geocoding/#ReverseGeocoding
Respondido 15 ago 12, 00:08
2
¿No puedes simplemente hacer la dirección completa y luego dejar la calle y el número?
Yo diría que sería más valioso usar la dirección completa, para obtener una distancia más precisa (incluso si solo muestra la ciudad, el estado).
EDITAR: Si lo hace de esa manera, al menos debe devolverse en un formulario estándar, que luego puede regexizar fácilmente los datos que desea.
Respondido 02 ago 10, 23:08
Me encantaría, pero en nuestras pruebas de usabilidad, muchos empleadores más pequeños se sienten incómodos al publicar direcciones específicas. - Andador
Por lo tanto, pida a los empleadores que ingresen una cadena de ubicación "Suburbs of Providence" en lugar de un par lat / lon. - tpdi
De hecho, lo convertimos a lat / long nosotros mismos para almacenarlo y trazarlo en un mapa (para la página de resultados / búsqueda radial). El empleador ingresa una cadena de forma libre en la página de publicación de trabajos: Andador
0
Los servicios de codificación geográfica inversa (como Google, Yahoo y GeoNames) funcionarán bien para este propósito con algunas advertencias:
- Aunque no puedo decir con certeza cómo funcionan los servicios comerciales, la última vez que verifiqué, GeoNames utiliza una estrategia de punto de interés más cercano para determinar la ciudad. Esto puede ser un problema si su punto de consulta está algo cerca de una frontera entre dos ciudades y la entrada más cercana en la base de datos de GeoNames está al otro lado de esa frontera. En realidad, esto sucede bastante en mi experiencia, por lo que no es solo un tecnicismo.
- Además, si le preocupa la experiencia del usuario, cualquier solución de API web agrega latencia y reduce la confiabilidad.
Dirijo un sitio web que ofrece una serie de API web geográficas comerciales y vende las bibliotecas de Java que creamos para respaldar esas API. Uno de ellos (que solo tiene cobertura en EE. UU.) Utiliza un mapa poligonal adecuado de las ciudades y pueblos de EE. UU. Para devolver el resultado que contiene su punto de consulta. Es preciso y rápido, por lo que si este es un componente de misión crítica en su sistema, le sugiero que eche un vistazo a nuestro sitio web:
La página que es específica para buscar ciudades de lat / lon es:
contestado el 08 de mayo de 12 a las 18:05
0
Estaba buscando una API para convertir lat / long en city. Parece que esta también era la pregunta original en este hilo.
Vi los datos "http://download.geonames.org/export/dump/"compartido en otro hilo de stackoverflow Dadas las coordenadas lat / long, ¿cómo podemos averiguar la ciudad / país?e implementé mi propio servicio web.
Puedes verlo corriendo en http://scatter-otl.rhcloud.com/location?lat=36&long=-78.9 Simplemente cambie la latitud y la longitud de sus ubicaciones.
Está implementado en OpenShift (RedHat Platform). La primera llamada después de un largo período de inactividad puede tardar algún tiempo, pero normalmente el rendimiento es satisfactorio. No dude en utilizar este servicio como desee ...
Además, puede encontrar la fuente del proyecto en https://github.com/turgos/Location.
contestado el 23 de mayo de 17 a las 13:05
-1
La geolocalización Html5 requiere permiso del usuario. Si no desea este comportamiento, puede buscar un proveedor externo como https://geolocation-db.com. Ofrecen un servicio de geolocalización gratuito basado en direcciones IP.
Prueba este ejemplo:
<!DOCTYPE html>
<html>
<head>
<title>Geolocation DB - jQuery example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
</head>
<body>
<div>Country: <span id="country"></span>
<div>State: <span id="state"></span>
<div>City: <span id="city"></span>
<div>Latitude: <span id="latitude"></span>
<div>Longitude: <span id="longitude"></span>
<div>IP: <span id="IPv4"></span>
<script>
$.ajax({
url: "https://geolocation-db.com/jsonp",
jsonpCallback: "callback",
dataType: "jsonp",
success: function( location ) {
$('#country').html(location.country_name);
$('#state').html(location.state);
$('#city').html(location.city);
$('#latitude').html(location.latitude);
$('#longitude').html(location.longitude);
$('#ip').html(location.IPv4);
}
});
</script>
</body>
</html>
Respondido 29 Abr '21, 16:04
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas php jquery google-maps geolocation geocoding or haz tu propia pregunta.
Cuida las Condiciones de servicio de la API de Google Maps: code.google.com/apis/maps/documentation/geocoding/#Limits "Nota: la API de codificación geográfica solo se puede utilizar junto con un mapa de Google; se prohíbe la codificación geográfica de los resultados sin mostrarlos en un mapa. Para obtener detalles completos sobre el uso permitido, consulte las restricciones de licencia de las Condiciones de servicio de la API de Maps". - Saboreo