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ı |
---|---|
|
|
|
|
|
|
|
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[]
dizinindekii
konumundaki binaya karşılık gelir.buildings[i].place_id
, bu girişinbuilding_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.
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:
- Çokgen verilerini kullanarak bir özellik nesnesi oluşturun.
- Çokgene stil uygulayın.
- Ö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:
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:
- Birden fazla poligonu temsil eden tek bir
building_outlines
nesnesi. 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:
Geri bildirim
Bu, deneysel bir özelliktir. Geri bildirimlerinizi geocoding-feedback-channel@google.com adresine gönderebilirsiniz.