¿Convertir latitud / longitud en nombre de ciudad? (geolocalización inversa)

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.

preguntado el 02 de agosto de 10 a las 19:08

6 Respuestas

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

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

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:

http://api.freebase.com/api/service/geosearch?location=[30.2,50.4,30.6,50.8]&location_type=/location/citytown&inside=true&indent=1

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

¿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

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:

http://askgeo.com

La página que es específica para buscar ciudades de lat / lon es:

http://askgeo.com/database/UsPlace2010

contestado el 08 de mayo de 12 a las 18:05

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

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 or haz tu propia pregunta.