2011-06-06 13 views
6

Estoy usando Google's Geocoding API para procesar datos de dirección de forma libre y estoy tratando de dar sentido a los resultados (subpremise, administrative_area_level_2, etc.). En este momento, solo me interesan las direcciones en EE. UU. Y me gustaría formatear los resultados como una dirección de calle, una ciudad y un código de estado. El código de estado parece sencillo (administrative_area_level_1), pero los otros son más vagos. ¿Es la ciudad locality o sublocality o ambas cosas o más? La dirección de la calle en sí parece que podría ser cualquier cantidad de combinaciones de los otros campos.Dando sentido a los resultados de la API de geocodificación de Google

Idealmente, me gustaría simplemente tomar el formatted_address, quitar la ciudad, el estado, el código postal y el código de país, y mantener lo que queda como mi "dirección". ¿Existen directrices o recomendaciones para manejar todos estos campos, al menos para la mayoría de los casos (direcciones regulares, direcciones con números de unidad, etc.)?

Respuesta

1

El documentation parece abarcar con bastante claridad los diversos campos.

No has dicho en qué idioma estás trabajando, pero creo que esto será help.

+0

Estoy trabajando en Objective-C para una aplicación iOS, pero mi pregunta es acerca de la API en sí. La documentación proporciona una descripción de cada campo, pero mi problema es realizar un mapeo que vuelva al formato de dirección estándar de EE. UU. En otras palabras, parece que las ciudades de EE. UU. Siempre irán en el campo 'localidad ', pero eso sigue siendo ambiguo. 'street_address' no aparece en las respuestas a mis solicitudes de prueba, y no hay ninguna explicación sobre cómo construir una dirección de calle válida de los campos restantes. – jrdioko

1

Estoy haciendo geocodificación inversa en Nearlots.com en las páginas de búsqueda. Básicamente, el usuario coloca un marcador en algún lugar del mapa e imprimo una dirección en un cuadro de búsqueda.

Estoy simplemente imprimiendo 'formatted_address' y renunciar si no está allí. Esto le dará algo como esto: "275-291 Bedford Ave, Brooklyn, NY 11211, EE. UU.". Esto es más que suficiente: siempre puedes despojar a los EE. UU. Al final.

+0

'formatted_address' está cerca, pero necesito dividirlo en tres campos distintos: dirección de calle, ciudad y código de estado. Romper las comas es lo más cercano que he podido obtener, pero supongo que no hay garantía en el formato de 'formatted_address'. – jrdioko

0

Creo que necesita utilizar 'ruta' para la dirección de la calle.

Uso el mismo servicio y, según mi experiencia, "ruta" es siempre el equivalente de una calle, ¡incluso cuando la ubicación no es en realidad una calle!

Creo que ya ha determinado cómo averiguar el nombre de la ciudad. etc. Es el mismo enfoque que yo uso; eche un vistazo a una variedad de resultados de API para algunas ubicaciones diferentes y vea qué campo le brinda los resultados más consistentes.

+0

'route' no incluye el número al comienzo de la calle, eso está en' street_number'. Y en mis números de unidad de prueba y otras partes de la dirección de la calle terminan en otros campos, entonces 'route' no es una dirección completa. – jrdioko

+0

Lo siento, quise decir que 'route' contiene Street NAME excluyendo el número de la casa. Encontré que el nombre de la calle estaba principalmente en 'route' en mi país. – Mullins

7
  • dirección de la calle es street_number y route
  • City es locality
  • Estado es administrative_area_level_1
  • postal es postal_code
  • País es country

Tenga en cuenta que Google ignora cualquier tipo de unidad número (por ejemplo, 'Apt 13A'). Tendrás que agregar eso en ti mismo.

Al ejecutar una muestra de sus datos a través del geocodificador y verificar los resultados manualmente, debe confirmar que está obteniendo lo que necesita.

+1

Bueno, no suelta el número de unidad, lo incluye (generalmente en 'subpremise' de lo que he visto). Puedo ejecutar una muestra y llegar a la mayoría de los casos, pero esperaba que hubiera alguna forma mejor de obtener todas o casi todas las direcciones correctas (incluso si tienen un 'piso' o' sala' o 'premisa') . – jrdioko

+0

Corrija el lugar donde el objeto devuelto por la API incluye un valor 'subpremise' que contiene el número de unidad (probado usando una dirección australiana). –

0

Después de muchas horas de trabajo en él, no fui capaz de extraer consistentemente el plano/sala/sub premisa. Tener ese detalle era más importante que poder separarlo específicamente, así que lo solucioné usando esto.

var componentForm = { 
    locality: 'long_name', 
    administrative_area_level_1: 'short_name', 
    country: 'long_name', 
    postal_code: 'short_name' 
}; 

function fillInAddress(place) { 
    for (var component in componentForm) { 
     document.getElementById(component).value = ''; 
     document.getElementById(component).disabled = false; 
    } 
    for (var i = 0; i < place.address_components.length; i++) { 
     var addressType = place.address_components[i].types[0]; 
     if (componentForm[addressType]) { 
      var val = place.address_components[i][componentForm[addressType]]; 
      document.getElementById(addressType).value = val; 
     } 
    } 
    var parts = $("#searchField").val().split(","); 
    $("#street_number").val(parts[0]); 
} 

he extraído la información de la función de autocompletar de forma normal, aunque saltado "street_number" y "ruta". Luego realizó una simple división en el valor de autocompletar después de la selección y utilizó la primera parte, devolviendo la dirección de la calle como un todo (incluidos fábrica/plano/local y nombre de la calle).

Este trabajo me dio resultados que funcionan bien para lo que necesito. ¡Buena suerte!

Cuestiones relacionadas