Mit der Geocoding API können Sie Gebäudeumrisse und -eingänge abrufen, um die Datenvisualisierung in Ihren Kartenrenderings zu verbessern.
Fügen Sie dazu einen zusätzlichen Parameter in Ihre Geocodierungsanfrage ein, um Breiten-/Längengrad-Koordinatenpaare zurückzugeben, die entweder den Umriss eines Gebäudes oder einen Eingang definieren. Verwenden Sie die Ausgabe Ihrer Anfragen, um Gebäudeumrisse zu zeichnen und Gebäudeeingänge auf der Karte anzugeben.
- Ein Gebäudeumriss ist ein Set von Breiten-/Längengrad-Koordinatenpaaren, die ein 2D-Polygon definieren, das die vom Gebäude bedeckte Erdoberfläche darstellt.
- Ein Eingangsportal ist ein einzelnes Breiten-/Längengrad-Koordinatenpaar, das den Standort eines Eingangs- und Ausgangspunkts eines Orts definiert.
Nutzung und Abdeckung
Mit dem Dienst können Sie in einer einzigen Anfrage Umrisspolygone für einen einzelnen Ort zurückgeben. Das bedeutet, dass bei einer Anfrage auf Ebene einer Stadt, z. B. London, Vereinigtes Königreich, nicht alle Gebäudeumrisse in dieser Stadt zurückgegeben werden. In solchen Fällen gibt der Dienst eine standardmäßige Geocodierungsantwort ohne Gebäudeumrisse oder Eingänge zurück. Der Dienst generiert nur für die folgenden Ortstypen Umrisse und Eingänge:
Unterstützte Ortstypen
Gebäude |
Einstiege |
---|---|
|
|
|
|
|
|
|
Diese Funktion ist zwar in allen Regionen verfügbar, die Abdeckung variiert jedoch je nach Region. Außerdem sollten Sie API-Antworten erhalten, die einen Gebäudeumriss, aber keine Eingangsdaten enthalten. In diesem Fall gibt der Dienst eine Geocodierungsantwort mit einem Gebäudeumriss, aber ohne Eingangsdatenarray zurück. Der Dienst arbeitet kontinuierlich daran, die Abdeckung von Einfahrten zu verbessern.
Anfragedetails
Sie können Gebäudeumrisse und Eingangskoordinaten mit den folgenden Arten von Anfragen abrufen:
Für jede dieser Anfragen geben Sie diesen Parameter an: extra_computations=BUILDING_AND_ENTRANCES
.
Beispielanfrage
In der folgenden Abfrage wird das Geocodieren von Orten verwendet, um Informationen zum Eingang und zum Umriss eines Restaurants in Mountain View, Kalifornien, USA, abzurufen:
https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJ4TTDdzS3j4AR78EQgu5EADA&extra_computations=BUILDING_AND_ENTRANCES&key=YOUR_API_KEY
Beispielantwort
In den meisten Fällen werden in der Antwort Felder zurückgegeben, die einem einzelnen Gebäude entsprechen. In einigen Fällen kann die Antwort jedoch mehrere Elemente enthalten, z. B. Sehenswürdigkeiten, die sich in mehreren Gebäuden befinden. Die Antwortelemente enthalten zwei Arrays:
Ein buildings[]
-Array mit den folgenden Feldern:
place_id
Die eindeutige Kennung des Gebäudes. Weitere Informationen finden Sie in der Übersicht zu Orts-IDs.
building_outlines[]
Eine Reihe von Umrissen, die mit dem Gebäude verknüpft sind. Dieses Array hat nur einen Eintrag. Jedes Objekt in
building_outlines[]
hat das folgende Feld:display_polygon
Die GeoJSON-Codierung des Polygons, das die vom Gebäude bedeckte Erdoberfläche annähernd abbildet, im RFC 7946-Format
Ein entrances[]
-Array mit den folgenden Feldern:
location
Breiten- und Längengradkoordinaten des Eingangs
building_place_id
Die Orts-ID des Gebäudes, in dem sich der Eingang befindet. Diese unterscheidet sich von der Orts-ID des Geocoding-Ergebnisses, es sei denn, das Geocoding-Ergebnis bezieht sich auf das Gebäude selbst. Dieser Parameter ist nicht immer ausgefüllt.
Die Antwort der obigen Abfrage enthält einen Eingang und ein einzelnes Polygonelement im buildings-Array:
{
"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"
}
],
}
Gebäudeumrisse auf einer Karte anzeigen
Die JavaScript API unterstützt das Darstellen von Polygonen und Multipolygonen im RFC 7946-Format. Gehen Sie dazu so vor:
- Erstellen Sie mit den Polygondaten ein Feature-Objekt.
- Wenden Sie einen Stil auf das Polygon an.
- Hängen Sie das Element an das JavaScript-Kartenobjekt an.
Jedes Objekt im buildings
-Array enthält ein einzelnes Objekt im building_outlines
-Array. Das folgende Beispiel zeigt, wie Sie die Umrisse eines Gebäudes auf einer Karte anzeigen:
//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)
}
}
Mit dem Code oben wird der Gebäudeumriss, der von der Geocoding API in der Beispielantwort weiter oben in diesem Dokument zurückgegeben wurde, auf der Karte so gerendert:
Sonderfälle
Möglicherweise treten auch die folgenden Grenzfälle auf. Der obige Beispielcode funktioniert jedoch auch in diesen Fällen:
- Eine Antwort mit mehreren Gebäudeumrissen.
- Ein einzelnes
building_outlines
-Objekt, das mehrere Polygone darstellt.
Die Antwort für die Orts-ID ChIJGxgH9QBVHBYRl13JmZ0BFgo
enthält beispielsweise zwei building_outlines[]
-Arrayergebnisse:
"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"
}
]
Mit dem obigen JavaScript-Codebeispiel können wir beide Umrisse auf der Karte rendern:
Feedback
Dies ist eine experimentelle Funktion. Wir freuen uns über Ihr Feedback unter buildings-in-geocoding-feedback-channel@google.com.