Coğrafi kodlama terimi genellikle, insanlar tarafından okunabilen bir adresin haritadaki bir konuma dönüştürülmesini ifade eder. Bunun tam tersi olan, haritadaki bir konumu insanların okuyabileceği bir adrese dönüştürme işlemine ise tersine coğrafi kodlama denir.
Tersine coğrafi kodlama istekleri
Gerekli parametreler
latlng: En yakın, okunabilir adresi istediğiniz konumu belirten enlem ve boylam koordinatları.key: Uygulamanızın API anahtarı. Bu anahtar, kota yönetimi amacıyla uygulamanızı tanımlar. Anahtar almayı öğrenin.
İsteğe bağlı parametreler
Tersine coğrafi kodlama isteğine ekleyebileceğiniz isteğe bağlı parametreler şunlardır:
language: Sonuçların döndürüleceği dil.- Desteklenen dillerin listesini inceleyin. Google, desteklenen dilleri sık sık güncellediğinden bu liste kapsamlı olmayabilir.
languagesağlanmazsa coğrafi kodlayıcı,Accept-Languagebaşlığında belirtilen tercih edilen dili veya isteğin gönderildiği alanın ana dilini kullanmaya çalışır.- Coğrafi kodlayıcı, hem kullanıcı hem de yerel halk tarafından okunabilen bir açık adres sağlamak için elinden geleni yapar. Bu amaca ulaşmak için açık adresleri yerel dilde döndürür. Gerekirse tercih edilen dili dikkate alarak kullanıcı tarafından okunabilir bir alfabeye dönüştürür. Diğer tüm adresler tercih edilen dilde döndürülür. Adres bileşenlerinin tümü, ilk bileşenden seçilen dilde döndürülür.
- Tercih edilen dilde bir ad yoksa coğrafi kodlayıcı en yakın eşleşmeyi kullanır.
region: İki karakterli bir ccTLD ("üst düzey alan") değeri olarak belirtilen bölge kodu. Parametre, geçerli yasaya göre sonuçları da etkileyebilir.result_type: Bir veya daha fazla adres türünün dikey çizgiyle (|) ayrılmış filtresi. Parametre birden fazla adres türü içeriyorsa API, türlerden herhangi biriyle eşleşen tüm adresleri döndürür. İşlemeyle ilgili bir not:result_typeparametresi, aramayı belirtilen adres türleriyle kısıtlamaz. Bunun yerine,result_typearama sonrası filtre görevi görür: API, belirtilenlatlngiçin tüm sonuçları getirir, ardından belirtilen adres türleriyle eşleşmeyen sonuçları siler. Aşağıdaki değerler desteklenir:Adres türleri ve adres bileşeni türleri
Yanıttaki
GeocodeResultgövdesinde bulunantypesdizisi, adres türünü gösterir. Adres türlerine örnek olarak açık adres, ülke veya siyasi bir varlık verilebilir.GeocodeResultgövdesininAddressComponentsalanındakitypesdizisi, adresin her bir bölümünün türünü gösterir. Bina numarası veya ülke buna örnek olarak verilebilir.Adreslerin birden fazla türü olabilir. Türler "etiket" olarak kabul edilebilir. Örneğin, birçok şehir
politicalvelocalitytürleriyle etiketlenir.Aşağıdaki türler desteklenir ve hem adres türü hem de adres bileşeni türü dizilerinde döndürülür:
Adres Türü Açıklama street_addressTam açık adres. routeAdlandırılmış bir rota (ör. "US 101"). intersectionGenellikle iki ana yolun kesiştiği büyük bir kavşak. politicalSiyasi tüzel kişi Genellikle bu tür, bir sivil idarenin poligonunu gösterir. countryUlusal siyasi varlıktır ve genellikle Coğrafi Kodlayıcı tarafından döndürülen en yüksek düzeydeki türdür. administrative_area_level_1Ülke düzeyinin altındaki birinci dereceden idari bölge. Amerika Birleşik Devletleri'nde bu idari düzeyler eyaletlerdir. Bu idari düzeyler bazı ülkelerde kullanılmaz. Çoğu durumda administrative_area_level_1kısa adları, ISO 3166-2 alt bölümleri ve yaygın olarak kullanılan diğer listelerle büyük ölçüde eşleşir. Ancak coğrafi kodlama sonuçlarımız çeşitli sinyallere ve konum verilerine dayandığından bu durum garanti edilmez.administrative_area_level_2Ülke düzeyinin altındaki ikinci dereceden idari bölge. Amerika Birleşik Devletleri'nde bu idari düzeyler ilçelerdir. Bu idari düzeyler bazı ülkelerde kullanılmaz. administrative_area_level_3Ülke düzeyinin altındaki üçüncü düzey idari bölge. Bu tür, küçük bir idari bölgeyi gösterir. Bu idari düzeyler bazı ülkelerde kullanılmaz. administrative_area_level_4Ülke düzeyinin altındaki dördüncü düzey idari bölge. Bu tür, küçük bir idari bölgeyi gösterir. Bu idari düzeyler bazı ülkelerde kullanılmaz. administrative_area_level_5Ülke düzeyinin altındaki beşinci düzey idari bölge. Bu tür, küçük bir idari bölgeyi gösterir. Bu idari düzeyler bazı ülkelerde kullanılmaz. administrative_area_level_6Ülke düzeyinin altındaki altıncı düzey idari bölge. Bu tür, küçük bir idari bölgeyi gösterir. Bu idari düzeyler bazı ülkelerde kullanılmaz. administrative_area_level_7Ülke düzeyinin altındaki yedinci düzey idari bölge. Bu tür, küçük bir idari bölgeyi gösterir. Bu idari düzeyler bazı ülkelerde kullanılmaz. colloquial_areaVarlığın yaygın olarak kullanılan alternatif adı. localityTüzel kişiliğe sahip bir şehir veya kasaba siyasi kuruluşu. sublocalityBir yerleşim yerinin altındaki birinci dereceden idari bölge. Bazı konumlarda ek türlerden biri ( sublocality_level_1-sublocality_level_5) gösterilebilir. Her alt idari bölge düzeyi bir sivil tüzel kişidir. Daha büyük sayılar daha küçük bir coğrafi alanı gösterir.neighborhoodAdlandırılmış bir mahalle. premiseAdlandırılmış bir konum. Genellikle bir bina veya ortak adı olan bir bina grubudur. subpremiseTesis düzeyinin altında, adreslenebilir bir varlık (ör. apartman dairesi, birim veya süit). plus_codeEnlem ve boylamdan türetilen, kodlanmış bir konum referansı. Plus Kodlar, açık adreslerin bulunmadığı yerlerde (binaların numaralandırılmadığı veya sokakların adlandırılmadığı yerler) açık adreslerin yerine kullanılabilir. Ayrıntılar için https://plus.codes adresini ziyaret edin. postal_codeÜlke içinde posta göndermek için kullanılan posta kodu. natural_featureBelirgin bir doğal özellik. airportHavaalanı. parkAdlandırılmış bir park. point_of_interestAdlandırılmış önemli yer. Genellikle bu "ÖY"ler, "Empire State Binası" veya "Eyfel Kulesi" gibi başka bir kategoriye kolayca uymayan önemli yerel öğelerdir. Boş bir tür listesi, belirli adres bileşeni için bilinen bir tür olmadığını gösterir (örneğin, Fransa'da Lieu-dit).
location_type: Bir veya daha fazla konum türünün dikey çizgiyle (|) ayrılmış filtresi. Parametre birden fazla konum türü içeriyorsa API, türlerden herhangi biriyle eşleşen tüm adresleri döndürür. İşleme hakkında bir not:location_typeparametresi, aramayı belirtilen konum türleriyle sınırlamaz. Bunun yerinelocation_type, arama sonrası filtre işlevi görür: API, belirtilenlatlngiçin tüm sonuçları getirir ve ardından belirtilen konum türleriyle eşleşmeyen sonuçları siler. Aşağıdaki değerler desteklenir:"ROOFTOP", yalnızca Google'ın açık adres düzeyinde doğru konum bilgisine sahip olduğu adresleri döndürür."RANGE_INTERPOLATED", yalnızca iki kesin nokta (ör. kavşaklar) arasında enterpolasyonla hesaplanan bir yaklaşık değeri (genellikle bir yol üzerinde) yansıtan adresleri döndürür. Ara değerlerle hesaplanan bir aralık, genellikle bir açık adres için çatı coğrafi kodlarının kullanılamadığını gösterir."GEOMETRIC_CENTER", yalnızca bir konumun geometrik merkezlerini (ör. sokak gibi bir çoklu çizgi veya bölge gibi bir poligon) döndürür."APPROXIMATE", yalnızca yaklaşık olarak tanımlanan adresleri döndürür.
extra_computations: Yanıtta aşağıdaki ek özellikleri belirtmek için bu parametreyi kullanın:ADDRESS_DESCRIPTORS: Daha fazla bilgi için adres tanımlayıcıları bölümüne bakın.BUILDING_AND_ENTRANCES: Daha fazla bilgi için girişler ve bina ana hatları bölümüne bakın.
extra_computationsparametresini ekleyin. Örneğin:extra_computations=ADDRESS_DESCRIPTORS&extra_computations=BUILDING_AND_ENTRANCES
Hem result_type hem de location_type filtreleri mevcutsa API yalnızca hem result_type hem de location_type değerleriyle eşleşen sonuçları döndürür. Filtre değerlerinden hiçbiri kabul edilebilir değilse API, ZERO_RESULTS değerini döndürür.
Tersine coğrafi kodlama örneği
Aşağıdaki sorgu, Brooklyn'deki bir konumun enlem/boylam değerini içerir:
https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=YOUR_API_KEY
Yukarıdaki sorgu aşağıdaki sonucu döndürür:
{
"results" : [
{
"address_components" : [
{
"long_name" : "277",
"short_name" : "277",
"types" : [ "street_number" ]
},
{
"long_name" : "Bedford Avenue",
"short_name" : "Bedford Ave",
"types" : [ "route" ]
},
{
"long_name" : "Williamsburg",
"short_name" : "Williamsburg",
"types" : [ "neighborhood", "political" ]
},
{
"long_name" : "Brooklyn",
"short_name" : "Brooklyn",
"types" : [ "sublocality", "political" ]
},
{
"long_name" : "Kings",
"short_name" : "Kings",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "New York",
"short_name" : "NY",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "United States",
"short_name" : "US",
"types" : [ "country", "political" ]
},
{
"long_name" : "11211",
"short_name" : "11211",
"types" : [ "postal_code" ]
}
],
"formatted_address" : "277 Bedford Avenue, Brooklyn, NY 11211, USA",
"geometry" : {
"location" : {
"lat" : 40.714232,
"lng" : -73.9612889
},
"location_type" : "ROOFTOP",
"viewport" : {
"northeast" : {
"lat" : 40.7155809802915,
"lng" : -73.9599399197085
},
"southwest" : {
"lat" : 40.7128830197085,
"lng" : -73.96263788029151
}
}
},
"place_id" : "ChIJd8BlQ2BZwokRAFUEcm_qrcA",
"types" : [ "street_address" ]
},
... Additional <code>results[]</code> ...
Tersine coğrafi kodlayıcının birden fazla sonuç döndürdüğünü unutmayın. "formatted_address" sonuçları yalnızca posta adresleri değil, bir konumun coğrafi olarak adlandırılmasının herhangi bir yoludur. Örneğin, Chicago şehrindeki bir noktanın coğrafi kodu oluşturulurken coğrafi kodu oluşturulan nokta açık adres, şehir (Chicago), eyalet (Illinois) veya ülke (ABD) olarak gösterilebilir. Bunların tümü, coğrafi kodlayıcı için "adres" niteliğindedir. Tersine coğrafi kodlayıcı, bu türlerden herhangi birini geçerli sonuç olarak döndürür.
Tersine coğrafi kodlayıcı; siyasi birimleri (ülkeler, iller, şehirler ve mahalleler), açık adresleri ve posta kodlarını eşleştirir.
Önceki sorgu tarafından döndürülen formatted_address değerlerinin tam listesi aşağıda gösterilmiştir.
{
"plus_code" : {
"compound_code" : "P27Q+MCM New York, NY, USA",
"global_code" : "87G8P27Q+MCM"
},
"results" : [
{
"formatted_address" : "277 Bedford Ave, Brooklyn, NY 11211, USA",
...
"types" : [ "street_address" ]
},
{
"formatted_address" : "279 Bedford Ave, Brooklyn, NY 11211, USA",
...
"types" : [ "premise" ]
},
{
"formatted_address" : "277 Bedford Ave, Brooklyn, NY 11211, USA",
...
"types" : [ "establishment", "point_of_interest" ]
},
{
"formatted_address" : "291-275 Bedford Ave, Brooklyn, NY 11211, USA",
...
"types" : [ "route" ]
},
{
"formatted_address" : "P27Q+MC New York, NY, USA",
...
"types" : [ "plus_code" ]
},
{
"formatted_address" : "South Williamsburg, Brooklyn, NY, USA",
...
"types" : [ "neighborhood", "political" ]
},
{
"formatted_address" : "Brooklyn, NY 11211, USA",
...
"types" : [ "postal_code" ]
},
{
"formatted_address" : "Williamsburg, Brooklyn, NY, USA",
...
"types" : [ "neighborhood", "political" ]
},
{
"formatted_address" : "Kings County, Brooklyn, NY, USA",
...
"types" : [ "administrative_area_level_2", "political" ]
},
{
"formatted_address" : "Brooklyn, NY, USA",
...
"types" : [ "political", "sublocality", "sublocality_level_1" ]
},
{
"formatted_address" : "New York, NY, USA",
...
"types" : [ "locality", "political" ]
},
{
"formatted_address" : "New York, USA",
...
"types" : [ "administrative_area_level_1", "political" ]
},
{
"formatted_address" : "United States",
...
"types" : [ "country", "political" ]
}
],
"status" : "OK"
}
Bu API, en spesifik açık adresten mahalle, şehir, ilçe ve eyalet gibi daha az spesifik idari birimlere kadar farklı adres türleri döndürür. Daha kesin olan adres genellikle en belirgin sonuçtur. Bu örnekte de durum böyledir. Belirli bir adres türünü eşleştirmek istiyorsanız aşağıdaki sonuçları türe göre kısıtlama bölümüne bakın. Bu nedenle, sonuçların birbirine göre konumu değişebilir.
Türe göre filtrelenmiş tersine coğrafi kodlama
Aşağıdaki örnekte, döndürülen adresler yalnızca konum türü ROOFTOP ve adres türü street_address olanları içerecek şekilde filtrelenmektedir.
https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452
&location_type=ROOFTOP&result_type=street_address&key=YOUR_API_KEY
Not: Bu filtreler yalnızca tersine coğrafi kodlama için geçerlidir.
Tersine coğrafi kodlama yanıtları
Tersine coğrafi kodlama yanıtının biçimi, coğrafi kodlama yanıtıyla aynıdır. Coğrafi kodlama yanıtları bölümüne bakın. Tersine coğrafi kodlama yanıtında olası durum kodları aşağıda verilmiştir.
Tersine coğrafi kodlama durum kodları
Coğrafi kodlama yanıt nesnesindeki "status" alanı, isteğin durumunu içerir ve tersine coğrafi kodlamanın neden çalışmadığını bulmanıza yardımcı olacak hata ayıklama bilgileri içerebilir. "status"
alanı aşağıdaki değerleri içerebilir:
"OK", hata oluşmadığını ve en az bir adresin döndürüldüğünü gösterir."ZERO_RESULTS", tersine coğrafi kodlamanın başarılı olduğunu ancak sonuç döndürmediğini gösterir. Bu durum, coğrafi kodlayıcıya uzak bir konumdalatlngiletildiğinde ortaya çıkabilir."OVER_QUERY_LIMIT", kotanızı aştığınızı gösterir."REQUEST_DENIED", isteğin reddedildiğini gösterir. Bunun nedeni, isteğinresult_typeveyalocation_typeparametresi içermesi ancak API anahtarı içermemesi olabilir."INVALID_REQUEST"genellikle aşağıdakilerden birini gösterir:- Sorgu (
address,componentsveyalatlng) eksik. - Geçersiz bir
result_typeveyalocation_typegirildi.
- Sorgu (
"UNKNOWN_ERROR", isteğin bir sunucu hatası nedeniyle işlenemediğini gösterir. Tekrar denerseniz istek başarılı olabilir.
Tersine coğrafi kodlama Plus Code'ları
Geocoding yanıtındaki plus_code alanı, sorgulanan enlem ve boylama en yakın Plus Code'u içerir.
Ayrıca, JSON sonuçları dizisi çoğu durumda plus_code türünde tam bir coğrafi kodlama sonucu ve Plus Code içeren bir adres içerir. Kodu çözülen Plus Code ile istek noktası arasındaki mesafenin 10 metreden az olduğu garanti edilir.