ใช้ Geocoding API เพื่อรับขอบอาคารและทางเข้าเพื่อปรับปรุงการแสดงภาพข้อมูลในการเรนเดอร์แผนที่
โดยใส่พารามิเตอร์เพิ่มเติมในคำขอการแปลงพิกัดภูมิศาสตร์เพื่อแสดงคู่พิกัดละติจูด/ลองจิจูดที่ระบุขอบอาคารหรือทางเข้า ใช้เอาต์พุตของคำขอเพื่อวาดโครงร่างอาคารและระบุทางเข้าอาคารบนแผนที่
- ขอบอาคารคือชุดคู่พิกัดละติจูด/ลองจิจูดที่กําหนดรูปหลายเหลี่ยม 2 มิติซึ่งแสดงพื้นที่ผิวของดินแดนที่อาคารบดบัง
- ทางเข้าอาคารคือคู่พิกัดละติจูด/ลองจิจูดเดียวซึ่งระบุตำแหน่งของจุดเข้าและออกของสถานที่
การใช้งานและความครอบคลุม
คุณสามารถใช้บริการนี้เพื่อแสดงผลรูปหลายเหลี่ยมขอบสำหรับสถานที่แห่งเดียวในคำขอเดียว ซึ่งหมายความว่าคำขอรหัสพิกัดภูมิศาสตร์ระดับเมือง เช่น ลอนดอน สหราชอาณาจักร จะไม่แสดงขอบอาคารทั้งหมดภายในสถานที่นั้น ในกรณีเช่นนี้ บริการจะแสดงผลการตอบกลับการแปลงพิกัดภูมิศาสตร์มาตรฐานที่ไม่มีขอบอาคารหรือทางเข้า กล่าวโดยละเอียดคือ บริการจะสร้างขอบร่างและทางเข้าสําหรับสถานที่ประเภทต่อไปนี้เท่านั้น
ประเภทสถานที่ที่รองรับ
อาคาร |
การเข้าชม |
---|---|
|
|
|
|
|
|
|
แม้ว่าฟีเจอร์นี้จะพร้อมให้ใช้งานในทุกภูมิภาค แต่ความครอบคลุมจะแตกต่างกันไปตามภูมิภาค นอกจากนี้ คุณควรจะได้รับคำตอบจาก 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 ในตัว โดยทำดังนี้
- สร้างออบเจ็กต์องค์ประกอบโดยใช้ข้อมูลรูปหลายเหลี่ยม
- ใช้สไตล์กับรูปหลายเหลี่ยม
- แนบองค์ประกอบกับออบเจ็กต์แผนที่ 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
รายการเดียวที่แสดงรูปหลายเหลี่ยมหลายรูป
ตัวอย่างเช่น การตอบกลับสําหรับรหัสสถานที่ 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 แบบบนแผนที่ได้ ดังนี้
ความคิดเห็น
นี่เป็นฟีเจอร์ทดลองใช้ โปรดส่งความคิดเห็นมาที่ buildings-in-geocoding-feedback-channel@google.com