ใช้ Geocoding API เพื่อรับโครงร่างอาคารและทางเข้าเพื่อเพิ่มประสิทธิภาพการแสดงข้อมูล ด้วยภาพในการแสดงแผนที่
โดยให้ใส่พารามิเตอร์เพิ่มเติมในคำขอ Geocoding เพื่อแสดงผลคู่พิกัดละติจูด/ลองจิจูดที่กำหนดโครงร่างอาคารหรือทางเข้า ใช้เอาต์พุตของคำขอเพื่อวาดโครงร่างอาคารและระบุ ทางเข้าอาคารบนแผนที่
- ขอบเขตของอาคารคือชุดคู่พิกัดละติจูด/ลองจิจูด ที่กำหนดรูปหลายเหลี่ยม 2 มิติซึ่งแสดงพื้นที่ผิวของโลกที่อาคารครอบคลุม
- ทางเข้าอาคารคือคู่พิกัดละติจูด/ลองจิจูดคู่เดียว ที่กำหนดตำแหน่งของจุดเข้าและออกของสถานที่
การใช้งานและความครอบคลุม
คุณสามารถใช้บริการนี้เพื่อแสดงผลรูปหลายเหลี่ยมขอบเขตสำหรับสถานที่เดียวในคำขอเดียว ซึ่งหมายความว่าคำขอรหัสพิกัดภูมิศาสตร์ระดับเมือง เช่น ลอนดอน สหราชอาณาจักร จะไม่แสดงโครงร่างอาคารทั้งหมดภายในพื้นที่นั้น ในกรณีดังกล่าว บริการจะแสดงผลการตอบกลับการเข้ารหัสพิกัดภูมิศาสตร์มาตรฐานโดยไม่มี โครงร่างหรือทางเข้าของอาคาร โดยเฉพาะอย่างยิ่ง บริการจะสร้างโครงร่างและ ทางเข้าสำหรับสถานที่ประเภทต่อไปนี้เท่านั้น
ประเภทสถานที่ที่รองรับ
อาคาร |
การเข้าชม |
---|---|
|
|
|
|
|
|
|
แม้ว่าฟีเจอร์นี้จะพร้อมให้ใช้งานในทุกภูมิภาค แต่ความครอบคลุมจะแตกต่างกันไปตามภูมิภาค นอกจากนี้ คุณควรคาดหวังที่จะได้รับการตอบกลับจาก 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
ตัวอย่างการตอบกลับ
ในกรณีส่วนใหญ่ การตอบกลับจะแสดงอาคารเดียวพร้อมกับทางเข้าที่ทราบของอาคาร แต่ในบางกรณี คำตอบอาจมีอาคารหลายหลัง เช่น จุดที่น่าสนใจซึ่งครอบคลุมอาคารหลายหลัง อาคารและทางเข้าแสดงด้วยอาร์เรย์ 2 รายการต่อไปนี้
buildings[]
อาร์เรย์ที่มีอาคารอย่างน้อย 1 หลัง อาคารแต่ละหลังมีฟิลด์ต่อไปนี้
place_id
ตัวระบุที่ไม่ซ้ำกันของอาคาร ดูรายละเอียดเพิ่มเติมได้ที่ภาพรวมรหัสสถานที่
building_outlines[]
อาร์เรย์ของโครงร่างที่เชื่อมโยงกับอาคาร อาร์เรย์นี้มีรายการเดียว ออบเจ็กต์แต่ละรายการใน
building_outlines[]
มีฟิลด์ต่อไปนี้display_polygon
การเข้ารหัส GeoJSON ของรูปหลายเหลี่ยมที่ประมาณพื้นที่ผิวของ โลกซึ่งอาคารครอบคลุม โดยใช้รูปแบบ RFC 7946
entrances[]
อาร์เรย์ที่มีฟิลด์ต่อไปนี้
location
พิกัดละติจูด/ลองจิจูดของทางเข้า
building_place_id
รหัสสถานที่ของอาคารใน
buildings[]
ที่มีทางเข้านี้ ซึ่งจะช่วยให้คุณระบุได้ว่าอาคารใดมีทางเข้าใด ทางเข้านี้สอดคล้องกับอาคารที่ดัชนีi
ในbuildings[]
โดยที่buildings[i].place_id
เท่ากับbuilding_place_id
ของทางเข้านี้ หมายเหตุ: ค่านี้จะแตกต่างจากรหัสสถานที่ของผลลัพธ์การแปลงรหัสพิกัดภูมิศาสตร์ เว้นแต่ผลลัพธ์การแปลงรหัสพิกัดภูมิศาสตร์จะเป็นของอาคารนั้นๆ เอง ระบบจะไม่ สร้างพารามิเตอร์นี้เสมอไปentrance_tags[]
อาร์เรย์ของแท็กทางเข้าที่อธิบายลักษณะของทางเข้า ค่าที่รองรับมีดังนี้
"PREFERRED"
ระบุว่าทางเข้านี้อาจให้สิทธิ์เข้าถึงสถานที่ที่ส่งคืน สถานที่อาจมีทางเข้าที่แนะนำหลายแห่ง หากทางเข้าไม่มีแท็กนี้ หมายความว่าทางเข้าอยู่ในอาคารเดียวกัน แต่ไม่ได้ให้สิทธิ์เข้าถึงสถานที่ดังกล่าว
เช่น หากสถานที่ที่ส่งคืนเป็นร้านอาหารในแหล่งรวมร้านค้า
"PREFERRED"
ทางเข้าจะเป็นทางเข้าที่นำไปสู่ร้านอาหาร นั้นๆ โดยตรง ส่วนทางเข้าอื่นๆ ที่ส่งคืนจะเป็นทางเข้าอื่นๆ ของ อาคาร เช่น ทางเข้าที่นำไปสู่ร้านอาหารอื่นๆ ในแหล่งรวมร้านค้า นั้นหากสถานที่ที่ส่งคืนเป็นตัวอาคารเอง
"PREFERRED"
ทางเข้า จะเป็นทางเข้าที่นำไปสู่ส่วน "หลัก" ของอาคาร ตัวอย่างเช่น ในศูนย์การค้า"PREFERRED"
ทางเข้าจะเป็นทางเข้าที่อนุญาตให้เข้าถึงบริเวณโถงหลัก แต่หากทางเข้าอนุญาตให้เข้าถึงร้านค้าที่อยู่ด้านข้างของอาคารเท่านั้น ทางเข้านั้นจะไม่ใช่"PREFERRED"
ทางเข้า
รูปภาพด้านล่างแสดงการนำเสนอภาพของโครงร่างอาคารและ ทางเข้าที่แสดงผลสำหรับคำขอตัวอย่างด้านบน
การตอบกลับจากคำขอตัวอย่างด้านบนแสดงทางเข้า 2 แห่งและ
อาคารเดียวที่มีเส้นขอบ โปรดสังเกตว่า 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 มีการรองรับในตัว สำหรับการแสดงรูปหลายเหลี่ยมและ MultiPolygon ในรูปแบบ 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
ออบเจ็กต์เดียวที่แสดงรูปหลายเหลี่ยมหลายรูป- การตอบกลับที่มีอาคารหลายหลังในอาร์เรย์
buildings[]
ตัวอย่างเช่น การตอบกลับสำหรับรหัสสถานที่ ChIJGxgH9QBVHBYRl13JmZ0BFgo
จะมีอาคาร 2 หลังในอาร์เรย์ 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 ด้านบน เราจะแสดงทั้งโครงร่างอาคาร บนแผนที่ได้
ความคิดเห็น
นี่เป็นฟีเจอร์ทดลองใช้ เรายินดีรับฟังความคิดเห็นที่ [email protected]