2011-06-10 8 views
8

Uso la API de Google Maps V3. Estoy enviando una búsqueda de direcciones para devolver el resultado geocodificado adecuado, incluida la dirección, el nombre del establecimiento y lat/lngs.Google Geocodificación: análisis de los componentes de dirección que pueden ser diferentes

Mi problema es que la respuesta del geocodificador se puede formatear de manera diferente. Siempre sigue la misma estructura, pero algunas respuestas usan claves diferentes para la estructura de datos de los componentes de la dirección.

Por ejemplo, algunas búsquedas como resultado:

establishment    -> location name 
street_number    -> address street number 
route      -> the street name 
locality     -> the city 
administrative_area_level_1 -> the state 
postal_code     -> zip/postal code 

mientras que, si yo fuera a buscar un área general, tales como "la playa de Hampton, NH" que recibiría:

sublocality     -> beach name/area 
administrative_area_level_3 -> city/town name 
administrative_area_level_1 -> the state 
postal_code     -> zip/postal code 

como puedes ver que las dos respuestas tienen sus diferencias. ¿Existe una biblioteca conocida de jquery que se pueda usar para manejar estas diferentes respuestas para devolver un conjunto de datos de los componentes de la dirección que se pueden usar de una manera legible para el ser humano?

Notaré que la respuesta también devuelve un tipo de "dirección_formatada", que la devuelve como: "Hampton Beach, NH 03842, EE. UU." O "Universidad de Boston, 1 University Rd, Boston, MA 02215-1407, EE. UU." Como puede ver, estos también son bastante diferentes. Podría dividir por comas, pero me gustaría utilizar los componentes de dirección reales para una inserción de base de datos impecable.

Respuesta

12

¿Por qué no hacer que su DB duplica solo las siguientes teclas?

street_number     -> address street number 
route       -> the street name 
locality       -> the city/town  
administrative_area_level_3  -> the city/town 
administrative_area_level_1  -> the state 
postal_code      -> zip/postal code 

Cuando un locality existe, el uso que en su solicitud (ya que parece ofrecer la información más detallada - http://code.google.com/apis/maps/documentation/geocoding/#JSON)

Cuando no exista street name o locality, solicitar administrative_area_level_3 y administrative_area_level_1

Este le proporcionará una dirección postal completa legible por personas cuando exista información o solo la ciudad/estado de un sublocality (por ejemplo, playa), como mencionó en uno de los comentarios.

** Supongo que solo te importan los EE. UU.

+0

En general, la ciudad podría ser 'locality' o' post_town' o cualquiera de 'administrative_area_level_X' o incluso' country' (Singapur, Hong Kong, Ciudad del Vaticano, etc.). Solo mírelos a todos, en ese orden ('administrative_area_level_X' para X de 5 a 1) y atrapará la ciudad donde sea que esté. – miguev

1

Las direcciones son en gran medida una cosa "humana". Creo que la razón por la cual los datos de Google son tan desordenados es porque los datos de origen son complicados, pero probablemente similares para un área.

¿Qué partes de la dirección son relevantes para usted? Si solo estás dándole esto a un ser humano, solo dale lo que tengas?

+1

Estoy buscando una dirección postal completa. Para lugares como una playa, me gustaría solo la ciudad/estado. El problema es que la ciudad/pueblo se refiere de manera diferente para diferentes solicitudes. Necesito extraer cada componente de la dirección de la forma en que proporcionan, es demasiado complicado conseguirlo lo suficientemente genérico para cualquier tipo de solicitud, ¿no? – Atticus

+0

Esto parece muy complicado. En realidad, no hay forma de interpretar qué es 'administrative_area', puede ser un estado, un subestado o una ciudad y, a veces, ni siquiera está allí. La documentación especifica qué valores puede esperar: http://code.google.com/apis/maps/documentation/geocoding/#Types, pero supongo que son todos opcionales. ¿Quizás necesites mirar un sistema comercial? – Halcyon

+0

Sí, estoy pensando lo mismo ... Esperaba que alguien supiera de una biblioteca jquery para filtrar los componentes en términos genéricos [dirección, ciudad, estado, zip]. Como usted dijo, administrative_area puede diferir, por lo que el uso genérico de esto parece bastante limitado. – Atticus

Cuestiones relacionadas