Saltar al contenido

Obtener una intersección con Google Places/API de codificación geográfica

Olivia, miembro de este staff, nos hizo el favor de redactar este post ya que controla a la perfección este tema.

Solución:

GeoNames proporciona una API de codificación geográfica para la intersección más cercana desde las coordenadas de latitud/longitud.

http://www.geonames.org/maps/us-reverse-geocoder.html#findNearestIntersection

La respuesta JSON se ve así:

"intersection":
 "adminName2":"San Mateo",
  "street2":"Curtis St",
  "postalcode":"94025",
  "street1":"Roble Ave",
  "adminCode1":"CA",
  "distance":"0.08",
  "countryCode":"US",
  "lng":"-122.180842",
  "placename":"Menlo Park",
  "lat":"37.450649",
  "adminName1":"California"
 ,
 "credits":"1.0"

street1 y street2 son las calles transversales.

El consenso es que el geocodificador inverso de Google no es lo suficientemente sofisticado para reportar intersecciones en una consulta. Es decir, no hay un parámetro que pueda usar para decirles que solo quiere los resultados con "types" : [ "intersection" ]. Google está comiendo su propio dogfood aquí; si ingresa una latitud/longitud en un cuadro de búsqueda de maps.google, siempre obtiene una calle (en la jerga de Google, una ‘ruta’) de regreso.

Como usted señala, hay muchas heurísticas que podría aplicar para obtener el codiciado ["intersection"] tipo.

Por ejemplo, varias intersecciones ‘principales’ en ciudades del primer mundo tienen paradas de tránsito que describen la intersección. Si algún resultado tiene un "types" : [ "bus_station", "transit_station" ] elemento, puedes probar el "long_name" elemento como término de búsqueda y espero que obtenga una intersección. smirkingman también mencionó una solución viable. Ambos requirieron más de 2 consultas, por desgracia.

En conclusión, no hay ningún tipo de función latelngToIntersection(lat,lng) en la API de codificación geográfica de Google. Existe evidencia de esto en la propia página maps.google de Google. Yo atacaría tu problema de otra manera. Si desea obtener la intersección principal más cercana dada una ubicación de GPS, puede ser útil pedirle ayuda al usuario. La codificación geográfica está notoriamente llena de humanidad repugnante.

Puede utilizar datos de OpenStreetMap. Su .osm El archivo proporciona la latitud/longitud de las calles que se cruzan.

  1. Cómo obtener los datos.

    1. Vaya a OpenStreetMap y encuentre su lugar en el que esté interesado, acérquese como la cuarta marca.

    2. Haga clic en Exportar en la barra de navegación superior, en el menú desplegable, presione “Datos XML de OpenStreetMap” y haga clic en “Exportar”.

    3. Para una gran cantidad de datos como un estado o país, Planet.osm y encuentre el “extracto” deseado.

  2. Para obtener las intersecciones, desea buscar datos que coincidan con este formato, probablemente busque autopista.

Ejemplo:


  
  
  
  
  
  
  k="highway" v="residential"/>
  
  
  
  ...

El way.id es el id de la calle, y los nd refs son los id de las calles que puede encontrar en el mismo archivo. Se ven algo como esto

‹node id="53167978" lat="38.5852785" lon="-90.2450074" user="eric22" uid="160949" visible="true" version="3" changeset="10632563" timestamp="2012-02-09T10:48:49Z"/>

Reseñas y puntuaciones

Si piensas que te ha resultado de provecho este artículo, nos gustaría que lo compartas con más entusiastas de la programación así contrubuyes a dar difusión a nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *