Eso es todo.

Para comenzar a desarrollar, consulta nuestra documentación para desarrolladores.

Activar la Google Maps Geocoding API

Para que puedas comenzar, te proporcionaremos orientación en la Google Developers Console a fin de que hagas primero algunas acciones:

  1. Crear o seleccionar un proyecto
  2. Activar la Google Maps Geocoding API
  3. Crear claves correspondientes
Continuar

Optimización del uso de la cuota durante la geocodificación

La geocodificación es el proceso que convierte direcciones (como “1600 Amphitheatre Parkway, Mountain View, CA”) en coordenadas geográficas (37,423021, -122,083739) que puedes usar para colocar marcadores o posicionar el mapa. Las Google Maps API proporcionan dos enfoques de geocodificación:

  • Geocodificación en el cliente, que se ejecuta en el navegador, generalmente en respuesta a la acción del usuario. La Google Maps JavaScript API proporciona clases que realizan las solicitudes por ti. Este enfoque se describe en la documentación de Google Maps JavaScript API.
  • Geocodificación en el servidor HTTP, que le permite a tu servidor consultar geocódigos directamente en los servidores de Google. La Google Maps Geocoding API es el servicio web que proporciona esta funcionalidad. Generalmente, integras este servicio con otro código que se ejecuta en el servidor. La geocodificación en el servidor se describe en la documentación de Google Maps Geocoding API.

Ejemplos de geocodificación en el cliente y el servidor

Aquí te mostramos un ejemplo de geocodificación en el cliente que toma una dirección, le aplica geocodificación, traslada el centro del mapa a esa ubicación y agrega allí un marcador de mapa:

geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'address': address }, function(results, status) {
  if (status == google.maps.GeocoderStatus.OK) {
    map.setCenter(results[0].geometry.location);
    var marker = new google.maps.Marker({
      map: map,
      position: results[0].geometry.location
    });
  }
});

Para obtener más ejemplos, consulta la documentación de Google Maps JavaScript API.

Aquí te mostramos un ejemplo con Python para realizar una solicitud de geocodificación en el servidor:

import urllib2

address="1600+Amphitheatre+Parkway,+Mountain+View,+CA"
key="my-key-here"
url="https://maps.googleapis.com/maps/api/geocode/json?address=%s&key=%s" % (address, key)

response = urllib2.urlopen(url)
jsongeocode = response.read()

Esto genera un objeto JSON con el siguiente contenido:

{
  "status": "OK",
  "results": [ {
    "types": street_address,
    "formatted_address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
    "address_components": [ {
      "long_name": "1600",
      "short_name": "1600",
      "types": street_number
    }, {
      "long_name": "Amphitheatre Pkwy",
      "short_name": "Amphitheatre Pkwy",
      "types": route
    }, {
      "long_name": "Mountain View",
      "short_name": "Mountain View",
      "types": [ "locality", "political" ]
    }, {
      "long_name": "San Jose",
      "short_name": "San Jose",
      "types": [ "administrative_area_level_3", "political" ]
    }, {
      "long_name": "Santa Clara",
      "short_name": "Santa Clara",
      "types": [ "administrative_area_level_2", "political" ]
    }, {
      "long_name": "California",
      "short_name": "CA",
      "types": [ "administrative_area_level_1", "political" ]
    }, {
      "long_name": "United States",
      "short_name": "US",
      "types": [ "country", "political" ]
    }, {
      "long_name": "94043",
      "short_name": "94043",
      "types": postal_code
    } ],
    "geometry": {
      "location": {
        "lat": 37.4220323,
        "lng": -122.0845109
      },
      "location_type": "ROOFTOP",
      "viewport": {
        "southwest": {
          "lat": 37.4188847,
          "lng": -122.0876585
        },
        "northeast": {
          "lat": 37.4251799,
          "lng": -122.0813633
        }
      }
    }
  } ]
}

El geocodificador del servidor también proporciona un formato XML como alternativa a JSON. Para hallar más ejemplos, consulta la documentación de Google Maps Geocoding API y las bibliotecas de cliente para Python y otros lenguajes.

Consideraciones de cuotas

Las cuotas y los límites de índice para la geocodificación rigen las estrategias que se describen en este documento.

Cuando se usa el plan estándar, todas las solicitudes de geocodificación, ya sean en el cliente a través del navegador o en el servidor a través del servicio web Google Maps Geocoding API, tienen una cuota de 2500 solicitudes por día. Todas las solicitudes realizadas en un día se descuentan de la cuota para tu proyecto. Para acceder a cuotas diarias más altas, habilita la facturación de pago por uso como se describe en la guía para límites de uso.

Además de los límites de cuota diaria, el servicio de geocodificación tiene un índice limitado a 50 QPS (consultas por segundo), calculadas como la suma de las consultas del cliente y el servidor.

Al ejecutar solicitudes de geocodificación en el cliente a intervalos periódicos, como en una app para dispositivos móviles, tus solicitudes pueden mostrar errores si todos tus usuarios realizan solicitudes al mismo tiempo (por ejemplo, todas en el mismo segundo de cada minuto). Para evitar esto, considera una de las siguientes opciones:

  • Usa una estrategia de almacenamiento en caché.
  • Introduce intervalos aleatorios a tus solicitudes (jitter). Asegúrate de que las solicitudes sean aleatorias en toda tu base de usuarios.
  • Si realizas desarrollos para Android, usa una alarma de repetición inexacta.
  • Si realizas desarrollos para Android, selecciona una estrategia de localización.

Para los clientes de Google Maps APIs Premium Plan, las API ofrecen cuotas diarias más altas. Para obtener más información sobre las cuotas deGoogle Maps APIs Premium Plan, consulta la guía de índices y límites de uso de Premium Plan. Si aún te topas con límites de cuota usando Google Maps APIs Premium Plan, envía una solicitud de asistencia en el Google Cloud Support Portal.

Consideraciones sobre el almacenamiento en caché

Las Condiciones de servicio de la Google Maps API te permiten almacenar geocódigos en caché (es decir, almacenarlos en tu servidor por un tiempo limitado). El almacenamiento en caché puede ser útil si necesitas buscar la misma dirección varias veces. Sin embargo, recuerda que los resultados de la geocodificación cambian a medida que tus datos se vuelven más precisos. Por lo tanto, aunque almacenes los datos en caché, debes actualizarlos periódicamente a fin de asegurarte de obtener los mejores geocódigos para tus ubicaciones.

Cuándo usar geocodificación en el cliente

La respuesta es “casi siempre”. Estos son los motivos:

  • La solicitud y respuesta en el cliente proporcionan una experiencia más rápida e interactiva a los usuarios.
  • Una solicitud en el cliente puede incluir información que mejore la calidad de la geocodificación: idioma del usuario, región y ventana de visualización.

En particular, la geocodificación en el cliente es mejor cuando se aplica a direcciones conforme a entradas del usuario.

Existen dos arquitecturas básicas para la geocodificación en el cliente:

  • Aplicar la geocodificación y mostrarla por completo en el navegador. Por ejemplo, el usuario ingresa una dirección en tu página. Tu aplicación le aplica geocodificación. Luego, la página usa el geocódigo para crear un marcador en el mapa. Como alternativa, la app realiza un análisis simple usando el geocódigo. No se envían datos al servidor. Esto reduce la carga del servidor.
  • Realizar la geocodificación en el navegador y enviarla al servidor. Por ejemplo, el usuario ingresa una dirección en tu página. Tu aplicación le aplica geocodificación en el navegador. Luego, la app envía los datos al servidor. El servidor responde con datos, como puntos de interés cercanos. Esto te permite personalizar una respuesta en función de tus propios datos, y almacenar en caché el geocódigo si así lo decides. El almacenamiento en caché te permite aplicar aún más optimizaciones. Por ejemplo, puedes consultar la dirección en el servidor a fin de ver si recientemente almacenaste en caché un geocódigo para esa dirección. Si no encuentras una coincidencia en el caché, no se mostrarán resultados en el navegador, y este podrá aplicar geocodificación al resultado y enviarlo nuevamente al servidor para almacenarlo en caché.

Cuándo usar geocodificación en el servidor

La geocodificación en el servidor es útil para aplicaciones que te exijan aplicar geocodificación a las direcciones sin entradas de un cliente. Un ejemplo común es el caso en que recibes un conjunto de datos independiente de las entradas del usuario; por ejemplo, si tienes un conjunto de direcciones conocido, fijo y limitado al que necesitas aplicar geocodificación. La geocodificación en el servidor también es útil como copia de seguridad cuando falla la geocodificación en el cliente.

Entre algunos de los posibles inconvenientes se incluyen un aumento innecesario de la latencia para el usuario y resultados de geocodificación de calidad más baja que la del cliente debido a que hay menos información disponible en la solicitud.

La arquitectura básica para una aplicación de geocodificación en el servidor es la siguiente:

  • Una aplicación basada en servidor envía una dirección a la secuencia de comandos de geocodificación del servidor.
  • La secuencia de comandos revisa el caché para ver si se le ha aplicado geocodificación recientemente a esa dirección.
  • Si esto ha sucedido, la secuencia de comandos le envía el resultado a la aplicación original.
  • Si esto no ha sucedido, la secuencia de comandos envía una solicitud de geocodificación a Google. Una vez que obtiene un resultado, lo almacena en caché y luego le envía el resultado a la aplicación original.

Conclusión

En general, una combinación de geocodificación en el cliente y almacenamiento en caché satisfará la mayoría de tus necesidades. Si experimentas problemas con la cuota, considera habilitar la facturación o comprar una licencia de Premium Plan.

Enviar comentarios sobre…

Google Maps Geocoding API
Google Maps Geocoding API
¿Necesitas ayuda? Visita nuestra página de asistencia.