Geocoding API를 사용하여 건물 윤곽선과 입구를 가져와 지도 렌더링에서 데이터 시각화를 개선하세요.
이렇게 하려면 지오코딩 요청에 추가 매개변수를 포함하여 건물 윤곽선 또는 입구를 정의하는 위도/경도 좌표 쌍을 반환합니다. 요청의 출력을 사용하여 건물 윤곽을 그리고 지도에 건물 입구를 표시합니다.
- 건물 윤곽은 건물로 덮인 지구 표면적을 나타내는 2D 다각형을 정의하는 위도/경도 좌표 쌍의 집합입니다.
- 건물 입구는 장소의 진입점과 출입점의 위치를 정의하는 단일 위도/경도 좌표 쌍입니다.
사용 및 노출 범위
이 서비스를 사용하여 단일 요청에서 단일 장소의 윤곽 다각형을 반환할 수 있습니다. 즉, 영국 런던과 같은 도시 수준 지오코드에 대한 요청은 해당 지역 내의 모든 건물 윤곽을 반환하지 않습니다. 이 경우 서비스는 건물 윤곽선이나 입구가 없는 표준 지오코딩 응답을 반환합니다. 특히 이 서비스는 다음 장소 유형에 대해서만 윤곽선과 입구를 생성합니다.
지원되는 장소 유형
건물 |
진입수 |
---|---|
|
|
|
|
|
|
|
이 기능은 모든 지역에서 사용할 수 있지만 적용 범위는 지역에 따라 다릅니다. 또한 건물 윤곽선은 포함되어 있지만 입구 데이터는 포함되지 않은 API 응답을 수신하게 됩니다. 이 경우 서비스는 건물 윤곽선이 포함된 지오코딩 응답을 반환하지만 진입로 데이터 배열은 반환하지 않습니다. 이 서비스는 지속적으로 진입 노출 범위를 개선하기 위해 노력하고 있습니다.
요청 세부정보
다음과 같은 유형의 요청에서 건물 윤곽선과 입구 좌표를 가져올 수 있습니다.
이러한 요청의 경우 extra_computations=BUILDING_AND_ENTRANCES
매개변수를 제공합니다.
요청 예시
다음 쿼리는 장소 지오코딩을 사용하여 미국 캘리포니아 주 마운틴뷰에 있는 음식점의 입구 및 개요 정보를 가져옵니다.
https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJ4TTDdzS3j4AR78EQgu5EADA&extra_computations=BUILDING_AND_ENTRANCES&key=YOUR_API_KEY
응답 예
대부분의 경우 응답은 단일 건물에 해당하는 필드를 반환하지만, 여러 건물을 차지하는 관심 장소와 같이 응답에 여러 요소가 포함될 수도 있습니다. 응답 요소에는 두 개의 배열이 포함됩니다.
다음 필드가 있는 buildings[]
배열입니다.
place_id
건물의 고유 식별자입니다. 자세한 내용은 장소 ID 개요를 참고하세요.
building_outlines[]
건물과 연결된 윤곽선 배열입니다. 이 배열에는 항목이 하나만 있습니다.
building_outlines[]
의 각 객체에는 다음 필드가 있습니다.display_polygon
RFC 7946 형식을 사용하여 건물이 덮고 있는 지구의 표면적을 근사하는 다각형의 GeoJSON 인코딩
다음 필드가 있는 entrances[]
배열입니다.
location
입구의 위도/경도 좌표입니다.
building_place_id
입구가 있는 건물의 장소 ID입니다. 이는 지오코딩 결과가 건물 자체에 대한 결과가 아닌 한 지오코딩 결과의 장소 ID와 다릅니다. 이 매개변수는 항상 채워지는 것은 아닙니다.
위 쿼리의 응답에는 건물 배열에 입구 1개와 다각형 항목 1개가 표시됩니다.
{
"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"
}
],
}
지도에 건물 윤곽선 표시
JavaScript API에는 RFC 7946 형식 다각형 및 다중 다각형 표시를 위한 기본 지원이 있습니다. 이렇게 하려면 다음 단계를 따르세요.
- 다각형 데이터를 사용하여 지형지물 객체를 빌드합니다.
- 다각형에 스타일을 적용합니다.
- 지형지물을 JavaScript 지도 객체에 연결합니다.
buildings
배열의 모든 객체에는 building_outlines
배열의 단일 객체가 포함됩니다. 다음 예는 지도에 건물 윤곽선을 표시하는 방법을 보여줍니다.
//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)
}
}
위의 코드를 사용하면 이 문서 앞부분의 예시 응답 내 Geocoding API에서 반환한 건물 윤곽선이 다음과 같이 지도에 렌더링됩니다.
특이 사례
다음과 같은 특이 사례가 발생할 수도 있지만 위의 샘플 코드는 이러한 경우에도 작동합니다.
- 여러 건물 윤곽선이 포함된 응답
- 여러 다각형을 나타내는 단일
building_outlines
객체입니다.
예를 들어 장소 ID ChIJGxgH9QBVHBYRl13JmZ0BFgo
의 응답에는 두 개의 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"
}
]
위의 JavaScript 코드 샘플을 사용하면 지도에 두 윤곽선을 모두 렌더링할 수 있습니다.
의견
실험용으로 제공되는 기능입니다. buildings-in-geocoding-feedback-channel@google.com으로 의견을 보내 주세요.