Jose Alexis Correa Valencia
@jalexiscv, hace 2 meses..
Cover 2 5E3976EFC57FF

Geocodificación con Google Maps 2020


La geocodificación es el proceso de convertir direcciones (como "1600 Amphitheatre Parkway, Mountain View, CA") en coordenadas geográficas (como la latitud 37.423021 y la longitud -122.083739), que puede usar para colocar marcadores o colocar el mapa. La geocodificación inversa es el proceso de convertir coordenadas geográficas en una dirección legible por humanos (ver Geocodificación inversa (Búsqueda de dirección) ).

También puede usar el geocodificador para buscar la dirección de un ID de lugar determinado.La API de JavaScript de Maps proporciona una clase de geocodificador para la geocodificación y la geocodificación inversa de forma dinámica desde la entrada del usuario. Si, en cambio, desea geocodificar direcciones estáticas y conocidas, consulte el servicio web Geocodificación.

Empezando

Antes de usar el servicio de Geocodificación en la API de JavaScript de Maps, primero asegúrese de que la API de Geocodificación esté habilitada en la Consola de Google Cloud Platform, en el mismo proyecto que configuró para la API de JavaScript de Maps.Para ver su lista de API habilitadas:

  1. Vaya a la Consola de Google Cloud Platform .
  2. Haga clic en el botón Seleccionar un proyecto , luego seleccione el mismo proyecto que configuró para la API de JavaScript de Maps y haga clic en Abrir .
  3. En la lista de API en el Panel , busque la API de geocodificación .
  4. Si ve la API en la lista, ya está todo listo. Si la API no está en la lista, habilítela:
    1. En la parte superior de la página, seleccione ENABLE API para mostrar la pestaña Biblioteca . Alternativamente, desde el menú del lado izquierdo, seleccione Biblioteca .
    2. Busque la API de geocodificación , luego selecciónela de la lista de resultados.
    3. Seleccione HABILITAR . Cuando finaliza el proceso, la API de geocodificación aparece en la lista de API en el Panel de control .

Precios y políticas

A partir del 16 de julio de 2018, entró en vigencia un nuevo plan de precios de pago por uso para Mapas, Rutas y Lugares. Para obtener más información sobre los nuevos precios y límites de uso para su uso del servicio de geocodificación de JavaScript, consulte Uso y facturación para la API de geocodificación.

Límites de velocidad

Tenga en cuenta lo siguiente sobre los límites de velocidad en solicitudes adicionales: El límite de velocidad adicional se aplica por sesión de usuario, independientemente de cuántos usuarios compartan el mismo proyecto. Cuando carga la API por primera vez, se le asigna una cuota inicial de solicitudes. Una vez que use esta cuota, la API aplica límites de tasa en solicitudes adicionales por segundo. Si se realizan demasiadas solicitudes dentro de un cierto período de tiempo, la API devuelve un código de respuesta OVER_QUERY_LIMIT.

El límite de velocidad por sesión impide el uso de servicios del lado del cliente para solicitudes por lotes, como la geocodificación por lotes. Para solicitudes por lotes, use el servicio web de Geocoding API .PolíticasEl uso del servicio de Geocodificación debe estar de acuerdo con las políticas descritas para la API de Geocodificación .

Solicitudes de geocodificación

El acceso al servicio de geocodificación es asíncrono, ya que la API de Google Maps debe realizar una llamada a un servidor externo. Por esa razón, debe pasar un método de devolución de llamada para ejecutar una vez completada la solicitud. Este método de devolución de llamada procesa los resultados. Tenga en cuenta que el geocodificador puede devolver más de un resultado.Accede al servicio de geocodificación API de Google Maps dentro de su código a través del objeto constructor google.maps.Geocoder.

El método Geocoder.geocode() inicia una solicitud al servicio de geocodificación, pasándole un literal de objeto GeocoderRequest que contiene los términos de entrada y un método de devolución de llamada para ejecutar al recibir la respuesta.El objeto literal GeocoderRequest contiene los siguientes campos:

Parámetros obligatorios: debe proporcionar uno, y solo uno, de los siguientes campos:

  • address : la dirección que desea geocodificar.
  • o location : el LatLng (o LatLngLiteral ) para el que desea obtener la dirección más cercana y legible para humanos. El geocodificador realiza un geocódigo inverso . Consulte Geocodificación inversa para obtener más información. o placeId : el ID de lugar del lugar para el que desea obtener la dirección legible por humanos más cercana. Obtenga más información sobre cómo recuperar una dirección para una ID de lugar .
Parámetros opcionales:
  • bounds : los LatLngBounds dentro de los cuales se pueden sesgar los resultados de geocodificación de manera más prominente. El parámetro de bounds solo influirá, no restringirá por completo, los resultados del geocodificador. Consulte más información sobre la polarización de la vista a continuación.
  • componentRestrictions : se usa para restringir los resultados a un área específica. Consulte más información sobre el filtrado de componentes a continuación.
  • region : el código de región, especificado como una subetiqueta de region idioma IANA . En la mayoría de los casos, estas etiquetas se asignan directamente a valores de dos caracteres conocidos de ccTLD ("dominio de nivel superior"). El parámetro de region solo influirá, no restringirá por completo, los resultados del geocodificador. Consulte más información sobre el sesgo de código de región a continuación.

Respuestas de geocodificación

El servicio de geocodificación requiere un método de devolución de llamada para ejecutarse al recuperar los resultados del geocodificador. Esta devolución de llamada debe pasar dos parámetros para contener los results y un código de status , en ese orden.Resultados de geocodificaciónEl objeto GeocoderResult representa un único resultado de geocodificación. Una solicitud de geocodificación puede devolver múltiples objetos de resultado:

Estos campos se explican a continuación:

  • types[] es una matriz que indica el tipo de dirección del resultado devuelto. Esta matriz contiene un conjunto de cero o más etiquetas que identifican el tipo de característica devuelta en el resultado. Por ejemplo, un geocódigo de "Chicago" devuelve "localidad" que indica que "Chicago" es una ciudad, y también devuelve "político" que indica que es una entidad política. Consulte más información sobre los tipos de direcciones y los tipos de componentes de direcciones a continuación.
  • formatted_address es una cadena que contiene la dirección legible por humanos de esta ubicación.A menudo, esta dirección es equivalente a la dirección postal. Tenga en cuenta que algunos países, como el Reino Unido, no permiten la distribución de direcciones postales verdaderas debido a restricciones de licencia.La dirección formateada está compuesta lógicamente por uno o más componentes de dirección . Por ejemplo, la dirección "111 8th Avenue, New York, NY" consta de los siguientes componentes: "111" (el número de la calle), "8th Avenue" (la ruta), "New York" (la ciudad) y "NY "(el estado de EE. UU.).No analice la dirección formateada mediante programación. En su lugar, debe usar los componentes de dirección individuales, que la respuesta de la API incluye además del campo de dirección formateada.
  • address_components[] es una matriz que contiene los componentes separados aplicables a esta dirección.Cada componente de dirección generalmente contiene los siguientes campos:
    • types[] es una matriz que indica el tipo del componente de dirección. Vea la lista de tipos admitidos .
    • long_name es la descripción de texto completo o el nombre del componente de dirección tal como lo devuelve el Geocoder.
    • short_name es un nombre textual abreviado para el componente de dirección, si está disponible. Por ejemplo, un componente de dirección para el estado de Alaska puede tener un nombre long_name de "Alaska" y un nombre short_name de "AK" utilizando la abreviatura postal de 2 letras.
    Tenga en cuenta los siguientes datos sobre la matriz address_components[] :
    • La matriz de componentes de dirección puede contener más componentes que formatted_address .
    • La matriz no incluye necesariamente todas las entidades políticas que contienen una dirección, aparte de las incluidas en formatted_address . Para recuperar todas las entidades políticas que contienen una dirección específica, debe utilizar la geocodificación inversa, pasando la latitud / longitud de la dirección como parámetro de la solicitud.
    • No se garantiza que el formato de la respuesta sea el mismo entre las solicitudes. En particular, el número de address_components varía según la dirección solicitada y puede cambiar con el tiempo para la misma dirección. Un componente puede cambiar de posición en la matriz. El tipo del componente puede cambiar. Un componente particular puede faltar en una respuesta posterior.
    Consulte más información sobre los tipos de direcciones y los tipos de componentes de direcciones a continuación.
  • partial_match indica que el geocodificador no devolvió una coincidencia exacta para la solicitud original, aunque pudo coincidir con parte de la dirección solicitada. Es posible que desee examinar la solicitud original de errores ortográficos y / o una dirección incompleta.Las coincidencias parciales ocurren con mayor frecuencia para las direcciones de calles que no existen dentro de la localidad que pasa en la solicitud. Las coincidencias parciales también se pueden devolver cuando una solicitud coincide con dos o más ubicaciones en la misma localidad. Por ejemplo, "21 Henr St, Bristol, Reino Unido" devolverá una coincidencia parcial para Henry Street y Henrietta Street. Tenga en cuenta que si una solicitud incluye un componente de dirección mal escrita, el servicio de geocodificación puede sugerir una dirección alternativa. Las sugerencias activadas de esta manera también se marcarán como una coincidencia parcial.
  • place_id es un identificador único de un lugar, que se puede usar con otras API de Google. Por ejemplo, puede usar place_id con la biblioteca API de Google Places para obtener detalles de una empresa local, como el número de teléfono, el horario de atención, las opiniones de los usuarios y más. Consulte la descripción general de ID de lugar .
  • postcode_localities[] es una matriz que denota todas las localidades contenidas en un código postal, y solo está presente cuando el resultado es un código postal que contiene múltiples localidades. Esta matriz puede contener hasta 10 localidades.
  • geometry contiene la siguiente información:
    • location contiene la latitud geocodificada, el valor de longitud. Tenga en cuenta que devolvemos esta ubicación como un objeto LatLng , no como una cadena con formato.
    • location_type almacena datos adicionales sobre la ubicación especificada. Actualmente se admiten los siguientes valores:
      • ROOFTOP indica que el resultado devuelto refleja un geocódigo preciso.
      • RANGE_INTERPOLATED indica que el resultado devuelto refleja una aproximación (generalmente en una carretera) interpolada entre dos puntos precisos (como las intersecciones). Los resultados interpolados generalmente se devuelven cuando los códigos geográficos de la azotea no están disponibles para una dirección de calle.
      • GEOMETRIC_CENTER indica que el resultado devuelto es el centro geométrico de un resultado, como una polilínea (por ejemplo, una calle) o un polígono (región).
      • APPROXIMATE indica que el resultado devuelto es aproximado.
    • viewport almacena la ventana recomendada para el resultado devuelto.
    • bounds (opcionalmente devueltos) almacenan los LatLngBounds que pueden contener completamente el resultado devuelto. Tenga en cuenta que estos límites pueden no coincidir con la ventana gráfica recomendada. (Por ejemplo, San Francisco incluye las Islas Farallón , que técnicamente son parte de la ciudad, pero no deben devolverse en la ventana gráfica).
Geocoder devolverá las direcciones utilizando la configuración de idioma preferida del navegador o el idioma especificado al cargar el API JavaScript utilizando el parámetro de language . (Para obtener más información, consulte Localización ) .Tipos de dirección y tipos de componentes de direcciónLa matriz de types[] en GeocoderResult indica el tipo de dirección .

La matriz de types[] también puede devolverse dentro de un GeocoderAddressComponent para indicar el tipo del componente de dirección particular.

Las direcciones devueltas por el geocodificador pueden tener varios tipos; Los tipos pueden considerarse etiquetas. Por ejemplo, muchas ciudades están etiquetadas con el tipo political y de locality .El geocodificador admite y devuelve los siguientes tipos tanto en los tipos de dirección como en los tipos de componentes de dirección:

  • street_address indica una dirección de calle precisa.
  • route indica una ruta con nombre (como "US 101").
  • intersection indica una intersección principal, generalmente de dos carreteras principales.
  • political indica una entidad política. Por lo general, este tipo indica un polígono de alguna administración civil.
  • country indica la entidad política nacional, y generalmente es el tipo de orden más alto devuelto por el Geocodificador.
  • administrative_area_level_1 indica una entidad civil de primer orden por debajo del nivel del país. Dentro de los Estados Unidos, estos niveles administrativos son estados. No todas las naciones exhiben estos niveles administrativos. En la mayoría de los casos, los nombres cortos de Administrative_area_level_1 coincidirán estrechamente con las subdivisiones ISO 3166-2 y otras listas ampliamente difundidas; sin embargo, esto no está garantizado ya que nuestros resultados de geocodificación se basan en una variedad de señales y datos de ubicación.
  • administrative_area_level_2 indica una entidad civil de segundo orden por debajo del nivel del país. Dentro de los Estados Unidos, estos niveles administrativos son condados. No todas las naciones exhiben estos niveles administrativos.
  • administrative_area_level_3 indica una entidad civil de tercer orden por debajo del nivel del país. Este tipo indica una división civil menor. No todas las naciones exhiben estos niveles administrativos.
  • administrative_area_level_4 indica una entidad civil de cuarto orden por debajo del nivel del país. Este tipo indica una división civil menor. No todas las naciones exhiben estos niveles administrativos.
  • administrative_area_level_5 indica una entidad civil de quinto orden por debajo del nivel del país. Este tipo indica una división civil menor. No todas las naciones exhiben estos niveles administrativos.
  • colloquial_area indica un nombre alternativo de uso común para la entidad.
  • locality indica una entidad política de ciudad o pueblo incorporado.
  • sublocality indica una entidad civil de primer orden debajo de una localidad. Para algunas ubicaciones puede recibir uno de los tipos adicionales: sublocality_level_1 a sublocality_level_5 . Cada nivel de sublocalidad es una entidad civil. Los números más grandes indican un área geográfica más pequeña.
  • neighborhood indica un barrio con nombre
  • premise indica una ubicación con nombre, generalmente un edificio o colección de edificios con un nombre común
  • subpremise indica una entidad de primer orden debajo de una ubicación con nombre, generalmente un edificio singular dentro de una colección de edificios con un nombre común
  • postal_code indica un código postal como se usa para direccionar el correo postal dentro del país.
  • natural_feature indica una característica natural prominente.
  • airport indica un aeropuerto.
  • park indica un parque con nombre.
  • point_of_interest indica un punto de interés con nombre. Por lo general, estos "PDI" son entidades locales prominentes que no encajan fácilmente en otra categoría, como "Empire State Building" o "Torre Eiffel".
Una lista vacía de tipos indica que no hay tipos conocidos para el componente de dirección particular, por ejemplo, Lieu-dit en Francia.Además de lo anterior, los componentes de la dirección pueden incluir los siguientes tipos.Nota: Esta lista no es exhaustiva y está sujeta a cambios.
  • floor indica el piso de la dirección de un edificio.
  • establishment generalmente indica un lugar que aún no ha sido categorizado.
  • point_of_interest indica un punto de interés con nombre.
  • parking indica un estacionamiento o estructura de estacionamiento.
  • post_box indica un buzón postal específico.
  • postal_town indica una agrupación de áreas geográficas, como la locality y la sublocality , utilizadas para las direcciones de correo en algunos países.
  • room indica la sala de la dirección de un edificio.
  • street_number indica el número de calle preciso.
  • bus_station , train_station y transit_station indican la ubicación de una parada de autobús, tren o transporte público.
Códigos de estadoEl código de status puede devolver uno de los siguientes valores:
  • "OK" indica que no se produjeron errores; la dirección se analizó correctamente y se devolvió al menos un geocódigo.
  • "ZERO_RESULTS" indica que el geocódigo fue exitoso pero no "ZERO_RESULTS" resultados. Esto puede ocurrir si al geocodificador se le pasó una address inexistente.
  • "OVER_QUERY_LIMIT" indica que ha superado su cuota.
  • "REQUEST_DENIED" indica que su solicitud fue denegada. La página web no puede usar el geocodificador.
  • "INVALID_REQUEST" generalmente indica que falta la consulta ( address , components o latlng ).
  • "UNKNOWN_ERROR" indica que la solicitud no se pudo procesar debido a un error del servidor. La solicitud puede tener éxito si vuelve a intentarlo.
  • "ERROR" indica que se agotó el tiempo de espera de la solicitud o que hubo un problema al contactar con los servidores de Google. La solicitud puede tener éxito si vuelve a intentarlo.

En este ejemplo, geocodificamos una dirección y colocamos un marcador en los valores de latitud y longitud devueltos. Tenga en cuenta que el controlador se pasa como una función literal anónima.

 Ver ejemplo.    

Sesgo de ventana gráfica

   

Puede indicar al Servicio de geocodificación que prefiera los resultados dentro de una ventana gráfica determinada (expresada como un cuadro delimitador). Para ello, establezca el parámetro de bounds dentro del objeto literal GeocoderRequest para definir los límites de esta ventana gráfica. Tenga en cuenta que el sesgo solo prefiere resultados dentro de los límites; Si existen resultados más relevantes fuera de estos límites, pueden incluirse.Por ejemplo, un código geográfico para "Winnetka" generalmente devuelve este suburbio de Chicago:

       

Sin embargo, al especificar un parámetro de bounds que define un cuadro delimitador para el Valle de San Fernando de Los Ángeles, este código geográfico devuelve el vecindario llamado "Winnetka" en esa ubicación:

Sesgo de código de región

 

Puede configurar el Servicio de geocodificación para que devuelva resultados sesgados a una región en particular explícitamente utilizando el parámetro region . Este parámetro toma un código de región, especificado como una subetiqueta de region idioma IANA .

En la mayoría de los casos, estas etiquetas se asignan directamente a valores de dos caracteres conocidos de ccTLD ("dominio de nivel superior") como "uk" en "co.uk", por ejemplo. En algunos casos, la etiqueta de region también admite códigos ISO-3166-1, que a veces difieren de los valores de ccTLD ("GB" para "Gran Bretaña", por ejemplo).Se pueden enviar solicitudes de geocodificación para cada dominio en el que la aplicación principal de Google Maps ofrece geocodificación.

Tenga en cuenta que el sesgo solo prefiere resultados para un dominio específico; Si existen resultados más relevantes fuera de este dominio, se pueden incluir.Por ejemplo, un código geográfico para "Toledo" devuelve este resultado, ya que el dominio predeterminado para el Servicio de codificación geográfica se establece en los Estados Unidos:

 

Filtrado de componentes

   

Puede configurar el Servicio de geocodificación para que devuelva resultados de direcciones restringidos a un área específica, mediante el uso de un filtro de componentes. Especifique el filtro en el parámetro componentRestrictions. Los valores de filtro admiten los mismos métodos de corrección ortográfica y coincidencia parcial que otras solicitudes de geocodificación.El geocodificador solo devuelve los resultados que coinciden con todos los filtros de componentes. Es decir, evalúa las especificaciones del filtro como un AND, no un OR.Un filtro de componentes consta de uno o más de los siguientes elementos:

 
  • route coincide con el nombre largo o corto de una ruta.
  • coincidencias de locality contra tipos de localidad y sublocalidad.
  • administrativeArea coincide con todos los niveles del área administrativa.
  • postalCode coincide con códigos postales y prefijos de códigos postales.
  • country coincide con un nombre de país o un código de país ISO 3166-1 de dos letras. Nota: La API sigue el estándar ISO para definir países, y el filtrado funciona mejor cuando se usa el código ISO correspondiente del país.

El siguiente ejemplo muestra el uso del parámetro componentRestrictions para filtrar por country y postalCode :

Geocodificación inversa (búsqueda de dirección)

El término geocodificación generalmente se refiere a traducir una dirección legible por humanos en una ubicación en un mapa. El proceso de hacer lo contrario, traducir una ubicación en el mapa a una dirección legible para humanos, se conoce como geocodificación inversa .En lugar de proporcionar una address texto, proporcione un par de latitud / longitud separados por comas en el parámetro de location .El siguiente ejemplo geocodifica un valor de latitud / longitud y centra el mapa en esa ubicación, mostrando una ventana de información con la dirección formateada:

    Ver ejemplo .

Tenga en cuenta que en el ejemplo anterior mostramos el primer resultado seleccionando results[0] . El geocodificador inverso a menudo devuelve más de un resultado. Las direcciones geocodificadas no son solo direcciones postales, sino cualquier forma de nombrar geográficamente una ubicación. Por ejemplo, al geocodificar un punto en la ciudad de Chicago, el punto geocodificado puede etiquetarse como una dirección de calle, como la ciudad (Chicago), como su estado (Illinois) o como un país (Estados Unidos). Todos son direcciones para el geocodificador. El geocodificador inverso devuelve todos estos resultados.El geocodificador inverso coincide con entidades políticas (países, provincias, ciudades y vecindarios), direcciones y códigos postales.Aquí hay un ejemplo de la lista de direcciones que la consulta anterior puede devolver:

Las direcciones se devuelven en el orden de mejor a menor coincidencia. En general, la dirección más exacta es el resultado más destacado, como lo es en este caso. Tenga en cuenta que devolvemos diferentes tipos de direcciones, desde la dirección más específica a entidades políticas menos específicas como vecindarios, ciudades, condados, estados, etc. Si desea coincidir con una dirección más general, puede inspeccionar los results[].types field.Nota: La geocodificación inversa no es una ciencia exacta. El geocodificador intentará encontrar la ubicación direccionable más cercana dentro de una cierta tolerancia.Recuperando una dirección para una ID de lugarProporcione un placeId para encontrar la dirección de un ID de lugar determinado.

El ID de lugar es un identificador único que se puede usar con otras API de Google. Por ejemplo, puede proporcionar el placeId devuelto por la API de carreteras para obtener la dirección de un punto de referencia.

Para obtener más información sobre las ID de lugares, consulte la descripción general de ID de lugares .Cuando proporciona un placeId , la solicitud no puede contener ninguno de los siguientes campos:

  • address
  • latLng
  • location
  • componentRestrictions

El siguiente ejemplo acepta una ID de lugar, encuentra la dirección correspondiente y centra el mapa en esa ubicación. También muestra una ventana de información que muestra la dirección formateada del lugar relevante:// Initialize the map.

Fuentes
  1. ((es_CO)) | Support - Geocoding Service - Google Inc.
Comentario
Image
Comentarios