Mit der Geocoding API können Sie Gebäudeumrisse und Eingänge abrufen, um die Datenvisualisierung in Ihren Kartenrenderings zu verbessern.
Dazu müssen Sie einen zusätzlichen Parameter in Ihre Geocoding-Anfrage einfügen, um Breiten-/Längengrad-Koordinatenpaare zurückzugeben, die entweder einen Gebäudeumriss oder einen Eingang definieren. Mit der Ausgabe Ihrer Anfragen können Sie Gebäudeumrisse zeichnen und Gebäudeeingänge auf Ihrer Karte angeben.
- Ein Gebäudegrundriss ist eine Menge von Breiten-/Längengrad-Koordinatenpaaren, die ein 2D-Polygon definieren, das die von dem Gebäude abgedeckte Erdoberfläche darstellt.
- Ein Gebäudeeingang ist ein einzelnes Breiten-/Längengradkoordinatenpaar, das die Position eines Ein- und Ausgangspunkts für einen Ort definiert.
Nutzung und Abdeckung
Mit dem Dienst können Sie Umriss-Polygone für einen einzelnen Ort in einer einzelnen Anfrage zurückgeben. Das bedeutet, dass bei einer Anfrage für einen Geocode auf Stadtebene, z. B. „London, Vereinigtes Königreich“, nicht alle Gebäudeumrisse innerhalb dieses Orts zurückgegeben werden. In solchen Fällen würde der Dienst eine Standard-Geocoding-Antwort ohne Gebäudeumrisse oder Eingänge zurückgeben. Der Dienst generiert Umrisslinien und Eingänge nur für die folgenden Ortstypen:
Unterstützte Ortstypen
Gebäude |
Einstiege |
---|---|
|
|
|
|
|
|
|
Diese Funktion ist in allen Regionen verfügbar, die Abdeckung variiert jedoch je nach Region. Außerdem sollten Sie API-Antworten mit einem Gebäudeumriss, aber ohne Eingangsdaten erhalten. In diesem Fall gibt der Dienst eine Geocodierungsantwort mit einem Gebäudeumriss, aber kein Array mit Eingangsdaten zurück. Der Dienst arbeitet kontinuierlich daran, die Abdeckung von Eingängen zu verbessern.
Anfragedetails
Sie können Gebäudeumrisse und Eingangskoordinaten in den folgenden Arten von Anfragen abrufen:
Für alle diese Anfragen geben Sie diesen Parameter an: extra_computations=BUILDING_AND_ENTRANCES
.
Beispielanfrage
In der folgenden Abfrage wird die Ortsgeocodierung verwendet, um Informationen zum Eingang und 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 zusammen 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 Sehenswürdigkeiten, die sich über mehrere Gebäude erstrecken. 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 ID des Gebäudes. Weitere Informationen finden Sie in der Übersicht zu Orts-IDs.
building_outlines[]
Ein Array von Umrisslinien, 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 von dem Gebäude abgedeckte Erdoberfläche annähert, 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 ermitteln, welche Gebäude welche Eingänge haben. Dieser Eingang entspricht dem Gebäude am Indexi
inbuildings[]
, wobeibuildings[i].place_id
dembuilding_place_id
dieses Eingangs entspricht. Hinweis: Dieser Wert unterscheidet sich von der Orts-ID des Geocode-Ergebnisses, es sei denn, das Geocode-Ergebnis bezieht sich auf das Gebäude selbst. Dieser Parameter wird nicht immer ausgefüllt.entrance_tags[]
Ein Array von Eingangstags, die die Eigenschaften 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 physisch 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 Eingänge, die direkt ins Restaurant führen. Die anderen zurückgegebenen Eingänge sind andere Eingänge für das Gebäude, z. B. Eingänge zu anderen Restaurants im Einkaufszentrum.Wenn der zurückgegebene Ort ein Gebäude ist, sind die
"PREFERRED"
-Eingänge diejenigen, die in den „Hauptteil“ des Gebäudes führen. In einem Einkaufszentrum sind die"PREFERRED"
-Eingänge beispielsweise diejenigen, die den Zugang zum Hauptfoyer ermöglichen. Wenn ein Eingang nur den Zugang zu einem Geschäft an der Seite des Gebäudes ermöglicht, 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 Umriss. Beachten Sie, dass die building_place_id
jedes Eingangs mit der place_id
des Gebäudes übereinstimmt:
{
"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 bietet integrierte Unterstützung für die Anzeige von Polygonen und MultiPolygonen im RFC 7946-Format. So gehen Sie vor:
- Erstellen Sie ein Feature-Objekt mit den Polygondaten.
- Wenden Sie einen Stil auf das Polygon an.
- Hängen Sie das Attribut an das JavaScript-Kartenobjekt an.
Jedes Objekt im buildings
-Array enthält ein einzelnes Objekt im building_outlines
-Array. Das folgende Beispiel zeigt, wie ein Gebäudeumriss auf einer Karte dargestellt wird:
//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 oben stehenden Code wird der von der Geocoding API zurückgegebene Gebäudeumriss in der Beispielantwort weiter oben in diesem Dokument so auf der Karte gerendert:
Antworten mit mehreren Gebäuden oder Gebäudeumrissen verarbeiten
Es kann auch zu den folgenden Situationen kommen. Der oben genannte 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 oben gezeigten JavaScript-Codebeispiel können wir beide Gebäudeumrisse auf der Karte rendern:
Feedback
Dies ist eine experimentelle Funktion. Wir freuen uns über Feedback unter geocoding-feedback-channel@google.com.