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

La geocodificación es el proceso de conversión de direcciones ("1600 Amphitheatre Parkway, Mountain View, CA") a coordenadas geográficas (37.423021, -122.083739), que puedes usar para colocar marcadores o posicionar el mapa. Las APIs de Google Maps Platform proporcionan dos de la geocodificación:

  • Geocodificación del cliente, que se ejecuta en el navegador, generalmente en respuesta a la acción del usuario. La API de Maps JavaScript proporciona que realizan las solicitudes por ti. Este enfoque se describe en el API de Maps JavaScript documentación.
  • Geocodificación en el servidor HTTP, que permite que tu servidor consulte directamente los servidores de Google para geocódigos. La API de Geocoding es la servicio que proporciona esta funcionalidad. Por lo general, se integra servicio con otro código que se ejecuta en el servidor. Geocodificación del servidor se describe en el API de Geocoding documentación.

Ejemplos de geocodificación en el cliente y el servidor

Este es un ejemplo de geocodificación del cliente, que toma un geográfica, traslada el centro del mapa a esa ubicación y agrega un marcador de mapa allí:

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 ver más ejemplos, consulta el API de Maps JavaScript documentación.

Este es un ejemplo en el que se usa Python para hacer una instancia del servidor geocodificación:

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 al JSON Para ver más ejemplos, consulta el API de Geocoding documentación y la bibliotecas cliente para Python y otros idiomas.

Consideraciones de cuotas y costos

Los costos, las cuotas y los límites de frecuencia de la geocodificación impulsan las estrategias descritas en esta .

Costo

Los límites de la cuota por día (QPD) ya no están en uso para las solicitudes de geocodificación. En cambio, cada solicitud de geocodificación, ya sea del lado del cliente a través del navegador o del servidor a través de la de la API de Geocoding, facturado a un precio por cada precio. Para administrar el costo de uso, considera limitar tu cuota diaria.

Límites de frecuencia

El servicio de geocodificación tiene un límite de índice de 3,000 QPM (consultas por minuto). calculada como la suma de las consultas del cliente y del servidor.

Cuando se ejecutan solicitudes de geocodificación del cliente a intervalos periódicos, como en una app para dispositivos móviles, tus solicitudes pueden arrojar errores si todos los 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:

  • Introduce intervalos aleatorios a tus solicitudes (jitter). Garantizar las solicitudes son aleatorios en toda tu base de usuarios.
  • Si desarrollas contenido para Android, usa una etiqueta inexacta Alarma recurrente.
  • Si desarrollas contenido para Android, selecciona una ubicación adecuada estrategia.

Almacenamiento en caché

Consulta Políticas de la API de Geocoding sobre el almacenamiento en caché

Cuándo usar geocodificación en el cliente

La respuesta corta es "casi siempre". Estos son los motivos:

  • La solicitud y la respuesta del cliente proporcionan una más interactiva para los usuarios.
  • Una solicitud del cliente puede incluir información que mejore la geocodificación calidad: idioma del usuario, región y viewport.

En particular, la geocodificación del cliente es mejor cuando se geocodifican direcciones. según la entrada 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. Después tu página usa el geocódigo para crear un marcador en el mapa. O tu app un análisis sencillo con 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 la geocodifica en el navegador. Luego, la app envía los datos al servidor. El servidor responde con algunos datos, como los lugares de interés cercanos. Esta te permite personalizar una respuesta en función de tus propios datos.

Cuándo usar geocodificación en el servidor

La geocodificación del servidor se usa mejor para aplicaciones que te solicitarán que codifiques las direcciones sin la intervención de un cliente. Un ejemplo común es cuando obtienes un conjunto de datos independientemente de las entradas del usuario por ejemplo, si tienes un conjunto fijo, finito y conocido de que necesitan geocodificación. La geocodificación del servidor también puede ser útil como copia de seguridad cuando falla la geocodificación del cliente.

Algunas posibles preocupaciones son un aumento innecesario de la latencia para el usuario y de geocodificación son de menor calidad que los del cliente, ya que información está disponible en la solicitud.