Bina ana hatları ve girişleri

Avrupa Ekonomik Alanı (AEA) geliştiricileri

Harita oluşturmalarınızdaki veri görselleştirmeyi geliştirmek için Geocoding API'yi kullanarak bina ana hatlarını ve girişlerini alın.

Bunu yapmak için coğrafi kodlama isteğinize, bina ana hattını veya girişi tanımlayan enlem/boylam koordinat çiftlerini döndürecek ek bir parametre ekleyin. İsteklerinizin sonucunu kullanarak haritanızda bina ana hatları çizin ve bina girişlerini belirtin.

  • Bina ana hattı, binanın kapladığı dünya yüzeyini temsil eden 2D poligonu tanımlayan bir enlem/boylam koordinat çiftleri kümesidir.
  • 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 kullanarak tek bir istekte tek bir yerin ana hat poligonlarını döndürebilirsiniz. Bu, "Birleşik Krallık, Londra" gibi şehir düzeyinde bir coğrafi kod isteğinin, söz konusu yerleşim birimindeki tüm bina ana hatlarını döndürmediği anlamına gelir. Bu gibi durumlarda hizmet, bina ana hatları veya girişleri içermeyen standart bir coğrafi kodlama yanıtı döndürür. Hizmet, özellikle 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, API yanıtlarında bina ana hatlarının yer alacağını ancak giriş verilerinin bulunmayacağını unutmayın. Bu durumda hizmet, bina ana hattını içeren bir coğrafi kodlama yanıtı döndürür ancak giriş verileri dizisi döndürmez. Hizmet, giriş kapsamını iyileştirmek için sürekli olarak çalışır.

Talep ayıntıları

Aşağıdaki türlerdeki isteklerde bina ana hatlarını ve giriş koordinatlarını 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 eyaletindeki Mountain View şehrinde bulunan bir restoranın giriş ve ana hat bilgilerini almak için place geocoding'i kullanır:

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

Örnek yanıt

Çoğu durumda, yanıt binanın bilinen girişleriyle birlikte tek bir bina döndürür. Ancak bazı durumlarda, yanıt birden fazla bina içerebilir. Örneğin, birden fazla binada yer alan ilgi çekici yerler. Binalar ve girişler aşağıdaki iki diziyle gösterilir:

Bir veya daha fazla bina içeren buildings[] dizisi. Her binada aşağıdaki alanlar bulunur:

  • 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[]

    Binayla ilişkili ana hatlar dizisi. Bu dizide yalnızca bir giriş var. building_outlines[] içindeki her nesne aşağıdaki alanı içerir:

    • display_polygon

    RFC 7946 biçimi kullanılarak, bina tarafından kaplanan yeryüzünün yüzey alanını yaklaşık olarak belirten poligonun GeoJSON kodlaması

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

  • location

    Girişin enlem/boylam koordinatları.

  • building_place_id

    Bu girişi içeren buildings[] binasının yer kimliği. Bu sayede, hangi binalarda hangi girişlerin olduğunu belirleyebilirsiniz. Bu giriş, buildings[] dizinindeki i konumundaki binaya karşılık gelir. buildings[i].place_id, bu girişin building_place_id değerine eşittir. Not: Bu değer, coğrafi kodlama sonucu binanın kendisi için değilse coğrafi kodlama sonucunun yer kimliğinden farklıdır. Bu parametre her zaman doldurulmaz.

  • entrance_tags[]

    Girişin özelliklerini açıklayan bir giriş etiketleri dizisi. Aşağıdaki değer desteklenir:

    • "PREFERRED"

      Bu girişin, döndürülen yere fiziksel erişim sağlama olasılığının yüksek olduğunu gösterir. Bir yerin birden fazla tercih edilen girişi olabilir. Bir giriş bu etikete sahip değilse girişin fiziksel olarak aynı binada olduğu ancak mekana erişim sağlamadığı anlamına gelir.

      Örneğin, döndürülen yer bir alışveriş merkezindeki bir restoransa "PREFERRED" girişler, restoranın kendi girişleri olur. Döndürülen diğer girişler ise binanın diğer girişleri (ör. alışveriş merkezindeki diğer restoranların girişleri) olur.

      Döndürülen yerin kendisi bir binaysa "PREFERRED" girişleri, binanın "ana" kısmına giden girişler olur. Örneğin, bir alışveriş merkezinde "PREFERRED" girişleri, ana fuaye alanına erişime izin veren girişlerdir. Ancak bir giriş yalnızca binanın yan tarafındaki bir mağazaya erişim sağlıyorsa bu giriş "PREFERRED" girişi olmaz.

Aşağıdaki resimde, yukarıdaki örnek istek için döndürülen bina ana hatlarının ve girişlerin görsel temsili gösterilmektedir.

Bir binanın ana hatları ve iki girişi haritada gösteriliyor. TERCİH EDİLEN giriş, diğer girişten daha büyük bir simgeyle oluşturulur.

Yukarıdaki örnek isteğe verilen yanıtta iki giriş ve ana hatları olan tek bir bina gösteriliyor. Her girişin building_place_id değerinin, binanın place_id değeriyle eşleştiğini unutmayın:

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

Binaların ana hatlarını haritada gösterme

JavaScript API, RFC 7946 biçimindeki Poligonlar ve Çoklu Poligonlar'ın görüntülenmesi için yerleşik desteğe sahiptir . Bu işlemi şu şekilde yaparsınız:

  1. Çokgen verilerini kullanarak bir özellik nesnesi oluşturun.
  2. Çokgene 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 örnekte, haritada bina ana hatlarının nasıl gösterileceği açıklanmaktadır:

//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ümlerindeki örnek yanıtta Coğrafi Kodlama API'si tarafından döndürülen bina ana hattı haritada aşağıdaki gibi oluşturulur:

Haritada oluşturulan bina ana hattı

Birden fazla bina veya bina ana hattı içeren yanıtları işleme

Aşağıdaki durumlarla da karşılaşabilirsiniz ancak yukarıdaki örnek kod bu durumlarda da çalışır:

  1. Birden fazla poligonu temsil eden tek bir building_outlines nesnesi.
  2. buildings[] dizisinde birden fazla bina içeren bir yanıt.

Örneğin, ChIJGxgH9QBVHBYRl13JmZ0BFgo yer kimliğinin yanıtı, buildings[] dizisinde iki bina 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 kodu örneğini kullanarak haritada her iki bina ana hattını da oluşturabiliriz:

Haritada iki bina ana hattı gösteriliyor

Geri bildirim

Bu, deneysel bir özelliktir. Geri bildirimlerinizi geocoding-feedback-channel@google.com adresine gönderebilirsiniz.