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 Ihrer 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 Ausstiegspunkts 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 der Geocoding 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=ChIJl2tj2-62j4ARzKWl1WCXLJI&extra_computations=BUILDING_AND_ENTRANCES&key=YOUR_API_KEY
Beispielantwort
In den meisten Fällen wird in der Antwort ein einzelnes Gebäude mit den bekannten Eingängen des Gebäudes zurückgegeben. In einigen Fällen kann die Antwort jedoch mehrere Gebäude enthalten, z. B. bei POIs, die sich in mehreren Gebäuden befinden. Die Gebäude und Eingänge werden durch die folgenden beiden Arrays dargestellt:
Ein buildings[]
-Array mit einem oder mehreren Gebäuden. Jedes Gebäude enthält die folgenden Felder:
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
buildings[]
, das diesen Eingang enthält. So können Sie erkennen, welche Gebäude welche Eingänge haben. Dieser Eingang entspricht dem Gebäude mit dem Indexi
inbuildings[]
, wobeibuildings[i].place_id
derbuilding_place_id
dieses Eingangs entspricht. Hinweis: Dieser Wert 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.entrance_tags[]
Ein Array von Eingangs-Tags, die Merkmale des Eingangs beschreiben. Folgender Wert wird unterstützt:
"PREFERRED"
Gibt an, dass dieser Eingang wahrscheinlich physischen Zugang zum zurückgegebenen Ort bietet. Ein Ort kann mehrere bevorzugte Eingänge haben. Wenn ein Eingang dieses Tag nicht hat, befindet er sich zwar im selben Gebäude, bietet aber nicht unbedingt Zugang zum Ort.
Wenn der zurückgegebene Ort beispielsweise ein Restaurant in einem Einkaufszentrum ist, sind die
"PREFERRED"
Eingänge die, die zum Restaurant selbst führen. Die anderen zurückgegebenen Eingänge sind Eingänge in das Gebäude, z. B. Eingänge zu anderen Restaurants im Einkaufszentrum.Wenn der zurückgegebene Ort selbst ein Gebäude ist, sind die
"PREFERRED"
Eingänge diejenigen, die zum „Hauptteil“ des Gebäudes führen. In einem Einkaufszentrum sind beispielsweise die Eingänge"PREFERRED"
, die Zugang zum Hauptfoyer ermöglichen. Wenn ein Eingang jedoch nur Zugang zu einem Geschäft an der Seite des Gebäudes bietet, ist er kein"PREFERRED"
-Eingang.
Das Bild unten zeigt eine visuelle Darstellung des Gebäudeumrisses und der Eingänge, die für die Beispielanfrage oben zurückgegeben wurden.
Die Antwort auf die Beispielanfrage oben zeigt zwei Eingänge und ein einzelnes Gebäude mit einem Umriss. Die building_place_id
der einzelnen Eingänge stimmen mit der place_id
des Gebäudes überein:
{
"entrances": [
{
"building_place_id" : "ChIJU1erIO-2j4ARzlavxpYBJr8",
"location" :
{
"lat" : 37.3736684,
"lng" : -122.0540469
},
"entrance_tags": ["PREFERRED"]
},
{
"building_place_id" : "ChIJU1erIO-2j4ARzlavxpYBJr8",
"location" :
{
"lat" : 37.3738239,
"lng" : -122.0539773
},
}
],
"buildings" : [
{
"building_outlines" : [
{
"display_polygon" : {
"coordinates" : [
[
[
-122.054453349467,
37.3742345734776
],
[
-122.054665964955,
37.3737591984554
],
[
-122.054080317537,
37.3735936952922
],
[
-122.053867527481,
37.374069124071
],
[
-122.054453349467,
37.3742345734776
]
]
],
"type" : "Polygon"
}
}
],
"place_id" : "ChIJU1erIO-2j4ARzlavxpYBJr8"
}
],
}
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. Im folgenden Beispiel wird gezeigt, wie Sie den Umriss 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:
Antworten mit mehreren Gebäuden oder Gebäudeumrissen verarbeiten
Möglicherweise treten auch die folgenden Situationen auf. Der obige Beispielcode funktioniert aber auch in diesen Fällen:
- Ein einzelnes
building_outlines
-Objekt, das mehrere Polygone darstellt. - Eine Antwort mit mehreren Gebäuden im
buildings[]
-Array.
Die Antwort für die Orts-ID ChIJGxgH9QBVHBYRl13JmZ0BFgo
enthält beispielsweise zwei Gebäude im Array buildings[]
:
"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 Gebäudeumrisse auf der Karte rendern:
Feedback
Dies ist eine experimentelle Funktion. Wir freuen uns über Ihr Feedback unter geocoding-feedback-channel@google.com.