Garis batas dan pintu masuk bangunan

Developer Wilayah Ekonomi Eropa (EEA)

Gunakan Geocoding API untuk mendapatkan garis luar bangunan dan pintu masuk untuk meningkatkan visualisasi data dalam rendering peta Anda.

Untuk melakukannya, sertakan parameter tambahan dalam permintaan Geocoding Anda untuk menampilkan pasangan koordinat garis 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 Anda.

  • Garis batas bangunan adalah kumpulan pasangan koordinat lintang/bujur yang menentukan poligon 2D yang merepresentasikan luas permukaan bumi yang tercakup oleh bangunan.
  • Pintu masuk gedung 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 batas untuk satu tempat dalam satu permintaan. Artinya, permintaan geocode tingkat kota, seperti London, Inggris Raya, tidak menampilkan semua garis batas bangunan dalam lokalitas tersebut. Dalam kasus seperti itu, layanan akan menampilkan respons geocoding standar tanpa garis batas atau pintu masuk bangunan. Secara khusus, layanan ini hanya menghasilkan garis batas dan pintu masuk untuk jenis tempat berikut:

Jenis tempat yang didukung

Gedung

Masuk

premise

premise

subpremise

subpremise

point_of_interest

point_of_interest

street_address

Meskipun fitur ini tersedia untuk digunakan di semua wilayah, cakupannya bervariasi menurut 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 tanpa array data pintu masuk. Layanan terus berupaya meningkatkan cakupan pintu masuk.

Detail permintaan

Anda dapat memperoleh garis batas bangunan dan koordinat pintu masuk dalam jenis permintaan berikut:

Untuk 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 restoran di Mountain View, California, Amerika Serikat:

https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJl2tj2-62j4ARzKWl1WCXLJI&extra_computations=BUILDING_AND_ENTRANCES&key=YOUR_API_KEY

Contoh respons

Biasanya, respons menampilkan satu bangunan beserta pintu masuk bangunan yang diketahui. Namun, dalam beberapa kasus, respons dapat memiliki beberapa bangunan, seperti tempat menarik yang menempati beberapa bangunan. Bangunan dan pintu masuk diwakili dengan dua array berikut:

Array buildings[] dengan satu atau beberapa bangunan. Setiap bangunan berisi 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 dari poligon yang memperkirakan luas permukaan bumi yang tercakup oleh bangunan, menggunakan format RFC 7946

Array entrances[] dengan kolom berikut:

  • location

    Koordinat lintang/bujur pintu masuk.

  • building_place_id

    ID tempat bangunan di buildings[] yang berisi pintu masuk ini. Dengan begitu, Anda dapat mengidentifikasi bangunan mana yang memiliki pintu masuk tertentu. Pintu masuk ini sesuai dengan bangunan pada indeks i di buildings[] dengan buildings[i].place_id sama dengan building_place_id pintu masuk ini. Catatan: Nilai ini berbeda dengan ID tempat hasil geocode, kecuali jika hasil geocode adalah untuk gedung itu sendiri. Parameter ini tidak selalu diisi.

  • entrance_tags[]

    Array tag masuk yang menjelaskan karakteristik pintu masuk. Nilai berikut didukung:

    • "PREFERRED"

      Menunjukkan bahwa pintu masuk ini kemungkinan menyediakan akses fisik ke tempat yang ditampilkan. Tempat dapat memiliki beberapa pintu masuk pilihan. Jika pintu masuk tidak memiliki tag ini, berarti pintu masuk tersebut secara fisik berada di gedung yang sama, tetapi tidak selalu memberikan akses ke tempat tersebut.

      Misalnya, jika tempat yang ditampilkan adalah restoran di pusat perbelanjaan, pintu masuk "PREFERRED" yang ditampilkan adalah pintu masuk yang menuju ke restoran itu sendiri, sedangkan pintu masuk lain yang ditampilkan adalah pintu masuk lain untuk bangunan tersebut, seperti pintu masuk ke restoran lain di pusat perbelanjaan.

      Jika tempat yang ditampilkan adalah bangunan itu sendiri, pintu masuk "PREFERRED" adalah pintu masuk yang mengarah ke bagian "utama" bangunan. Misalnya, di pusat perbelanjaan, pintu masuk "PREFERRED" adalah pintu masuk yang memungkinkan akses ke area lobi utama, tetapi jika pintu masuk hanya memberikan akses ke toko di sisi gedung, pintu masuk tersebut tidak akan menjadi pintu masuk "PREFERRED".

Gambar di bawah menunjukkan representasi visual garis batas bangunan dan pintu masuk yang ditampilkan untuk contoh permintaan di atas.

Garis batas bangunan dan dua pintu masuk yang dirender di peta. Pintu masuk PREFERRED ditampilkan dengan ikon yang lebih besar daripada pintu masuk lainnya.

Respons dari contoh permintaan di atas menunjukkan dua pintu masuk dan satu bangunan dengan garis batas. Perhatikan bahwa building_place_id setiap pintu masuk cocok dengan place_id bangunan:

{
  "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"
    }
  ],
}

Menampilkan garis batas bangunan di peta

JavaScript API memiliki dukungan bawaan untuk menampilkan Poligon dan MultiPoligon format RFC 7946. Anda melakukannya sebagai berikut:

  1. Buat objek fitur menggunakan data poligon.
  2. Terapkan gaya ke poligon.
  3. 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 di peta sebagai berikut:

Garis batas bangunan yang dirender di peta

Menangani respons dengan beberapa bangunan atau garis batas bangunan

Anda mungkin juga mengalami situasi berikut; namun, contoh kode di atas akan tetap berfungsi untuk situasi ini:

  1. Satu objek building_outlines yang merepresentasikan beberapa poligon.
  2. Respons dengan beberapa bangunan dalam array buildings[].

Misalnya, respons untuk ID tempat ChIJGxgH9QBVHBYRl13JmZ0BFgo berisi dua bangunan dalam array 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"
    }
]

Dengan menggunakan contoh kode JavaScript di atas, kita dapat merender kedua garis batas bangunan di peta:

Dua garis batas bangunan yang dirender di peta

Masukan

Ini adalah fitur eksperimental. Kami akan menghargai masukan yang dikirimkan ke [email protected].