Utilisez l'API Geocoding pour obtenir les contours et les entrées des bâtiments afin d'améliorer la visualisation des données dans vos rendus de carte.
Pour ce faire, incluez un paramètre supplémentaire dans votre requête de géocodage pour renvoyer des paires de coordonnées de latitude/longitude qui définissent un contour de bâtiment ou une entrée. Utilisez le résultat de vos requêtes pour dessiner les contours des bâtiments et indiquer les entrées des bâtiments sur votre carte.
- Un contour de bâtiment est un ensemble de paires de coordonnées de latitude/longitude qui définissent un polygone 2D représentant la surface de la Terre couverte par le bâtiment.
- Une entrée de bâtiment est une seule paire de coordonnées de latitude/longitude qui définit l'emplacement d'un point d'entrée et de sortie dans un lieu.
Utilisation et couverture
Vous pouvez utiliser le service pour renvoyer des polygones de contour pour un seul lieu dans une seule requête. Cela signifie qu'une requête de géocode au niveau d'une ville, comme Londres, au Royaume-Uni, ne renvoie pas tous les contours de bâtiments de cette localité. Dans ce cas, le service renvoie une réponse de géocodage standard sans contours ni entrées de bâtiment. Plus précisément, le service ne génère des contours et des entrées que pour les types de lieux suivants:
Types de lieux acceptés
Bâtiment |
Entrées |
---|---|
|
|
|
|
|
|
|
Bien que cette fonctionnalité soit disponible dans toutes les régions, sa couverture varie selon les régions. De plus, vous devez vous attendre à recevoir des réponses d'API contenant un contour de bâtiment, mais aucune donnée d'entrée. Dans ce cas, le service renvoie une réponse de géocodage avec un contour de bâtiment, mais pas de tableau de données d'entrée. Le service s'efforce en permanence d'améliorer la couverture des entrées.
Informations sur la demande
Vous pouvez obtenir les contours des bâtiments et les coordonnées de l'entrée dans les types de requêtes suivants:
Pour chacune de ces requêtes, vous devez fournir le paramètre suivant : extra_computations=BUILDING_AND_ENTRANCES
.
Exemple de requête
La requête suivante utilise le géocodement de lieu pour obtenir des informations sur l'entrée et les contours d'un restaurant situé à Mountain View (Californie, États-Unis) :
https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJ4TTDdzS3j4AR78EQgu5EADA&extra_computations=BUILDING_AND_ENTRANCES&key=YOUR_API_KEY
Exemple de réponse
Dans la plupart des cas, la réponse renvoie des champs correspondant à un seul bâtiment. Toutefois, dans certains cas, la réponse peut comporter plusieurs éléments, tels que des points d'intérêt occupant plusieurs bâtiments. Les éléments de réponse incluent deux tableaux:
Tableau buildings[]
contenant les champs suivants:
place_id
Identifiant unique du bâtiment. Pour en savoir plus, consultez la présentation des ID de lieu.
building_outlines[]
Tableau des contours associés au bâtiment. Ce tableau ne comporte qu'une seule entrée. Chaque objet de
building_outlines[]
possède le champ suivant:display_polygon
Encodage GeoJSON du polygone qui représente approximativement la surface de la terre couverte par le bâtiment, à l'aide du format RFC 7946
Un tableau entrances[]
avec les champs suivants:
location
Coordonnées de latitude/longitude de l'entrée.
building_place_id
ID de lieu du bâtiment contenant l'entrée. Il s'agit d'un ID de lieu différent de celui du résultat de géocodage, sauf si le résultat de géocodage concerne le bâtiment lui-même. Ce paramètre n'est pas toujours renseigné.
La réponse de la requête ci-dessus affiche une entrée et un seul élément de polygone dans le tableau des bâtiments:
{
"entrances": [
{
"location": {
"lat": 37.3925065,
"lng": -122.0799465
},
"building_place_id": "ChIJVeHddzS3j4ARFZJVu4Cf27o"
}
],
"buildings" : [
{
"building_outlines" : [
{
"display_polygon" : {
"coordinates" : [
[
[
-122.080188246116,
37.3926407183216
],
[
-122.080281351765,
37.3924887558601
],
[
-122.080023707261,
37.392390122414
],
[
-122.079926266852,
37.3925369491992
],
[
-122.080188246116,
37.3926407183216
]
]
],
"type" : "Polygon"
}
}
],
"place_id" : "ChIJVeHddzS3j4ARFZJVu4Cf27o"
}
],
}
Afficher les contours des bâtiments sur une carte
L'API JavaScript est compatible avec l'affichage des polygones et multipolygones au format RFC 7946. Pour ce faire, procédez comme suit:
- Créez un objet d'élément à l'aide des données de polygone.
- Appliquez un style au polygone.
- Associez l'élément géographique à l'objet de carte JavaScript.
Chaque objet du tableau buildings
contient un seul objet dans le tableau building_outlines
. L'exemple suivant montre comment afficher le contour d'un bâtiment sur une carte:
//This function takes an argument of 'buildings', which is the buildings[] array returned by the API.
async function displayBuildingOutline(buildings) {
try {
//Import the Google Maps Data library.
const { Data } = await google.maps.importLibrary("maps")
//Loop though the array of building outlines.
buildings.forEach(building => {
const features = []
const buildingOutlines = building.building_outlines;
//Add each building outline to a Feature object, and push this to an array of Features.
buildingOutlines.forEach(buildingOutline => {
const feature = {
type: "Feature",
properties: {},
geometry: buildingOutline.display_polygon
}
features.push(feature);
});
//Create a new Google Maps Data object, and apply styling.
//We also assume the reference to the map on the page is named 'map'.
//This applies the Data object to the map on the page.
outlineLayer = new google.maps.Data({
map,
style: {
strokeColor: "#0085cc",
strokeOpacity: 1,
strokeWeight: 2,
fillColor: "#88d4fc",
fillOpacity: 0.5,
},
});
//Add the array of Features created earlier to the Data object, as GeoJson.
outlineLayer.addGeoJson({
type: "FeatureCollection",
features: features,
});
});
} catch (e) {
console.log('Building outlines failed. Error: ' + e)
}
}
À l'aide du code ci-dessus, le contour du bâtiment renvoyé par l'API Geocoding dans l'exemple de réponse plus tôt dans ce document est affiché sur la carte comme suit:
Cas extrêmes
Vous pouvez également rencontrer les cas particuliers suivants. Toutefois, l'exemple de code ci-dessus fonctionnera toujours:
- Réponse avec plusieurs contours de bâtiments.
- Un seul objet
building_outlines
représentant plusieurs polygones.
Par exemple, la réponse pour l'ID de lieu ChIJGxgH9QBVHBYRl13JmZ0BFgo
contient deux résultats de tableau building_outlines[]
:
"buildings": [
{
"building_outlines": [
{
"display_polygon": {
"coordinates": [
[
[
44.3313253363354,
13.636033631612
],
[
44.3312576355624,
13.6362094887862
],
[
44.3310854239923,
13.6361461767801
],
[
44.3311531250111,
13.6359703194634
],
[
44.3313253363354,
13.636033631612
]
]
],
"type": "Polygon"
}
}
],
"place_id": "ChIJ24NWUBhUHBYRSEmPBFa1wgc"
},
{
"building_outlines": [
{
"display_polygon": {
"coordinates": [
[
[
44.330737534504,
13.6357057440832
],
[
44.3307248314371,
13.6357390350529
],
[
44.3306985591742,
13.635729486373
],
[
44.3307114066013,
13.6356960265536
],
[
44.330737534504,
13.6357057440832
]
]
],
"type": "Polygon"
}
}
],
"place_id": "ChIJpzQOABlUHBYRxiOC9goY1fE"
}
]
À l'aide de l'exemple de code JavaScript ci-dessus, nous pouvons afficher les deux contours sur la carte:
Commentaires
Cette fonctionnalité est expérimentale. N'hésitez pas à nous faire part de vos commentaires à l'adresse buildings-in-geocoding-feedback-channel@google.com.