Optimisation de l'utilisation des quotas lors du géocodage

Le geocoding est le processus de conversion des adresses ("1600 Amphitheatre Parkway, Mountain View, CA") par des coordonnées géographiques (37.423021, -122.083739), que vous pouvez utiliser pour placer les repères ou positionner la carte. Les API Google Maps Platform offrent approches du geocoding:

  • Geocoding côté client qui s'exécute dans le navigateur, généralement en réponse à une action de l'utilisateur. L'API Maps JavaScript fournit classes qui effectuent les requêtes à votre place. Cette approche est décrite dans la API Maps JavaScript documentation.
  • Geocoding côté serveur HTTP qui permet à votre serveur d'interroger directement les serveurs de Google pour les géocodes. L'API Geocoding correspond au Web qui fournit cette fonctionnalité. Généralement, vous intégrez ce avec un autre code qui s'exécute côté serveur. Geocoding côté serveur est décrit dans le API Geocoding documentation.

Exemples de géocodage côté client et côté serveur

Voici un exemple de geocoding côté client, qui accepte une adresse, la géocode, déplace le centre de la carte vers ce lieu, puis ajoute une sur la carte:

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
    });
  }
});

Pour voir d'autres exemples, consultez les API Maps JavaScript documentation.

Voici un exemple utilisant Python pour effectuer une opération côté serveur geocoding:

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()

Cela crée un objet JSON avec le contenu suivant :

{
  "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
        }
      }
    }
  } ]
}

Le geocoder côté serveur propose également un format XML comme alternative au JSON. Pour voir d'autres exemples, consultez les API Geocoding documentation et bibliothèques clientes pour Python et d'autres langues.

Remarques concernant les quotas et les coûts

Les coûts, les quotas et les limites de débit du géocodage déterminent les stratégies décrites dans ce document.

Coût

<ph type="x-smartling-placeholder"></ph> Les limites de quota par jour (QPD) ne sont plus utilisées pour les requêtes de geocoding. Chaque requête de geocoding, que ce soit côté client via le navigateur ou côté serveur via le service Web de l'API Geocoding, est facturés à chaque prix. Pour gérer vos coûts d'utilisation, limiter votre quota quotidien.

Limites de débit

Le débit du service de géocodage est limité à 3 000 RPM (requêtes par minute), calculé en additionnant les requêtes côté client et côté serveur.

Lors de l'exécution de requêtes de geocoding côté client à intervalles réguliers, par exemple dans une application mobile, vos requêtes peuvent renvoyer des erreurs si tous vos utilisateurs effectuant des demandes au même moment (par exemple, à la même seconde minute). Pour éviter cela, vous avez le choix entre les solutions suivantes :

Mise en cache

Voir <ph type="x-smartling-placeholder"></ph> Règles de l'API Geocoding sur la mise en cache.

Dans quels cas utiliser le géocodage côté client

La réponse courte est « presque toujours ». Pour les raisons suivantes :

  • Les requêtes et réponses côté client permettent d'obtenir une expérience interactive pour les utilisateurs.
  • Une requête côté client peut inclure des informations qui améliorent le geocoding qualité: langue de l'utilisateur, région et fenêtre d'affichage.

En particulier, le géocodage côté client est préférable lors du geocoding d'adresses. en fonction des données saisies par l'utilisateur.

Le géocodage côté client présente deux architectures de base :

  • Réalisation de tout le géocodage et l'affichage dans le navigateur. Par exemple, l'utilisateur saisit une adresse sur votre page. Votre application la géocode. Ensuite, votre page utilise le géocode pour créer un repère sur la carte. Ou votre application le fait une analyse simple à l'aide du géocode. Aucune donnée n'est envoyée à votre serveur. Cela réduit la charge du serveur.
  • Réalisation du géocodage dans le navigateur, puis envoi du résultat au serveur. Par exemple, l'utilisateur saisit une adresse sur votre page. Votre application le géocode dans le navigateur. L'application envoie ensuite les données à votre serveur. La répond avec des données, telles que des points d'intérêt à proximité. Ce vous permet de personnaliser une réponse en fonction de vos propres données.

Dans quels cas utiliser le géocodage côté serveur

Le geocoding côté serveur est mieux adapté aux applications vous obligent à géocoder des adresses sans intervention du client. Exemple courant lorsque l'on obtient un ensemble de données qui est fourni indépendamment de l'entrée utilisateur, Par exemple, si vous disposez d'un ensemble fixe, fini et connu de les adresses e-mail devant être géocodées. Le geocoding côté serveur peut Elle peut également servir de solution de secours en cas d'échec du geocoding côté client.

Certains problèmes possibles sont une augmentation inutile de la latence pour l'utilisateur, et des résultats de géocodage de moins bonne qualité que ceux côté client, car moins sont disponibles dans la demande.