Requête et réponse de geocoding inversé (recherche d'adresse)

Le terme geocoding désigne généralement la traduction d'une adresse lisible en un emplacement sur une carte. Le processus inverse, c'est-à-dire la traduction d'un emplacement sur la carte en une adresse lisible, est appelé geocoding inversé.

Demandes de geocoding inversé

Paramètres obligatoires

  • latlng : coordonnées de latitude et de longitude spécifiant le lieu pour lequel vous souhaitez obtenir l'adresse lisible la plus proche.
  • key : clé API de votre application. Cette clé identifie votre application à des fins de gestion des quotas. Découvrez comment obtenir une clé.

Paramètres facultatifs

Voici les paramètres facultatifs que vous pouvez inclure dans une requête de geocoding inversé:

  • language : langue dans laquelle les résultats doivent être renvoyés.
    • Consultez la liste des langues acceptées. Google met régulièrement à jour les langues acceptées. Cette liste n'est donc peut-être pas exhaustive.
    • Si language n'est pas fourni, le geocoder tente d'utiliser la langue préférée spécifiée dans l'en-tête Accept-Language, ou la langue native du domaine à partir duquel la requête est envoyée.
    • Le geocoder s'efforce de fournir une adresse postale lisible à la fois pour l'utilisateur et pour les locaux. Pour atteindre cet objectif, il renvoie les adresses postales dans la langue locale, translittérées en un script que l'utilisateur peut lire si nécessaire, en tenant compte de la langue préférée. Toutes les autres adresses sont renvoyées dans la langue préférée. Les composants d'adresse sont tous renvoyés dans la même langue, choisie dans le premier composant.
    • Si un nom n'est pas disponible dans la langue préférée, le geocoder utilise la correspondance la plus proche.
  • region : code régional, spécifié sous forme de valeur ccTLD ("domaine de premier niveau") à deux caractères. Ce paramètre peut également avoir une incidence sur les résultats en fonction de la loi applicable.
  • result_type : filtre d'un ou de plusieurs types d'adresses, séparés par une barre verticale (|). Si le paramètre contient plusieurs types d'adresses, l'API renvoie toutes les adresses correspondant à l'un d'entre eux. Remarque sur le traitement: Le paramètre result_type ne restrict pas la recherche aux types d'adresses spécifiés. result_type sert plutôt de filtre post-recherche: l'API récupère tous les résultats pour le latlng spécifié, puis supprime ceux qui ne correspondent pas au ou aux types d'adresses spécifiés. Les valeurs suivantes sont acceptées :
    • street_address indique une adresse postale précise.
    • route indique une route nommée (par exemple, "US 101").
    • intersection indique une intersection majeure, généralement sur deux routes principales.
    • political indique une entité politique. Généralement, ce type indique un polygone de certaines administrations civiles.
    • country indique l'entité politique nationale et correspond généralement au type de premier ordre renvoyé par le Geocoder.
    • administrative_area_level_1 indique une entité civile de premier ordre en dessous du niveau du pays. Aux États-Unis, ces niveaux administratifs correspondent aux États. Toutes les nations ne possèdent pas ces niveaux administratifs. Dans la plupart des cas, les noms courts "administrative_area_level_1" correspondront fidèlement aux subdivisions ISO 3166-2 et aux autres listes largement diffusées. Cependant, cela n'est pas systématique, car nos résultats de geocoding se basent sur divers signaux et données de localisation.
    • administrative_area_level_2 indique une entité civile de deuxième ordre en dessous du niveau du pays. Aux États-Unis, ces niveaux administratifs correspondent aux comtés. Toutes les nations ne possèdent pas ces niveaux administratifs.
    • administrative_area_level_3 indique une entité civile de troisième ordre en dessous du niveau du pays. Ce type indique une division civile mineure. Toutes les nations ne possèdent pas ces niveaux administratifs.
    • administrative_area_level_4 indique une entité civile de quatrième ordre en dessous du niveau du pays. Ce type indique une division civile mineure. Toutes les nations ne possèdent pas ces niveaux administratifs.
    • administrative_area_level_5 indique une entité civile de cinquième ordre en dessous du niveau du pays. Ce type indique une division civile mineure. Toutes les nations ne possèdent pas ces niveaux administratifs.
    • administrative_area_level_6 indique une entité civile de sixième ordre en dessous du niveau du pays. Ce type indique une division civile mineure. Toutes les nations ne possèdent pas ces niveaux administratifs.
    • administrative_area_level_7 indique une entité civile de septième ordre en dessous du niveau du pays. Ce type indique une division civile mineure. Toutes les nations ne possèdent pas ces niveaux administratifs.
    • colloquial_area indique un autre nom couramment utilisé pour l'entité.
    • locality indique une entité politique de ville ou de municipalité incorporée.
    • sublocality indique une entité civile de premier ordre en dessous d'une localité. Pour certains établissements, vous pouvez recevoir l'un des types supplémentaires suivants : de sublocality_level_1 à sublocality_level_5. Chaque niveau de sous-localité correspond à une entité civile. Plus le nombre est élevé, plus la zone géographique est petite.
    • neighborhood indique un quartier nommé.
    • premise indique un lieu nommé, généralement un bâtiment ou un ensemble de bâtiments ayant un nom commun.
    • subpremise indique une entité de premier ordre située en dessous d'un lieu nommé, généralement un bâtiment particulier au sein d'un ensemble de bâtiments ayant un nom commun.
    • plus_code indique une référence de lieu encodée, déterminée par la latitude et la longitude. Vous pouvez utiliser des Plus Codes pour remplacer les adresses postales dans les endroits où elles n'existent pas (où les bâtiments ne sont pas numérotés ni nommés). Pour en savoir plus, consultez https://plus.codes.
    • postal_code indique un code postal utilisé dans les adresses de courrier postal du pays.
    • natural_feature indique un élément géographique naturel important.
    • airport indique un aéroport.
    • park indique un parc nommé.
    • point_of_interest indique un point d'intérêt nommé. En général, ces "POI" sont des entités locales importantes qui ne correspondent à aucune autre catégorie, comme "Empire State Building" ou "Tour Eiffel".
  • location_type : filtre d'un ou de plusieurs types de lieux, séparés par une barre verticale (|). Si le paramètre contient plusieurs types de lieux, l'API renvoie toutes les adresses qui correspondent à l'un d'entre eux. Remarque sur le traitement: Le paramètre location_type ne restrict pas la recherche aux types de zones géographiques spécifiés. location_type sert plutôt de filtre post-recherche: l'API récupère tous les résultats pour le latlng spécifié, puis supprime ceux qui ne correspondent pas aux types de lieux spécifiés. Les valeurs suivantes sont acceptées :
    • "ROOFTOP" ne renvoie que les adresses pour lesquelles Google dispose d'informations de localisation précises jusqu'à la précision de l'adresse postale.
    • "RANGE_INTERPOLATED" ne renvoie que les adresses qui reflètent une approximation (généralement sur une route) interpolée entre deux points précis (des intersections, par exemple). Une plage interpolée indique généralement que les géocodes de toit ne sont pas disponibles pour une adresse postale.
    • "GEOMETRIC_CENTER" ne renvoie que les centres géométriques d'un lieu, comme une polyligne (par exemple, une rue) ou un polygone (une région).
    • "APPROXIMATE" ne renvoie que les adresses considérées comme approximatives.

Si les filtres result_type et location_type sont présents, l'API ne renvoie que les résultats correspondant aux valeurs result_type et location_type. Si aucune des valeurs de filtre n'est acceptable, l'API renvoie ZERO_RESULTS.

Exemple de geocoding inversé

La requête suivante contient la valeur latitude/longitude pour un lieu à Brooklyn :

https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=YOUR_API_KEY

La requête ci-dessus renvoie le résultat suivant :

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "277",
               "short_name" : "277",
               "types" : [ "street_number" ]
            },
            {
               "long_name" : "Bedford Avenue",
               "short_name" : "Bedford Ave",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Williamsburg",
               "short_name" : "Williamsburg",
               "types" : [ "neighborhood", "political" ]
            },
            {
               "long_name" : "Brooklyn",
               "short_name" : "Brooklyn",
               "types" : [ "sublocality", "political" ]
            },
            {
               "long_name" : "Kings",
               "short_name" : "Kings",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "New York",
               "short_name" : "NY",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "United States",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "11211",
               "short_name" : "11211",
               "types" : [ "postal_code" ]
            }
         ],
         "formatted_address" : "277 Bedford Avenue, Brooklyn, NY 11211, USA",
         "geometry" : {
            "location" : {
               "lat" : 40.714232,
               "lng" : -73.9612889
            },
            "location_type" : "ROOFTOP",
            "viewport" : {
               "northeast" : {
                  "lat" : 40.7155809802915,
                  "lng" : -73.9599399197085
               },
               "southwest" : {
                  "lat" : 40.7128830197085,
                  "lng" : -73.96263788029151
               }
            }
         },
         "place_id" : "ChIJd8BlQ2BZwokRAFUEcm_qrcA",
         "types" : [ "street_address" ]
      },

  ... Additional <code>results[]</code> ...

Notez que le géocodeur inversé a renvoyé plusieurs résultats. Les résultats "formatted_address" ne correspondent pas seulement à des adresses postales, mais également à toutes les possibilités de nommer géographiquement un emplacement. Par exemple, lors du geocoding d'un point dans la ville de Chicago, le point géocodé peut être désigné par l'adresse postale, la ville (Chicago), l'État (Illinois) ou le pays (États-Unis). Toutes ces réponses sont des "adresses" pour le geocoder. Le geocoding inversé renvoie n'importe lequel de ces types en tant que résultats valides.

Le geocoding inversé fait correspondre les entités politiques (pays, provinces, villes et quartiers), les adresses postales et les codes postaux.

La liste complète des valeurs formatted_address renvoyées par la requête précédente est présentée ci-dessous.

{
   "plus_code" : {
      "compound_code" : "P27Q+MCM New York, NY, USA",
      "global_code" : "87G8P27Q+MCM"
   },
   "results" : [
      {
         "formatted_address" : "277 Bedford Ave, Brooklyn, NY 11211, USA",
         ...
         "types" : [ "street_address" ]
      },
      {
         "formatted_address" : "279 Bedford Ave, Brooklyn, NY 11211, USA",
         ...
         "types" : [ "premise" ]
      },
      {
         "formatted_address" : "277 Bedford Ave, Brooklyn, NY 11211, USA",
         ...
         "types" : [ "establishment", "point_of_interest" ]
      },
      {
         "formatted_address" : "291-275 Bedford Ave, Brooklyn, NY 11211, USA",
         ...
         "types" : [ "route" ]
      },
      {
         "formatted_address" : "P27Q+MC New York, NY, USA",
         ...
         "types" : [ "plus_code" ]
      },
      {
         "formatted_address" : "South Williamsburg, Brooklyn, NY, USA",
         ...
         "types" : [ "neighborhood", "political" ]
      },
      {
         "formatted_address" : "Brooklyn, NY 11211, USA",
         ...
         "types" : [ "postal_code" ]
      },
      {
         "formatted_address" : "Williamsburg, Brooklyn, NY, USA",
         ...
         "types" : [ "neighborhood", "political" ]
      },
      {
         "formatted_address" : "Kings County, Brooklyn, NY, USA",
         ...
         "types" : [ "administrative_area_level_2", "political" ]
      },
      {
         "formatted_address" : "Brooklyn, NY, USA",
         ...
         "types" : [ "political", "sublocality", "sublocality_level_1" ]
      },
      {
         "formatted_address" : "New York, NY, USA",
         ...
         "types" : [ "locality", "political" ]
      },
      {
         "formatted_address" : "New York, USA",
         ...
         "types" : [ "administrative_area_level_1", "political" ]
      },
      {
         "formatted_address" : "United States",
         ...
         "types" : [ "country", "political" ]
      }
   ],
   "status" : "OK"
}

Cette API renvoie différents types d'adresses, de l'adresse postale la plus spécifique aux entités politiques moins spécifiques telles que les quartiers, les villes, les comtés et les États. L'adresse la plus exacte constitue généralement le résultat le plus visible, comme c'est le cas ici. Si vous souhaitez correspondre à un type d'adresse spécifique, consultez la section ci-dessous sur la restriction des résultats par type. Pour cette raison, l'emplacement des résultats les uns par rapport aux autres peut varier.

Geocoding inversé filtré par type

L'exemple suivant filtre les adresses renvoyées pour n'inclure que celles dont le type de lieu est ROOFTOP et le type d'adresse street_address.

https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452
&location_type=ROOFTOP&result_type=street_address&key=YOUR_API_KEY

Remarque:Ces filtres ne sont valides que pour le geocoding inversé.

Réponses au geocoding inversé

Le format de la réponse de geocoding inversé est identique à celui de la réponse Geocoding. Consultez Réponses Geocoding. Vous trouverez ci-dessous les codes de statut possibles dans une réponse de géocodage inversé.

Codes d'état du geocoding inversé

Le champ "status" de l'objet de réponse Geocoding contient l'état de la requête et éventuellement des informations de débogage qui vous aident à savoir pourquoi le geocoding inversé ne fonctionne pas. Le champ "status" peut contenir les valeurs suivantes:

  • "OK" indique qu'aucune erreur ne s'est produite et qu'au moins une adresse a été renvoyée.
  • "ZERO_RESULTS" indique que le geocoding inversé a réussi, mais n'a renvoyé aucun résultat. Cela peut se produire si le geocoder a reçu un latlng dans un emplacement distant.
  • "OVER_QUERY_LIMIT" indique que vous avez dépassé votre quota.
  • "REQUEST_DENIED" indique que la requête a été refusée. Probablement parce que la requête inclut un paramètre result_type ou location_type, mais n'inclut pas de clé API.
  • "INVALID_REQUEST" indique généralement l'un des éléments suivants :
    • Il manque la requête (address, components ou latlng).
    • Une valeur result_type ou location_type non valide a été indiquée.
  • "UNKNOWN_ERROR" indique que la requête n'a pas pu être traitée en raison d'une erreur de serveur. Si vous essayez à nouveau, la requête pourrait aboutir.

Plus codes de géocodage inversé

Le champ plus_code de la réponse Geocoding contient un code plus code qui se rapproche le plus de la latitude et de la longitude de la requête. En outre, le tableau de résultats JSON contient dans la plupart des cas un résultat Geocoding complet avec un type plus_code et une adresse contenant un code plus code. La distance entre le plus code décodé et le point de requête est garantie d'être inférieure à 10 mètres.