Gunakan Geocoding API untuk mendapatkan garis batas dan pintu masuk bangunan guna meningkatkan visualisasi data dalam rendering peta Anda.
Untuk melakukannya, sertakan parameter tambahan dalam permintaan Geocoding Anda untuk menampilkan pasangan koordinat lintang/bujur yang menentukan garis batas bangunan, atau pintu masuk. Gunakan output permintaan Anda untuk menggambar garis batas bangunan dan menunjukkan pintu masuk bangunan di peta.
- Garis batas bangunan adalah kumpulan pasangan koordinat lintang/bujur yang menentukan poligon 2D yang mewakili area permukaan bumi yang tertutup oleh bangunan.
- Pintu masuk bangunan adalah satu pasangan koordinat lintang/bujur yang menentukan lokasi titik masuk dan keluar ke suatu tempat.
Penggunaan & cakupan
Anda dapat menggunakan layanan ini untuk menampilkan poligon garis batas untuk satu tempat dalam satu permintaan. Artinya, permintaan untuk geocode tingkat kota, seperti London, Inggris Raya, tidak menampilkan semua garis batas bangunan dalam lokalitas tersebut. Dalam kasus tersebut, layanan akan menampilkan respons geocoding standar tanpa garis batas atau pintu masuk bangunan. Secara khusus, layanan ini menghasilkan garis batas dan pintu masuk hanya untuk jenis tempat berikut:
Jenis tempat yang didukung
Gedung |
Masuk |
---|---|
|
|
|
|
|
|
|
Meskipun fitur ini tersedia untuk digunakan di semua wilayah, cakupannya bervariasi berdasarkan wilayah. Selain itu, Anda akan menerima respons API yang berisi garis batas bangunan, tetapi tidak ada data pintu masuk. Dalam hal ini, layanan akan menampilkan respons geocoding dengan garis batas bangunan, tetapi tidak ada array data pintu masuk. Layanan ini terus berupaya meningkatkan cakupan pintu masuk.
Detail permintaan
Anda bisa mendapatkan garis batas bangunan dan koordinat pintu masuk dalam jenis permintaan berikut:
Untuk setiap permintaan ini, Anda harus memberikan parameter ini:
extra_computations=BUILDING_AND_ENTRANCES
.
Contoh permintaan
Kueri berikut menggunakan geocoding tempat untuk mendapatkan informasi pintu masuk dan garis batas untuk restoran di Mountain View, California, Amerika Serikat:
https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJ4TTDdzS3j4AR78EQgu5EADA&extra_computations=BUILDING_AND_ENTRANCES&key=YOUR_API_KEY
Contoh respons
Dalam sebagian besar kasus, respons menampilkan kolom yang sesuai dengan satu bangunan, tetapi dalam beberapa kasus, respons dapat memiliki beberapa elemen, seperti lokasi menarik yang menempati beberapa bangunan. Elemen respons mencakup dua array:
Array buildings[]
dengan kolom berikut:
place_id
ID unik bangunan. Lihat Ringkasan ID tempat untuk mengetahui detail selengkapnya.
building_outlines[]
Array garis batas yang terkait dengan bangunan. Array ini hanya memiliki satu entri. Setiap objek di
building_outlines[]
memiliki kolom berikut:display_polygon
Encoding GeoJSON poligon yang mendekati luas permukaan bumi yang tertutup oleh bangunan, menggunakan format RFC 7946
Array entrances[]
dengan kolom berikut:
location
Koordinat lintang/bujur pintu masuk.
building_place_id
ID tempat gedung yang berisi pintu masuk. ID ini berbeda dengan ID tempat hasil geocode, kecuali jika hasil geocode ditujukan untuk bangunan itu sendiri. Parameter ini tidak selalu diisi.
Respons dari kueri di atas menampilkan satu pintu masuk dan satu item poligon dalam array bangunan:
{
"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"
}
],
}
Menampilkan garis batas bangunan di peta
JavaScript API memiliki dukungan bawaan untuk menampilkan Poligon dan Multipoligon format RFC 7946. Anda melakukannya dengan cara berikut:
- Buat objek fitur menggunakan data poligon.
- Terapkan gaya ke poligon.
- Lampirkan fitur ke objek peta JavaScript.
Setiap objek dalam array buildings
berisi satu objek dalam
array building_outlines
. Contoh berikut menunjukkan cara menampilkan garis batas bangunan di peta:
//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)
}
}
Dengan menggunakan kode di atas, garis batas bangunan yang ditampilkan oleh Geocoding API dalam contoh respons sebelumnya dalam dokumen ini dirender pada peta sebagai berikut:
Kasus ekstrem
Anda mungkin juga mengalami kasus ekstrem berikut; namun, kode contoh di atas masih akan berfungsi untuk kasus ini:
- Respons dengan beberapa garis batas bangunan.
- Satu objek
building_outlines
yang mewakili beberapa poligon.
Misalnya, respons untuk ID tempat ChIJGxgH9QBVHBYRl13JmZ0BFgo
berisi dua hasil array 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"
}
]
Dengan menggunakan contoh kode JavaScript di atas, kita dapat merender kedua garis batas di peta:
Masukan
Ini adalah fitur eksperimental. Kami menghargai masukan Anda di buildings-in-geocoding-feedback-channel@google.com.