โครงร่างและทางเข้าของอาคาร

ใช้ Geocoding API เพื่อรับขอบอาคารและทางเข้าเพื่อปรับปรุงการแสดงภาพข้อมูลในการเรนเดอร์แผนที่

โดยใส่พารามิเตอร์เพิ่มเติมในคำขอการแปลงพิกัดภูมิศาสตร์เพื่อแสดงคู่พิกัดละติจูด/ลองจิจูดที่ระบุขอบอาคารหรือทางเข้า ใช้เอาต์พุตของคำขอเพื่อวาดโครงร่างอาคารและระบุทางเข้าอาคารบนแผนที่

  • ขอบอาคารคือชุดคู่พิกัดละติจูด/ลองจิจูดที่กําหนดรูปหลายเหลี่ยม 2 มิติซึ่งแสดงพื้นที่ผิวของดินแดนที่อาคารบดบัง
  • ทางเข้าอาคารคือคู่พิกัดละติจูด/ลองจิจูดเดียวซึ่งระบุตำแหน่งของจุดเข้าและออกของสถานที่

การใช้งานและความครอบคลุม

คุณสามารถใช้บริการนี้เพื่อแสดงผลรูปหลายเหลี่ยมขอบสำหรับสถานที่แห่งเดียวในคำขอเดียว ซึ่งหมายความว่าคำขอรหัสพิกัดภูมิศาสตร์ระดับเมือง เช่น ลอนดอน สหราชอาณาจักร จะไม่แสดงขอบอาคารทั้งหมดภายในสถานที่นั้น ในกรณีเช่นนี้ บริการจะแสดงผลการตอบกลับการแปลงพิกัดภูมิศาสตร์มาตรฐานที่ไม่มีขอบอาคารหรือทางเข้า กล่าวโดยละเอียดคือ บริการจะสร้างขอบร่างและทางเข้าสําหรับสถานที่ประเภทต่อไปนี้เท่านั้น

ประเภทสถานที่ที่รองรับ

อาคาร

การเข้าชม

premise

premise

subpremise

subpremise

point_of_interest

point_of_interest

street_address

แม้ว่าฟีเจอร์นี้จะพร้อมให้ใช้งานในทุกภูมิภาค แต่ความครอบคลุมจะแตกต่างกันไปตามภูมิภาค นอกจากนี้ คุณควรจะได้รับคำตอบจาก 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

ตัวอย่างการตอบกลับ

ในกรณีส่วนใหญ่ การตอบกลับจะแสดงผลช่องที่สอดคล้องกับอาคารเดียว แต่ในบางกรณี การตอบกลับอาจมีองค์ประกอบหลายรายการ เช่น จุดที่น่าสนใจซึ่งอยู่ในอาคารหลายหลัง องค์ประกอบการตอบกลับประกอบด้วยอาร์เรย์ 2 รายการ ได้แก่

อาร์เรย์ buildings[] ที่มีฟิลด์ต่อไปนี้

  • place_id

    ตัวระบุที่ไม่ซ้ำกันของอาคาร ดูรายละเอียดเพิ่มเติมในภาพรวมของรหัสสถานที่

  • building_outlines[]

    อาร์เรย์ของขอบที่เชื่อมโยงกับอาคาร อาร์เรย์นี้มีรายการเพียงรายการเดียว ออบเจ็กต์แต่ละรายการใน building_outlines[] มีช่องต่อไปนี้

    • display_polygon

    การเข้ารหัส GeoJSON ของรูปหลายเหลี่ยมที่ประมาณพื้นที่ผิวของดินที่อาคารบดบังโดยใช้รูปแบบ RFC 7946

อาร์เรย์ entrances[] ที่มีฟิลด์ต่อไปนี้

  • location

    พิกัดละติจูด/ลองจิจูดของทางเข้า

  • building_place_id

    รหัสสถานที่ของอาคารที่มีทางเข้า ซึ่งแตกต่างจากรหัสสถานที่ของผลการค้นหาพิกัดภูมิศาสตร์ เว้นแต่ผลการค้นหาพิกัดภูมิศาสตร์นั้นจะเป็นของอาคาร ระบบอาจไม่ป้อนข้อมูลพารามิเตอร์นี้เสมอไป

การตอบกลับจากข้อความค้นหาด้านบนแสดงทางเข้า 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 ในตัว โดยทำดังนี้

  1. สร้างออบเจ็กต์องค์ประกอบโดยใช้ข้อมูลรูปหลายเหลี่ยม
  2. ใช้สไตล์กับรูปหลายเหลี่ยม
  3. แนบองค์ประกอบกับออบเจ็กต์แผนที่ 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 แสดงผลภายในตัวอย่างคำตอบก่อนหน้านี้ในเอกสารนี้จะแสดงผลบนแผนที่ดังนี้

ขอบอาคารที่แสดงผลบนแผนที่

กรณีสุดโต่ง

คุณอาจพบกรณีขอบต่อไปนี้ด้วย แต่โค้ดตัวอย่างข้างต้นจะยังคงใช้งานได้ในกรณีเหล่านี้

  1. การตอบกลับที่มีขอบอาคารหลายรายการ
  2. ออบเจ็กต์ building_outlines รายการเดียวที่แสดงรูปหลายเหลี่ยมหลายรูป

ตัวอย่างเช่น การตอบกลับสําหรับรหัสสถานที่ ChIJGxgH9QBVHBYRl13JmZ0BFgo มีผลการค้นหาอาร์เรย์ building_outlines[] 2 รายการดังนี้

"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 ตัวอย่างด้านบน เราสามารถแสดงผลขอบทั้ง 2 แบบบนแผนที่ได้ ดังนี้

ขอบอาคาร 2 หลังที่แสดงผลบนแผนที่

ความคิดเห็น

นี่เป็นฟีเจอร์ทดลองใช้ โปรดส่งความคิดเห็นมาที่ buildings-in-geocoding-feedback-channel@google.com