2010-08-02 10 views
14

Estoy trabajando en una bolsa de trabajo en Codeigniter PHP + jQuery donde los empleadores ingresan a su ubicación y utilizamos Google Maps API para trazarlo. Si bien esto ha tenido excelentes resultados de usabilidad, el problema es que cuando intentamos mostrar estas ubicaciones a los buscadores de trabajo, son confusas y difíciles de discernir visualmente (dicen así: "02905, a 2 millas de distancia", "171 John St., 4 millas de distancia "," Providence, Rhode Island, 10 millas de distancia ".Conversión de latitud/longitud en el nombre de la ciudad? (geolocalización inversa)

Quiero ser capaz de revertir geolocalizar desde una longitud/latitud a un nivel establecido (idealmente, nombre de la ciudad) para que en los resultados de búsqueda pueda tener las ubicaciones se enumeran de la siguiente manera: "Providence, Rhode Island, a 10 millas de distancia", "Providence, Rhode Island, a 5 millas de distancia", "Cranston, Rhode Island, a 16 millas de distancia".

¿Hay alguna manera de revertir geocodificación a la ciudad? ? Veo muchos ejemplos de formas de revertir geocodificación a la ubicación direccionable más cercana, pero no hay forma de controlar el nivel.

¡Espero que esté claro! Siéntase libre de comentar con cualquier pregunta que necesite aclaración.

Respuesta

12

El Google Geocoder, que admite reverse geocoding, devuelve address_components. Solo necesita extraer el componente de la dirección etiquetada con locality y political si solo desea el nombre de la ciudad. Si quieres estados, así que se etiquetan con administrative_area_level_1

+11

Cuide las Condiciones del servicio de la API de Google Maps: http://code.google.com/apis/maps/documentation/geocoding/#Limits "Nota: el La API de geocodificación solo se puede usar junto con un mapa de Google; los resultados de geocodificación sin mostrarlos en un mapa están prohibidos. Para obtener detalles completos sobre el uso permitido, consulte las restricciones de licencia de los Términos de servicio de la API de Maps. – sabbour

+0

Ahhh gracias por eso! – Walker

2

¿No se puede simplemente hacer la dirección completa, y luego soltar 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, estado).

EDITAR: Si lo hace de esa manera, al menos debe devolverse en un formulario estándar, que luego puede volver a convertir fácilmente los datos que desea.

+0

encantaría, pero en nuestro pruebas de usabilidad son muchos los empresarios más pequeños son incómodos publicar direcciones específicas . – Walker

+0

Por lo tanto, los empleadores deben ingresar una cadena de ubicación "Suburbios de Providence" en lugar de un par latitud/longitud. – tpdi

+0

En realidad, lo convertimos en 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 – Walker

38

fuentes libres (por ejemplo Creative Commons)

Geonames

Si está buscando de forma gratuita (como libertad) fuentes, que pueda usa la API de Geonames findNearbyPlaceName.

por ejemplo los siguientes rendimientos cercanos Placename:

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 toma coto delimitado . ejemplo de la 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

geocodificación inversa para las direcciones de América del Norte.

Info: http://geocoder.ca/

llamada de la muestra: http://geocoder.ca/?latt=40.70771000786733&longt=-74.0109443664550&reverse=1&allna=1&geoit=xml&corner=1&jsonp=1&callback=test

API Mapa de Quest

El uso de Open Street Map nominatim servicio:

http://open.mapquestapi.com/nominatim/v1/search?q=50.4,30.4&format=json

NO LIBRES FUENTES

Yahoo Buscar poblaciones

Documentación http://developer.yahoo.com/geo/placefinder/

llamada de la muestra:

http://where.yahooapis.com/geocode?q=38.898717,+-77.035974&gflags=R&appid=[yourappidhere]

API de Google Maps

documento ación:

http://code.google.com/apis/maps/documentation/geocoding/#ReverseGeocoding

+1

Gracias por la información. Respuesta muy informativa. – ThinkingMonkey

0

servicios de geocodificación inversa (tales como Google, Yahoo, y GeoNames) funciona bien para este propósito con algunas advertencias:

  • Aunque no puedo decir con certeza cómo el trabajo de servicios comerciales, la última vez que revisé GeoNames utiliza una estrategia de punto de interés más cercana para determinar la ciudad. Esto puede ser un problema si su punto de consulta está cerca de un límite entre dos ciudades y la entrada más cercana en la base de datos de GeoNames está al otro lado de ese límite. Esto realmente sucede bastante en mi experiencia, así que esto 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.

Ejecutar un sitio web que ofrece una serie de API web geográficas comerciales, y vende las bibliotecas Java que creamos para respaldar esas API. Uno de ellos (que solo tiene cobertura de 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, así que si esto es un componente crítico misión en su sistema, sugiero echar un vistazo a nuestro sitio web:

http://askgeo.com

La página que es específica para levantar ciudades de latitud/longitud es:

http://askgeo.com/database/UsPlace2010

0

que estaba buscando una API para convertir latitud/longitud a la ciudad. Parece que esta fue la pregunta original en este hilo también.

Vi los datos "http://download.geonames.org/export/dump/" compartidos en otra secuencia de flujo de acumulación Given the lat/long coordinates, how can we find out the city/country? e implementé mi propio servicio web.

Lo puede ver ejecutándose en http://scatter-otl.rhcloud.com/location?lat=36&long=-78.9 Simplemente cambie la latitud y la longitud de sus ubicaciones.

Se implementa en OpenShift (plataforma RedHat). La primera llamada después de un largo período de inactividad puede tomar algún tiempo, pero generalmente el rendimiento es satisfactorio. Siéntase libre de utilizar este servicio como desee ...

Además, puede encontrar la fuente del proyecto en https://github.com/turgos/Location.

0

La geolocalización Html5 requiere permiso del usuario. Si no desea este comportamiento, puede buscar un proveedor externo como https://geoip-db.com. Ofrecen un servicio gratuito de geolocalización basado en direcciones IP.

probar este ejemplo:

<!DOCTYPE html> 
<html> 
<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
<title>Geo City Locator</title> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> 
</head> 
<body > 
    <div>Country: <span id="country"></span></div> 
    <div>State: <span id="state"></spa></div> 
    <div>City: <span id="city"></span></div> 
    <div>Latitude: <span id="latitude"></span></div> 
    <div>Longitude: <span id="longitude"></span></div> 
    <div>IP: <span id="ip"></span></div>  
    <script> 
     $.getJSON('https://geoip-db.com/json/geoip.php?jsonp=?') 
     .done (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> 
Cuestiones relacionadas