Vous êtes prêt !

Pour passer à l'étape de développement, accédez à notre documentation pour les développeurs.

Activer Google Maps Geocoding API

Pour commencer, nous allons vous guider à travers la console Google Developers et effectuer deux ou trois petites choses :

  1. Créer ou sélectionner un projet
  2. Activer Google Maps Geocoding API
  3. Créer les clés appropriées
Continuer

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

Le géocodage est le processus qui permet de convertir des adresses (« 1600 Amphitheatre Parkway, Mountain View, CA ») en coordonnées géographiques (37.423021, -122.083739), que vous pouvez ensuite utiliser pour placer des marqueurs ou positionner la carte. Google Maps API propose deux approches du géocodage :

  • Le géocodage côté client s'effectue dans le navigateur, généralement en réponse à une action de l'utilisateur. Google Maps JavaScript API fournit des classes qui réalisent les requêtes pour vous. Cette approche est décrite dans la documentation Google Maps JavaScript API.
  • Le géocodage côté serveur HTTP permet à votre serveur de demander directement les géocodes aux serveurs de Google. Google Maps Geocoding API est le service Web qui fournit cette fonctionnalité. En général, ce service est intégré à un autre code qui s'exécute côté serveur. Le géocodage côté serveur est décrit dans la documentation Google Maps Geocoding API.

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

L'échantillon de code ci-dessous réalise un géocodage côté client. Il récupère une adresse, la géocode, déplace le centre de la carte vers cette position et y ajoute un marqueur de 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 plus d'exemples, voir la documentation Google Maps JavaScript API.

L'exemple ci-dessous utilise Python pour réaliser une requête de géocodage côté serveur :

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

Par ailleurs, le géocodeur côté serveur propose un format XML que vous pouvez utiliser à la place de JSON. Pour plus d'exemples, voir la documentation Google Maps Geocoding API, ainsi que les bibliothèques client de Python et des autres langages.

À savoir sur les quotas

Les quotas de géocodage et les limites de taux déterminent les stratégies décrites dans ce document.

Lorsque vous utilisez le plan Standard, toutes les requêtes de géocodage (côté client via le navigateur ou côté serveur via le service Web Google Maps Geocoding API) sont soumises à un quota de 2 500 requêtes par jour. Le quota de votre projet tient compte de toutes les requêtes réalisées pendant la journée. Pour bénéficier de quotas journaliers supérieurs, activez la facturation à l'utilisation comme décrit dans le guide dédié aux limites d'utilisation.

Outre les quotas journaliers, le taux de requêtes du service de géocodage est limité à 50 requêtes par seconde (QPS), en additionnant les requêtes côté client et côté serveur.

Lorsque des requêtes de géocodage sont exécutées côté client à intervalles réguliers (dans une application mobile, par exemple), elles peuvent renvoyer des erreurs si tous les utilisateurs effectuent les mêmes requêtes au même moment (à la même seconde de chaque minute, par exemple). Pour éviter cela, vous avez le choix entre les solutions suivantes :

  • Utilisez une stratégie de mise en cache.
  • Introduisez des intervalles aléatoires dans vos requêtes (gigue). Assurez-vous que les requêtes sont aléatoires sur l'ensemble de votre base d'utilisateurs.
  • Si vous développez pour Android, utilisez une alarme à répétition inexacte.
  • Si vous développez pour Android, sélectionnez une stratégie de localisation appropriée.

Pour les clients Google Maps APIs Premium Plan, les API offrent des quotas journaliers supérieurs. Pour plus d'informations sur les quotas Google Maps APIs Premium Plan, voir le guide dédié aux taux et limites d'utilisation de Premium Plan. Si les quotas continuent de vous poser problème lorsque vous utilisez Google Maps APIs Premium Plan, envoyez une demande de support sur le Google Cloud Support Portal.

À savoir sur la mise en cache

Les Conditions de service de Google Maps API vous autorisent à mettre en cache les géocodes (c'est-à-dire à les stocker sur votre serveur pendant une période limitée). La mise en cache peut s'avérer utile si vous êtes souvent amené à rechercher la même adresse. Toutefois, notez que les résultats de géocodage évoluent, car nos données deviennent de plus en plus précises. Par conséquent, même si vous avez mis des données en cache, vous devez les actualiser régulièrement pour vous assurer d'obtenir les meilleurs géocodes pour vos sites.

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

En deux mots : presque toujours. En effet :

  • Les requêtes et réponses côté client assurent une expérience utilisateur plus interactive.
  • Une requête côté client peut inclure des informations qui améliorent la qualité du géocodage (langue de l'utilisateur, région et fenêtre d'affichage).

En particulier, le géocodage côté client est idéal pour géocoder des adresses qui se basent sur des informations 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. Votre page utilise ensuite le géocode pour créer un marqueur sur la carte. Ou votre application effectue 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 la géocode dans le navigateur. L'application envoie ensuite les données à votre serveur. Le serveur répond en renvoyant des données, telles que les points d'intérêt situés à proximité. Cela vous permet de personnaliser une réponse en fonction de vos données, ainsi que de mettre le géocode en cache, si vous le souhaitez. Avec la mise en cache, le processus est encore plus optimal. Par exemple, vous pouvez envoyer l'adresse au serveur par le biais d'une requête, afin de déterminer si un géocode a récemment été mis en cache pour cette adresse. Si vous n'identifiez aucun géocode dans le cache, indiquez au navigateur que vous n'avez obtenu aucun résultat. Celui-ci géocode alors l'adresse et renvoie le résultat au serveur pour mise en cache.

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

Le géocodage côté serveur est optimal pour les applications dans lesquelles vous devez géocoder des adresses sans qu'un client n'ait à saisir des données. Un exemple classique serait l'obtention d'un jeu de données indépendant des informations saisies par l'utilisateur, tel qu'un ensemble fixe, fini et connu d'adresses à géocoder. Le géocodage côté serveur peut également s'avérer utile comme solution de sauvegarde, en cas d'échec du géocodage côté client.

Plusieurs problèmes peuvent se poser : la latence est susceptible d'augmenter inutilement pour l'utilisateur, et les résultats du géocodage risquent d'être de moins bonne qualité qu'avec le géocodage côté client, car les informations disponibles dans la requête sont plus réduites.

L'architecture de base d'une application de géocodage côté serveur est la suivante :

  • Une application basée sur le serveur envoie une adresse au script de géocodage du serveur.
  • Le script examine le cache pour déterminer si l'adresse a été géocodée récemment.
  • Si c'est le cas, le script renvoie le résultat vers l'application d'origine.
  • Sinon, il envoie une requête de géocodage à Google. Une fois le résultat obtenu, le script le met en cache, puis le renvoie vers l'application d'origine.

Conclusion

En général, une combinaison du géocodage côté client et de la mise en cache permet de satisfaire la plupart de vos besoins. Si vous vous heurtez à des problèmes de quota, il peut s'avérer judicieux d'activer la facturation ou d'acheter une licence Premium Plan.

Envoyer des commentaires concernant…

Google Maps Geocoding API
Google Maps Geocoding API
Besoin d'aide ? Consultez notre page d'assistance.