Service Geocoding

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Présentation

Le geocoding est le processus qui consiste à convertir des adresses (par exemple, "1600 Amphitheatre Parkway, Mountain View, CA") en coordonnées géographiques (telles que la latitude 37.423021 et la longitude -122.083739), que vous pouvez utiliser pour placer des repères ou positionner la carte.

Le geocoding inversé est le processus de conversion de coordonnées géographiques en adresses lisibles (voir la section Géocodage inversé (recherche d'adresse)).

Vous pouvez également utiliser le geocoder pour trouver l'adresse correspondant à un identifiant de lieu donné.

L'API Maps JavaScript fournit une classe Geocoder pour le géocodage et le géocodage inversé de manière dynamique à partir d'une entrée utilisateur. Si vous préférez géocoder des adresses statiques connues, consultez le service Web Geocoding.

Premiers pas

Avant d'utiliser le service Geocoding dans l'API Maps JavaScript, assurez-vous qu'elle est activée dans Google Cloud Console, dans le même projet que celui que vous avez configuré pour l'API Maps JavaScript.

Pour afficher la liste des API activées :

  1. Accédez à Google Cloud Console.
  2. Cliquez sur le bouton Sélectionner un projet, puis sélectionnez le projet que vous avez configuré pour l'API Maps JavaScript et cliquez sur Ouvrir.
  3. Dans la liste des API du tableau de bord, recherchez API Geocoding.
  4. Si vous trouvez l'API dans la liste, vous pouvez continuer. Si l'API ne figure pas dans la liste, activez-la :
    1. En haut de la page, sélectionnez ACTIVER L'API pour afficher l'onglet Bibliothèque. Vous pouvez également sélectionner Bibliothèque dans le menu de gauche.
    2. Recherchez l'API Geocoding, puis sélectionnez-la dans la liste des résultats.
    3. Sélectionnez ACTIVER. Une fois le processus terminé, API Geocoding apparaît dans la liste des API du tableau de bord.

Tarifs et règles

Tarifs

Depuis le 16 juillet 2018, un nouveau système de paiement à l'usage est entré en vigueur pour Maps, Routes et Places. Pour en savoir plus sur les nouvelles limites de tarification et d'utilisation de votre utilisation du service Geocoding JavaScript, consultez la page Utilisation et facturation de l'API Geocoding.

Limites de débit

Veuillez noter les points suivants concernant les limites de débit pour les requêtes supplémentaires:

La limite de débit supplémentaire est appliquée par session utilisateur, quel que soit le nombre d'utilisateurs qui partagent le même projet. Lorsque vous chargez l'API pour la première fois, un quota initial de requêtes vous est attribué. Une fois que vous avez utilisé ce quota, l'API applique des limites de débit à d'autres requêtes par seconde. Si trop de requêtes sont effectuées dans un délai donné, l'API renvoie un code de réponse OVER_QUERY_LIMIT.

La limite de débit par session empêche l'utilisation de services côté client pour les requêtes par lot, telles que le geocoding par lot. Pour les requêtes par lot, utilisez le service Web de l'API Geocoding.

Règles

L'utilisation du service Geocoding doit être conforme aux règles décrites pour l'API Geocoding.

Requêtes de géocodage

L'accès au service Geocoding est asynchrone, car l'API Google Maps doit appeler un serveur externe. Pour cette raison, vous devez transmettre une méthode de rappel à exécuter une fois la requête terminée. Cette méthode de rappel traite le ou les résultats. Notez que le geocoder peut renvoyer plusieurs résultats.

Vous pouvez accéder au service de géocodage de l'API Google Maps depuis votre code via l'objet constructeur google.maps.Geocoder. La méthode Geocoder.geocode() envoie une requête au service de geocoding et lui transmet un littéral d'objet GeocoderRequest contenant les termes d'entrée, ainsi qu'une méthode de rappel à exécuter à la réception de la réponse.

Le littéral d'objet GeocoderRequest contient les champs suivants:

{
 address: string,
 location: LatLng,
 placeId: string,
 bounds: LatLngBounds,
 componentRestrictions: GeocoderComponentRestrictions,
 region: string
}

Paramètres obligatoires : vous ne devez fournir qu'un seul des champs suivants.

  • address : adresse que vous souhaitez géocoder.
    ou
    location : LatLng (ou LatLngLiteral) pour lequel vous souhaitez obtenir l'adresse la plus proche, lisible et lisible. Le geocoder effectue un geocoding inversé. Pour en savoir plus, consultez la page Géocodage inversé.
    ou
    placeId : ID du lieu pour lequel vous souhaitez obtenir l'adresse la plus proche, lisible et lisible. Découvrez comment récupérer une adresse pour un ID de lieu.

Paramètres facultatifs:

  • bounds : LatLngBounds dans lequel pondérer les résultats du géocodage de manière plus proéminente Le paramètre bounds n'influe que sur les résultats du geocoder, et non sur leur restriction. Vous trouverez plus d'informations sur la pondération de la fenêtre d'affichage ci-dessous.
  • componentRestrictions : permet de limiter les résultats à une zone spécifique. Vous trouverez plus d'informations sur le filtrage des composants ci-dessous.
  • region : code de région, spécifié sous forme de sous-tag de région Unicode à deux caractères (non numériques). Dans la plupart des cas, ces tags sont directement mappés avec des valeurs familières ccTLD (domaine de premier niveau). Le paramètre region n'influence que les résultats du geocoder, et non leur restriction. Vous trouverez plus d'informations sur la pondération du code régional ci-dessous.

Réponses aux requêtes de géocodage

Le service Geocoding nécessite une méthode de rappel pour s'exécuter lors de la récupération des résultats du geocoder. Ce rappel doit transmettre deux paramètres pour contenir le code results et un code status, dans cet ordre.

Résultats du géocodage

L'objet GeocoderResult représente un seul résultat de géocodage. Une requête de géocodage peut renvoyer plusieurs objets résultat :

results[]: {
 types[]: string,
 formatted_address: string,
 address_components[]: {
   short_name: string,
   long_name: string,
   postcode_localities[]: string,
   types[]: string
 },
 partial_match: boolean,
 place_id: string,
 postcode_localities[]: string,
 geometry: {
   location: LatLng,
   location_type: GeocoderLocationType
   viewport: LatLngBounds,
   bounds: LatLngBounds
 }
}

Expliquons chacun de ces champs :

  • types[] est un tableau indiquant le type d'adresse du résultat renvoyé. Ce tableau contient un ensemble de zéro ou plusieurs balises identifiant le type de caractéristique renvoyé dans le résultat. . Pour en savoir plus, consultez la section Types d'adresses et types de composants d'adresse ci-dessous.
  • formatted_address est une chaîne contenant l'adresse lisible de cet établissement.

    Souvent, cette adresse équivaut à l'adresse postale. Notez que dans certains pays, tels que le Royaume-Uni, la distribution de véritables adresses postales n'est pas autorisée en raison de restrictions de licence.

    L'adresse formatée est composée de manière logique d'un ou de plusieurs composants d'adresse. Par exemple, l'adresse "111 8th Avenue, New York, NY" est constituée des éléments suivants : "111" (le numéro de rue), "8th Avenue" (la route), "New York" (la ville) et "NY" (l'État des États-Unis).

    N'analysez pas l'adresse formatée par programmation. Vous devez utiliser les composants d'adresse individuels, que la réponse de l'API inclut en plus du champ d'adresse mis en forme.

  • address_components[] est un tableau contenant les composants distincts applicables à cette adresse.

    Chaque composant d'adresse contient généralement les champs suivants:

    • types[] est un tableau indiquant le type du composant d'adresse. Consultez la liste des types compatibles.
    • long_name est la description ou le nom en texte intégral du composant d'adresse renvoyé par le géocodeur.
    • short_name est un nom de texte abrégé pour le composant d'adresse, s'il est disponible. Par exemple, un composant d'adresse pour l'État d'Alaska peut avoir un long_name d'Alaska et un short_name d'AK à l'aide de l'abréviation postale de deux lettres.

    Notez les informations suivantes sur le tableau address_components[]:

    • Le tableau de composants d'adresse peut contenir plus de composants que formatted_address.
    • Le tableau n'inclut pas nécessairement toutes les entités politiques contenant une adresse, à l'exception de celles incluses dans formatted_address. Pour récupérer toutes les entités politiques contenant une adresse spécifique, vous devez utiliser le geocoding inversé, en transmettant la latitude/longitude de l'adresse en tant que paramètre à la requête.
    • Il n'est pas garanti que le format de la réponse reste le même entre les requêtes. En particulier, le nombre de address_components varie selon l'adresse demandée et peut changer au fil du temps pour la même adresse. Un composant peut changer de position dans le tableau. Le type du composant peut changer. Un composant particulier peut être manquant dans une réponse ultérieure.

    Pour en savoir plus, consultez la section Types d'adresses et types de composants d'adresse ci-dessous.

  • partial_match indique que le geocoder n'a pas renvoyé de correspondance exacte pour la requête d'origine, bien qu'il ait pu correspondre à une partie de l'adresse demandée. Vous pouvez examiner la requête d'origine pour vérifier qu'elle ne contient pas d'erreur et/ou que l'adresse est incomplète.

    Les correspondances partielles surviennent le plus souvent pour les adresses postales qui n'existent pas dans la localité que vous indiquez dans la requête. Des correspondances partielles peuvent également être renvoyées lorsqu'une requête correspond à plusieurs zones géographiques de la même localité. Par exemple, "Hillpar Street, Bristol, UK" renvoie une correspondance partielle pour Henry Street et Henrietta Street. Notez que si une requête inclut un composant d'adresse mal orthographié, le service de geocoding peut suggérer une autre adresse. Les suggestions déclenchées de cette manière seront également marquées comme correspondances partielles.

  • place_id est l'identifiant unique d'un lieu, qui peut être utilisé avec d'autres API Google. Par exemple, vous pouvez utiliser place_id avec la bibliothèque de l'API Google Places pour obtenir des informations sur un établissement local, comme son numéro de téléphone, ses horaires d'ouverture, les avis des utilisateurs, etc. Consultez la présentation des ID de lieu.
  • postcode_localities[] est un tableau indiquant toutes les localités contenues dans un code postal. Il n'est présent que lorsque le résultat est un code postal contenant plusieurs localités.
  • geometry contient les informations suivantes:

    • location contient la valeur latitude,longitude géocodée. Notez que nous renvoyons cet emplacement en tant qu'objet LatLng, et non en tant que chaîne formatée.
    • location_type stocke des données supplémentaires sur l'emplacement spécifié. Les valeurs actuellement acceptées sont les suivantes :
      • ROOFTOP indique que le résultat renvoyé reflète un géocode précis.
      • RANGE_INTERPOLATED indique que le résultat renvoyé reflète une approximation (généralement sur une route) interpolée entre deux points précis (tels que des intersections). Les résultats interpolés sont généralement renvoyés lorsque les géocodes sur le toit ne sont pas disponibles pour une adresse postale.
      • GEOMETRIC_CENTER indique que le résultat est le centre géométrique d'un résultat, comme une polyligne (par exemple, une rue) ou un polygone (une région).
      • APPROXIMATE indique que le résultat renvoyé est approximatif.

    • viewport stocke la fenêtre d'affichage recommandée pour le résultat renvoyé.
    • bounds (éventuellement renvoyé) stocke LatLngBounds, qui peut contenir complètement le résultat renvoyé. Notez que ces limites peuvent ne pas correspondre à la fenêtre d'affichage recommandée. Par exemple, San Francisco inclut les îles Farallon, qui font techniquement partie de la ville, mais ne doivent pas être renvoyées dans la fenêtre d'affichage.

Le géocodeur renverra les adresses en utilisant le paramètre de langue préféré du navigateur ou la langue spécifiée lors du chargement du code JavaScript de l'API à l'aide du paramètre language. (Pour en savoir plus, consultez Localisation.)

Types d'adresse et types de composant d'adresse

Le tableau types[] dans le GeocoderResult indique le type d'adresse. Le tableau types[] peut également être renvoyé dans un GeocoderAddressComponent pour indiquer le type du composant d'adresse. Les adresses renvoyées par le geocoder peuvent avoir plusieurs types, qui peuvent être considérés comme des balises. Par exemple, de nombreuses villes sont taguées avec les types political et locality.

Les types suivants sont acceptés et renvoyés par le geocoder dans les types d'adresse et les types de composants d'adresse:

  • street_address indique une adresse postale précise.
  • route indique un itinéraire nommé (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 d'administration publique.
  • country indique l'entité politique nationale. Il s'agit généralement du type de campagne le plus élevé 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 d'administration sont des États. Tous les pays ne disposent pas de ces niveaux d'administration. Dans la plupart des cas, les noms courts "admin_area_level_1" correspondent étroitement aux subdivisions ISO 3166-2 et à d'autres listes diffusées largement. Cependant, cela n'est pas garanti, car nos résultats de géocodage sont basés sur différents signaux et données de localisation.
  • administrative_area_level_2 indique une entité civile de second ordre en dessous du niveau du pays. Aux États-Unis, ces niveaux administratifs correspondent à des comtés. Tous les pays ne disposent pas de ces niveaux d'administration.
  • 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 ville ou une entité politique municipale.
  • 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. Un nombre élevé indique une zone géographique plus petite.
  • neighborhood indique un quartier nommé.
  • premise indique un lieu nommé, généralement un bâtiment ou une collection de bâtiments ayant un nom commun.
  • subpremise indique une entité de premier ordre en dessous d'un lieu nommé, généralement un bâtiment unique dans 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. Les Plus Codes peuvent être utilisés 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 la page https://plus.codes.
  • postal_code indique un code postal utilisé pour adresser un courrier postal dans le pays.
  • natural_feature indique une caractéristique naturelle importante.
  • 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 rentrent pas facilement dans une autre catégorie, comme l'"Empire State Building" ou l'Eiffel Tower.

Une liste de types vide indique qu'il n'existe aucun type connu pour ce composant d'adresse, par exemple Lieu-dit en France.

En plus des types énumérés ci-dessus, les composants d'adresse peuvent contenir les types suivants.

Remarque:Cette liste n'est pas exhaustive et est susceptible d'être modifiée.

  • floor indique l'étage d'une adresse de bâtiment.
  • establishment indique généralement un lieu qui n'a pas encore été classé.
  • landmark indique un lieu à proximité qui sert de référence pour faciliter la navigation.
  • point_of_interest indique un point d'intérêt nommé.
  • parking indique un parking ou une structure de stationnement.
  • post_box indique une boîte postale spécifique.
  • postal_town indique un groupe de zones géographiques, telles que locality et sublocality, utilisées pour les adresses postales dans certains pays.
  • room indique la salle associée à l'adresse d'un bâtiment.
  • street_number indique le numéro de rue précis.
  • bus_station, train_station et transit_station indiquent la position d'un arrêt de bus, de train ou de transports en commun.

Codes d'état

Le code status peut renvoyer l'une des valeurs suivantes:

  • "OK" indique qu'aucune erreur ne s'est produite. L'adresse a bien été analysée et au moins un géocode a été renvoyé.
  • "ZERO_RESULTS" indique que le géocode a réussi, mais n'a renvoyé aucun résultat. Cela peut se produire si le geocoder a reçu un address inexistant.
  • "OVER_QUERY_LIMIT" indique que vous avez dépassé votre quota.
  • "REQUEST_DENIED" indique que votre requête a été refusée. La page Web n'est pas autorisée à utiliser le geocoder.
  • "INVALID_REQUEST" indique généralement que la requête (address, components ou latlng) est manquante.
  • "UNKNOWN_ERROR" indique que la requête n'a pas pu être traitée en raison d'une erreur du serveur. La requête pourrait aboutir si vous réessayez.
  • "ERROR" indique que le délai d'attente de la requête a été dépassé ou qu'un problème est survenu lors de la communication avec les serveurs Google. La requête pourrait aboutir si vous réessayez.

Dans cet exemple, nous géocodons une adresse et ajoutons un repère aux valeurs de latitude et de longitude renvoyées. Notez que le gestionnaire est transmis en tant que littéral de fonction anonyme.

  var geocoder;
  var map;
  function initialize() {
    geocoder = new google.maps.Geocoder();
    var latlng = new google.maps.LatLng(-34.397, 150.644);
    var mapOptions = {
      zoom: 8,
      center: latlng
    }
    map = new google.maps.Map(document.getElementById('map'), mapOptions);
  }

  function codeAddress() {
    var address = document.getElementById('address').value;
    geocoder.geocode( { 'address': address}, function(results, status) {
      if (status == 'OK') {
        map.setCenter(results[0].geometry.location);
        var marker = new google.maps.Marker({
            map: map,
            position: results[0].geometry.location
        });
      } else {
        alert('Geocode was not successful for the following reason: ' + status);
      }
    });
  }

<body onload="initialize()">
 <div id="map" style="width: 320px; height: 480px;"></div>
  <div>
    <input id="address" type="textbox" value="Sydney, NSW">
    <input type="button" value="Encode" onclick="codeAddress()">
  </div>
</body>

Voir un exemple

Limiter les résultats à une fenêtre d'affichage

Vous pouvez demander au service de geocoding de privilégier les résultats dans une fenêtre d'affichage donnée (exprimée sous la forme d'un cadre de délimitation). Pour ce faire, définissez le paramètre bounds dans le littéral d'objet GeocoderRequest pour définir les limites de cette fenêtre d'affichage. Notez que la pondération ne préfère que les résultats compris dans les limites. Si des résultats plus pertinents existent en dehors de ces limites, ils peuvent être inclus.

Par exemple, un géocode pour "Winnetka" renvoie généralement cette banlieue de Chicago:

{
  "types":["locality","political"],
  "formatted_address":"Winnetka, IL, USA",
  "address_components":[{
    "long_name":"Winnetka",
    "short_name":"Winnetka",
    "types":["locality","political"]
  },{
    "long_name":"Illinois",
    "short_name":"IL",
    "types":["administrative_area_level_1","political"]
  },{
    "long_name":"United States",
    "short_name":"US",
    "types":["country","political"]
  }],
  "geometry":{
    "location":[ -87.7417070, 42.1083080],
    "location_type":"APPROXIMATE"
  },
  "place_id": "ChIJW8Va5TnED4gRY91Ng47qy3Q"
}

Toutefois, si vous spécifiez un paramètre bounds définissant un cadre de délimitation pour la vallée de San Fernando de Los Angeles, le géocodage renvoie le quartier nommé "Winnetka" à cet emplacement:

{
  "types":["sublocality","political"],
  "formatted_address":"Winnetka, California, USA",
  "address_components":[{
    "long_name":"Winnetka",
    "short_name":"Winnetka",
    "types":["sublocality","political"]
  },{
    "long_name":"Los Angeles",
    "short_name":"Los Angeles",
    "types":["administrative_area_level_3","political"]
  },{
    "long_name":"Los Angeles",
    "short_name":"Los Angeles",
    "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"]
  }],
  "geometry":{
    "location": [34.213171,-118.571022],
    "location_type":"APPROXIMATE"
  },
  "place_id": "ChIJ0fd4S_KbwoAR2hRDrsr3HmQ"
}

Limiter les résultats à un code de région

Vous pouvez définir explicitement le service Geocoding pour qu'il renvoie des résultats pondérés vers une région particulière à l'aide du paramètre region. Ce paramètre utilise un code de région, spécifié comme sous-tag de région Unicode à deux caractères (non numériques). Ces tags sont mappés directement à des valeurs familières ccTLD (« domaine de premier niveau ») à deux caractères telles que "uk" en "co.uk" par exemple. Dans certains cas, le tag region est également compatible avec les codes ISO-3166-1, qui diffèrent parfois des valeurs ccTLD (GB pour la "Grande-Bretagne", par exemple).

Lorsque vous utilisez le paramètre region:

  • Spécifiez un seul pays ou une seule région. Plusieurs valeurs sont ignorées et peuvent entraîner l'échec de la requête.
  • N'utilisez que des sous-tags de région à deux caractères (format CLDR au format Unicode). Toutes les autres entrées entraînent des erreurs.
  • Seuls les pays et régions répertoriés dans la section Détails de la couverture de Google Maps Platform sont acceptés.

Les requêtes de geocoding peuvent être envoyées pour chaque domaine dans lequel l'application Google Maps principale permet le geocoding. Notez que la pondération ne préfère que les résultats correspondant à un domaine spécifique. Si des résultats plus pertinents existent en dehors de ce domaine, ils peuvent être inclus.

Par exemple, un géocodage pour "Toledo" renvoie ce résultat, car le domaine par défaut du service Geocoding est défini sur les États-Unis:

{
  "types":["locality","political"],
  "formatted_address":"Toledo, OH, USA",
  "address_components":[{
    "long_name":"Toledo",
    "short_name":"Toledo",
    "types":["locality","political"]
  },{
    "long_name":"Ohio",
    "short_name":"OH",
    "types":["administrative_area_level_1","political"]
  },{
    "long_name":"United States",
    "short_name":"US",
    "types":["country","political"]
  }],
  "place_id": "ChIJeU4e_C2HO4gRRcM6RZ_IPHw"
}

Un géocode pour "Toledo" avec le champ region défini sur 'es' (Espagne) affichera la ville espagnole:

{
  "types":["locality","political"],
  "formatted_address":"Toledo, España",
  "address_components":[{
    "long_name":"Toledo",
    "short_name":"Toledo",
    "types":["locality","political"]
  },{
    "long_name":"Toledo",
    "short_name":"TO",
    "types":["administrative_area_level_2","political"]
  },{
    "long_name":"Castilla-La Mancha",
    "short_name":"CM",
    "types":["administrative_area_level_1","political"]
  },{
    "long_name":"España",
    "short_name":"ES",
    "types":["country","political"]
  }],
  "place_id": "ChIJ8f21C60Lag0R_q11auhbf8Y"
}

Filtrer par composants

Vous pouvez configurer le service de geocoding pour qu'il renvoie les résultats d'adresse limités à une zone spécifique à l'aide d'un filtre de composants. Spécifiez le filtre dans le paramètre componentRestrictions. Les valeurs de filtre sont compatibles avec les mêmes méthodes de correction orthographique et de correspondance partielle que les autres requêtes de geocoding.

Le geocoder ne renvoie que les résultats qui correspondent à tous les filtres des composants. Autrement dit, il évalue les spécifications de filtre comme un opérateur AND, et non comme OR.

Un filtre de composants comprend un ou plusieurs des éléments suivants:

  • route correspond au nom long ou court d'un itinéraire.
  • locality correspond aux types de localité et de sous-localité.
  • administrativeArea correspond à tous les niveaux de la région administrative.
  • postalCode correspond aux codes postaux et aux préfixes de codes postaux.
  • country correspond à un nom de pays ou à un code pays ISO 3166-1 à deux lettres. Remarque : L'API respecte la norme ISO pour la définition des pays, et le filtrage fonctionne mieux lorsque vous utilisez le code ISO correspondant du pays.

L'exemple suivant illustre l'utilisation du paramètre componentRestrictions pour filtrer par country et postalCode:

function codeAddress() {
geocoder.geocode({
  componentRestrictions: {
    country: 'AU',
    postalCode: '2000'
  }
}, function(results, status) {
  if (status == 'OK') {
    map.setCenter(results[0].geometry.location);
    var marker = new google.maps.Marker({
      map: map,
      position: results[0].geometry.location
    });
  } else {
    window.alert('Geocode was not successful for the following reason: ' + status);
  }
});
}

Géocodage 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 conversion d'un emplacement sur la carte en une adresse lisible, est appelé geocoding inversé.

Au lieu de spécifier une propriété address textuelle, indiquez une paire latitude/longitude séparée par une virgule dans le paramètre location.

L'exemple suivant géocode une valeur de latitude/longitude et centre la carte à cet endroit, ce qui affiche une fenêtre d'informations avec l'adresse formatée:

TypeScript

function initMap(): void {
  const map = new google.maps.Map(
    document.getElementById("map") as HTMLElement,
    {
      zoom: 8,
      center: { lat: 40.731, lng: -73.997 },
    }
  );
  const geocoder = new google.maps.Geocoder();
  const infowindow = new google.maps.InfoWindow();

  (document.getElementById("submit") as HTMLElement).addEventListener(
    "click",
    () => {
      geocodeLatLng(geocoder, map, infowindow);
    }
  );
}

function geocodeLatLng(
  geocoder: google.maps.Geocoder,
  map: google.maps.Map,
  infowindow: google.maps.InfoWindow
) {
  const input = (document.getElementById("latlng") as HTMLInputElement).value;
  const latlngStr = input.split(",", 2);
  const latlng = {
    lat: parseFloat(latlngStr[0]),
    lng: parseFloat(latlngStr[1]),
  };

  geocoder
    .geocode({ location: latlng })
    .then((response) => {
      if (response.results[0]) {
        map.setZoom(11);

        const marker = new google.maps.Marker({
          position: latlng,
          map: map,
        });

        infowindow.setContent(response.results[0].formatted_address);
        infowindow.open(map, marker);
      } else {
        window.alert("No results found");
      }
    })
    .catch((e) => window.alert("Geocoder failed due to: " + e));
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

function initMap() {
  const map = new google.maps.Map(document.getElementById("map"), {
    zoom: 8,
    center: { lat: 40.731, lng: -73.997 },
  });
  const geocoder = new google.maps.Geocoder();
  const infowindow = new google.maps.InfoWindow();

  document.getElementById("submit").addEventListener("click", () => {
    geocodeLatLng(geocoder, map, infowindow);
  });
}

function geocodeLatLng(geocoder, map, infowindow) {
  const input = document.getElementById("latlng").value;
  const latlngStr = input.split(",", 2);
  const latlng = {
    lat: parseFloat(latlngStr[0]),
    lng: parseFloat(latlngStr[1]),
  };

  geocoder
    .geocode({ location: latlng })
    .then((response) => {
      if (response.results[0]) {
        map.setZoom(11);

        const marker = new google.maps.Marker({
          position: latlng,
          map: map,
        });

        infowindow.setContent(response.results[0].formatted_address);
        infowindow.open(map, marker);
      } else {
        window.alert("No results found");
      }
    })
    .catch((e) => window.alert("Geocoder failed due to: " + e));
}

window.initMap = initMap;
Voir un exemple

Essayer l'exemple

Notez que dans l'exemple précédent, nous avons affiché le premier résultat en sélectionnant results[0]. Le geocoder inversé renvoie souvent plusieurs résultats. Les adresses géocodées ne sont pas simplement des adresses postales, mais elles permettent de nommer géographiquement un lieu. Par exemple, lors du géocodage d'un point dans la ville de Chicago, ce point peut être géolocalisé en tant qu'adresse postale, en tant que ville (Chicago), en tant qu'État (Illinois) ou en tant que pays (États-Unis). Toutes ces désignations sont des adresses pour le géocodeur. Le geocoder inversé renvoie tous ces résultats.

Le geocoder inversé correspond aux entités politiques (pays, provinces, villes et quartiers), adresses postales et codes postaux.

Voici un exemple de la liste des adresses que la requête ci-dessus peut renvoyer:

results[0].formatted_address: "277 Bedford Ave, Brooklyn, NY 11211, USA"
results[1].formatted_address: "Grand St/Bedford Av, Brooklyn, NY 11211, USA"
results[2].formatted_address: "Williamsburg, Brooklyn, NY, USA"
results[3].formatted_address: "Brooklyn, NY, USA"
results[4].formatted_address: "New York, NY, USA"
results[5].formatted_address: "Brooklyn, NY 11211, USA"
results[6].formatted_address: "Kings County, NY, USA"
results[7].formatted_address: "New York-Northern New Jersey-Long Island, NY-NJ-PA, USA"
results[8].formatted_address: "New York Metropolitan Area, USA"
results[9].formatted_address: "New York, USA"

Les adresses sont renvoyées par ordre décroissant de correspondance. Généralement, l'adresse la plus précise est le résultat le plus proéminent, comme c'est le cas ici. Notez que nous renvoyons différents types d'adresses, de l'adresse postale la plus précise à des entités politiques moins spécifiques, telles que des quartiers, des villes, des comtés, des États, etc. Si vous souhaitez qu'une correspondance soit plus générale, vous pouvez examiner le champ results[].types.

Remarque:Le géocodage inversé n'est pas une science exacte. Le geocoder tente de trouver l'adresse la plus proche avec une certaine tolérance.

Récupérer une adresse pour un ID de lieu

Fournissez un placeId pour rechercher l'adresse correspondant à un ID de lieu donné. L'identifiant de lieu est un identifiant unique qui peut être utilisé avec d'autres API Google. Par exemple, vous pouvez fournir le placeId renvoyé par l'API Roads pour obtenir l'adresse d'un point ancré. Pour en savoir plus sur les ID de lieu, consultez la présentation des ID de lieu.

Lorsque vous fournissez un placeId, la requête ne peut contenir aucun des champs suivants:

  • address
  • latLng
  • location
  • componentRestrictions

L'exemple suivant accepte un ID de lieu, trouve l'adresse correspondante et centre la carte à ce lieu. Une fenêtre d'informations indiquant l'adresse formatée du lieu concerné s'affiche également:

TypeScript

// Initialize the map.
function initMap(): void {
  const map = new google.maps.Map(
    document.getElementById("map") as HTMLElement,
    {
      zoom: 8,
      center: { lat: 40.72, lng: -73.96 },
    }
  );
  const geocoder = new google.maps.Geocoder();
  const infowindow = new google.maps.InfoWindow();

  (document.getElementById("submit") as HTMLElement).addEventListener(
    "click",
    () => {
      geocodePlaceId(geocoder, map, infowindow);
    }
  );
}

// This function is called when the user clicks the UI button requesting
// a geocode of a place ID.
function geocodePlaceId(
  geocoder: google.maps.Geocoder,
  map: google.maps.Map,
  infowindow: google.maps.InfoWindow
) {
  const placeId = (document.getElementById("place-id") as HTMLInputElement)
    .value;

  geocoder
    .geocode({ placeId: placeId })
    .then(({ results }) => {
      if (results[0]) {
        map.setZoom(11);
        map.setCenter(results[0].geometry.location);

        const marker = new google.maps.Marker({
          map,
          position: results[0].geometry.location,
        });

        infowindow.setContent(results[0].formatted_address);
        infowindow.open(map, marker);
      } else {
        window.alert("No results found");
      }
    })
    .catch((e) => window.alert("Geocoder failed due to: " + e));
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

// Initialize the map.
function initMap() {
  const map = new google.maps.Map(document.getElementById("map"), {
    zoom: 8,
    center: { lat: 40.72, lng: -73.96 },
  });
  const geocoder = new google.maps.Geocoder();
  const infowindow = new google.maps.InfoWindow();

  document.getElementById("submit").addEventListener("click", () => {
    geocodePlaceId(geocoder, map, infowindow);
  });
}

// This function is called when the user clicks the UI button requesting
// a geocode of a place ID.
function geocodePlaceId(geocoder, map, infowindow) {
  const placeId = document.getElementById("place-id").value;

  geocoder
    .geocode({ placeId: placeId })
    .then(({ results }) => {
      if (results[0]) {
        map.setZoom(11);
        map.setCenter(results[0].geometry.location);

        const marker = new google.maps.Marker({
          map,
          position: results[0].geometry.location,
        });

        infowindow.setContent(results[0].formatted_address);
        infowindow.open(map, marker);
      } else {
        window.alert("No results found");
      }
    })
    .catch((e) => window.alert("Geocoder failed due to: " + e));
}

window.initMap = initMap;
Voir un exemple

Essayer l'exemple