Geocoding API를 사용하여 건물 윤곽선과 출입구를 가져와 지도 렌더링에서 데이터 시각화를 개선합니다.
이렇게 하려면 지오코딩 요청에 추가 매개변수를 포함하여 건물 윤곽선이나 입구를 정의하는 위도/경도 좌표 쌍을 반환하세요. 요청의 출력을 사용하여 지도에 건물 윤곽선을 그리고 건물 입구를 표시합니다.
- 건물 윤곽선은 건물이 덮고 있는 지구 표면적을 나타내는 2D 다각형을 정의하는 위도/경도 좌표 쌍의 집합입니다.
- 건물 입구는 장소의 출입구 위치를 정의하는 단일 위도/경도 좌표 쌍입니다.
사용 및 노출 범위
이 서비스를 사용하여 단일 요청에서 단일 장소의 윤곽선 다각형을 반환할 수 있습니다. 즉, 영국 런던과 같은 도시 수준 지오코드 요청은 해당 지역 내의 모든 건물 윤곽선을 반환하지 않습니다. 이러한 경우 서비스는 건물 윤곽선이나 출입구가 없는 표준 지오코딩 응답을 반환합니다. 특히 서비스는 다음 장소 유형에 대해서만 윤곽선과 입구를 생성합니다.
지원되는 장소 유형
건물 |
진입수 |
---|---|
|
|
|
|
|
|
|
이 기능은 모든 지역에서 사용할 수 있지만 지역에 따라 지원 범위가 다릅니다. 또한 건물 윤곽선은 포함되지만 출입구 데이터는 포함되지 않은 API 응답을 받게 됩니다. 이 경우 서비스는 건물 윤곽선이 포함된 지오코딩 응답을 반환하지만 입구 데이터 배열은 반환하지 않습니다. 이 서비스는 입구 범위를 개선하기 위해 지속적으로 노력하고 있습니다.
요청 세부정보
다음과 같은 요청에서 건물 윤곽선과 입구 좌표를 가져올 수 있습니다.
이러한 요청의 경우 extra_computations=BUILDING_AND_ENTRANCES
매개변수를 제공합니다.
요청 예시
다음 쿼리는 장소 지오코딩을 사용하여 미국 캘리포니아 주 마운틴뷰에 있는 레스토랑의 입구 및 개요 정보를 가져옵니다.
https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJl2tj2-62j4ARzKWl1WCXLJI&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
이 출입구가 포함된
buildings[]
의 건물의 장소 ID입니다. 이를 통해 어떤 건물에 어떤 출입구가 있는지 식별할 수 있습니다. 이 출입구는buildings[i].place_id
이 이 출입구의building_place_id
와 동일한buildings[]
의i
색인에 있는 건물에 해당합니다. 참고: 이 값은 지오코드 결과가 건물 자체에 대한 것이 아닌 한 지오코드 결과의 장소 ID와 다릅니다. 이 매개변수는 항상 채워지지는 않습니다.entrance_tags[]
입구의 특징을 설명하는 입구 태그의 배열입니다. 다음 값이 지원됩니다.
"PREFERRED"
이 출입구에서 반환된 장소로의 물리적 액세스를 제공할 가능성이 있음을 나타냅니다. 장소에는 기본 출입구가 여러 개 있을 수 있습니다. 출입구에 이 태그가 없으면 출입구가 물리적으로 동일한 건물에 있지만 장소로 연결되지 않을 수 있습니다.
예를 들어 반환된 장소가 쇼핑몰의 레스토랑인 경우
"PREFERRED"
출입구는 레스토랑 자체로 이어지는 출입구이고, 반환된 다른 출입구는 쇼핑몰의 다른 레스토랑으로 이어지는 출입구와 같은 건물의 다른 출입구입니다.반환된 장소가 건물 자체인 경우
"PREFERRED"
출입구는 건물의 '주' 부분으로 이어지는 출입구입니다. 예를 들어 쇼핑센터에서"PREFERRED"
출입구는 메인 로비 영역으로의 액세스를 허용하는 출입구입니다. 하지만 출입구가 건물 측면의 매장으로만 액세스를 제공하는 경우"PREFERRED"
출입구가 아닙니다.
아래 이미지는 위의 예시 요청에 대해 반환된 건물 윤곽선과 입구를 시각적으로 보여줍니다.
위 예시 요청의 응답에는 두 개의 출입구와 윤곽선이 있는 단일 건물이 표시됩니다. 각 출입구의 building_place_id
가 건물의 place_id
와 일치합니다.
{
"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"
}
],
}
지도에 건물 윤곽선 표시
JavaScript API에는 RFC 7946 형식 다각형 및 MultiPolygon 표시를 위한 기본 지원이 있습니다. 다음과 같이 실행합니다.
- 다각형 데이터를 사용하여 특성 객체를 빌드합니다.
- 다각형에 스타일을 적용합니다.
- 기능을 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
객체입니다. buildings[]
배열에 여러 건물이 포함된 응답
예를 들어 장소 ID ChIJGxgH9QBVHBYRl13JmZ0BFgo
의 응답에는 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"
}
]
위의 JavaScript 코드 샘플을 사용하면 지도에 건물 윤곽선을 모두 렌더링할 수 있습니다.
의견
실험용으로 제공되는 기능입니다. geocoding-feedback-channel@google.com으로 의견을 보내주시면 감사하겠습니다.