Bina ana hatları ve girişleri

Harita oluşturma işlemlerinizdeki veri görselleştirmeyi iyileştirmek için bina dış hatlarını ve girişlerini almak üzere Coğrafi Kodlama API'yi kullanın.

Bunu yapmak için coğrafi kodlama isteğinize bir bina ana hattını veya girişi tanımlayan enlem/boylam koordinat çiftleri döndürmek üzere ek bir parametre ekleyin. Bina dış hatlarını çizmek ve haritanızda bina girişlerini belirtmek için isteklerinizin çıktısını kullanın.

  • Bina dış çizgisi, binanın kapladığı dünya yüzey alanını temsil eden 2D poligonu tanımlayan bir enlem/boylam koordinat çifti grubudur.
  • Bina girişi, bir yere giriş ve çıkış noktasının konumunu tanımlayan tek bir enlem/boylam koordinat çiftidir.

Kullanım ve kapsam

Hizmeti, tek bir istekte tek bir yere ait dış çizgi poligonlarını döndürmek için kullanabilirsiniz. Bu, Londra, Birleşik Krallık gibi şehir düzeyinde bir coğrafi kod isteğinin, söz konusu konumdaki tüm yapı dış çizgilerini döndürmediği anlamına gelir. Bu gibi durumlarda hizmet, bina ana hatları veya girişleri olmayan standart bir coğrafi kodlama yanıtı döndürür. Özellikle, hizmet yalnızca aşağıdaki yer türleri için ana hatlar ve girişler oluşturur:

Desteklenen yer türleri

Köprü

Giriş sayısı

premise

premise

subpremise

subpremise

point_of_interest

point_of_interest

street_address

Bu özellik tüm bölgelerde kullanılabilir ancak kapsamı bölgeye göre değişir. Ayrıca, bina ana hatlarını içeren ancak giriş verileri içermeyen API yanıtları almayı bekleyebilirsiniz. Bu durumda hizmet, giriş verisi dizisi içermeyen ancak bina ana hatlarını içeren bir coğrafi kodlama yanıtı döndürür. Hizmet, giriş kapsamını iyileştirmek için sürekli olarak çalışmaktadır.

Talep ayıntıları

Bina dış hatlarını ve giriş koordinatlarını aşağıdaki istek türlerinde alabilirsiniz:

Bu isteklerin herhangi biri için şu parametreyi sağlarsınız: extra_computations=BUILDING_AND_ENTRANCES.

Örnek istek

Aşağıdaki sorgu, ABD'nin Kaliforniya eyaletinde bulunan Mountain View'daki bir restoranın giriş ve ana hatlarıyla ilgili bilgilerini almak için yer coğrafi kodlamasını kullanır:

https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJ4TTDdzS3j4AR78EQgu5EADA&extra_computations=BUILDING_AND_ENTRANCES&key=YOUR_API_KEY

Örnek yanıt

Çoğu durumda yanıt, tek bir binaya karşılık gelen alanları döndürür ancak bazı durumlarda yanıtta birden fazla öğe (ör. birden fazla binayı kaplayan ilgi çekici yerler) bulunabilir. Yanıt öğeleri iki dizi içerir:

Aşağıdaki alanlara sahip bir buildings[] dizisi:

  • place_id

    Binanın benzersiz tanımlayıcısı. Daha fazla bilgi için Yer kimliklerine genel bakış başlıklı makaleyi inceleyin.

  • building_outlines[]

    Yapıyla ilişkili ana hatlar dizisi. Bu dizi yalnızca bir girişe sahiptir. building_outlines[] alanındaki her nesnenin aşağıdaki alanı vardır:

    • display_polygon

    RFC 7946 biçimini kullanarak binanın kapladığı arazinin yüzey alanını yaklaşık olarak gösteren poligonun GeoJSON kodlaması

Aşağıdaki alanları içeren bir entrances[] dizisi:

  • location

    Girişin enlem/boylam koordinatları.

  • building_place_id

    Girişi içeren binanın yer kimliği. Coğrafi kodlama sonucu binanın kendisi için değilse bu, coğrafi kodlama sonucunun yer kimliğinden farklıdır. Bu parametre her zaman doldurulmaz.

Yukarıdaki sorgudan alınan yanıtta, buildings dizisinde bir giriş ve tek bir poligon öğesi gösterilmektedir:

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

Haritada bina ana hatlarını gösterme

JavaScript API, RFC 7946 biçimindeki Poligonlar ve Çoklu Poligonlar'ı görüntüleme için yerleşik desteğe sahiptir. Bunu şu şekilde yapabilirsiniz:

  1. Poligon verilerini kullanarak bir özellik nesnesi oluşturun.
  2. Çokgene bir stil uygulayın.
  3. Özelliği JavaScript harita nesnesine ekleyin.

buildings dizisindeki her nesne, building_outlines dizisinde tek bir nesne içerir. Aşağıdaki örnek, harita üzerinde bir yapı ana hattının nasıl görüntüleneceğini gösterir:

//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)
    }
}

Yukarıdaki kod kullanılarak, bu belgenin önceki bölümündeki örnek yanıtta Coğrafi Kodlama API'si tarafından döndürülen bina dış çizgisi haritada aşağıdaki gibi oluşturulur:

Haritada oluşturulan bina dış çizgisi

Sıra dışı durumlar

Aşağıdaki uç durumlarda da karşılaşabilirsiniz. Ancak yukarıdaki örnek kod bu durumlarda da işe yarayacaktır:

  1. Birden fazla bina ana hattı içeren bir yanıt.
  2. Birden fazla poligonu temsil eden tek bir building_outlines nesnesi.

Örneğin, ChIJGxgH9QBVHBYRl13JmZ0BFgo yer kimliğine yönelik yanıt iki building_outlines[] dizisi sonucu içerir:

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

Yukarıdaki JavaScript kod örneğini kullanarak harita üzerinde her iki ana hattı da oluşturabiliriz:

Haritada oluşturulan iki bina taslağı

Geri bildirim

Bu, deneysel bir özelliktir. buildings-in-geocoding-feedback-channel@google.com adresinden geri bildirimlerinizi öğrenmekten memnuniyet duyarız.