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ığı yer yüzölçümü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
Tek bir istekle tek bir yer için ana hat poligonları döndürmek üzere bu hizmeti kullanabilirsiniz. Bu, Birleşik Krallık, Londra gibi şehir düzeyinde bir coğrafi kodlama isteği için söz konusu bölgedeki tüm bina ana hatlarının döndürülmediğ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. 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ı |
---|---|
|
|
|
|
|
|
|
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ışı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 alanları içeren 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[]
Binayla ilişkili bir dizi ana hat. 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:
- Poligon verilerini kullanarak bir özellik nesnesi oluşturun.
- Çokgene bir 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, bir binanın ana hatlarının haritada nasıl gösterileceği gösterilmektedir:
//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 dokümanın ö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:
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:
- Birden fazla bina ana hattı içeren bir yanıt.
- 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:
Geri bildirim
Bu, deneysel bir özelliktir. Geri bildirimlerinizi buildings-in-geocoding-feedback-channel@google.com adresine gönderebilirsiniz.