Coğrafi Kodlama Hizmeti

Not: Sunucu tarafı kitaplıkları
Avrupa Ekonomik Alanı (AEA) geliştiricileri

Genel Bakış

Coğrafi kodlama, adresleri (ör. "1600 Amphitheatre Parkway, Mountain View, CA") işaretçi yerleştirmek veya haritayı konumlandırmak için kullanabileceğiniz coğrafi koordinatlara (ör. enlem 37.423021 ve boylam -122.083739) dönüştürme işlemidir.

Tersine coğrafi kodlama, coğrafi koordinatları kullanıcı tarafından okunabilir bir adrese dönüştürme işlemidir (bkz. Tersine coğrafi kodlama (Adres Arama)).

Belirli bir yer kimliğinin adresini bulmak için coğrafi kodlayıcıyı da kullanabilirsiniz.

Maps JavaScript API, kullanıcı girişinden dinamik olarak coğrafi kodlama ve tersine coğrafi kodlama için bir Geocoder sınıfı sağlar. Bunun yerine statik ve bilinen adresleri coğrafi kodlamak istiyorsanız Coğrafi Kodlama web hizmeti'ne bakın.

Başlayın

Maps JavaScript API'deki Coğrafi Kodlama hizmetini kullanmadan önce, Google Cloud Console'da Coğrafi Kodlama API'nin Maps JavaScript API için ayarladığınız projede etkinleştirildiğinden emin olun.

Etkinleştirilen API'lerinizin listesini görüntülemek için:

  1. Google Cloud Console'a gidin.
  2. Proje seç düğmesini tıklayın, ardından Maps JavaScript API için ayarladığınız projeyi seçip 'ı tıklayın.
  3. Kontrol panelindeki API listesinde Geocoding API'yi bulun.
  4. Listede API'yi görüyorsanız hazırsınız demektir. API listelenmemişse : API'yi etkinleştirin:
    1. Kitaplık sekmesini görüntülemek için sayfanın üst kısmında API'Yİ ETKİNLEŞTİR'i seçin. Alternatif olarak, sol taraftaki menüden Kitaplık'ı seçin.
    2. Geocoding API'yi arayın ve sonuç listesinden seçin.
    3. ETKİNLEŞTİR'i seçin. İşlem tamamlandığında Kontrol Paneli'ndeki API listesinde Geocoding API görünür.

Fiyatlandırma ve politikalar

Fiyatlandırma

JavaScript Coğrafi Kodlama hizmetinin fiyatlandırma ve kullanım politikaları hakkında bilgi edinmek için Coğrafi Kodlama API'si ile ilgili Kullanım ve Faturalandırma bölümüne bakın.

Politikalar

Coğrafi Kodlama hizmetini kullanımınız Coğrafi Kodlama API'si Politikaları'na uygun olmalıdır.

Coğrafi Kodlama İstekleri

Google Haritalar API'sinin harici bir sunucuya çağrı yapması gerektiğinden Coğrafi Kodlama hizmetine erişim eşzamansızdır. Bu nedenle, istek tamamlandığında yürütülecek bir geri çağırma yöntemi iletmeniz gerekir. Bu geri çağırma yöntemi, sonuçları işler. Coğrafi kodlayıcının birden fazla sonuç döndürebileceğini unutmayın.

google.maps.Geocoder oluşturucu nesnesini kullanarak kodunuzda Google Haritalar API coğrafi kodlama hizmetine erişirsiniz. Geocoder.geocode() yöntemi, coğrafi kodlama hizmetine bir istek başlatır ve bu hizmete, giriş terimlerini içeren bir GeocoderRequest nesne değişmezi ve yanıt alındığında yürütülecek bir geri çağırma yöntemi iletir.

GeocoderRequest nesne değişmezi aşağıdaki alanları içerir:

{
 address: string,
 location: LatLng,
 placeId: string,
 bounds: LatLngBounds,
 componentRestrictions: GeocoderComponentRestrictions,
 region: string
}

Zorunlu parametreler: Aşağıdaki alanlardan birini ve yalnızca birini sağlamanız gerekir:

  • address: Coğrafi kodunu belirlemek istediğiniz adres.
         veya
    location: En yakın, okunabilir adresi almak istediğiniz LatLng (veya LatLngLiteral). Coğrafi kodlayıcı, tersine coğrafi kodlama gerçekleştirir. Daha fazla bilgi için Ters Coğrafi Kodlama bölümüne bakın.
         veya
    placeId — En yakın, okunabilir adresi almak istediğiniz yerin yer kimliği. Yer kimliği için adres alma hakkında daha fazla bilgi edinin.

İsteğe bağlı parametreler:

  • bounds — Coğrafi kod sonuçlarının daha belirgin şekilde önyargılı hale getirileceği LatLngBounds. bounds parametresi, sonuçları tamamen kısıtlamaz, yalnızca etkiler. Aşağıda görüntü alanı önyargısı hakkında daha fazla bilgi bulabilirsiniz.
  • componentRestrictions: Sonuçları belirli bir alanla sınırlamak için kullanılır. Aşağıda bileşen filtreleme hakkında daha fazla bilgi verilmiştir.
  • region — Bölge kodu, iki karakterli (sayısal olmayan) bir Unicode bölge alt etiketi olarak belirtilir. Çoğu durumda bu etiketler, bilinen ccTLD ("üst düzey alan") iki karakterli değerleriyle doğrudan eşlenir. region parametresi, sonuçları tamamen kısıtlamaz, yalnızca coğrafi kodlayıcıdan gelen sonuçları etkiler. Aşağıda bölge kodu önyargısı hakkında daha fazla bilgi verilmiştir.
  • extraComputations: Bu parametre için izin verilen tek değer ADDRESS_DESCRIPTORS'dir. Daha fazla bilgi için adres tanımlayıcıları bölümüne bakın.
  • fulfillOnZeroResults — Yanıttaki ZERO_RESULT durumuyla ilgili sözü yerine getirin. Coğrafi kodlama sonucu olmasa bile yanıt düzeyinde ek alanlar döndürülebildiği için bu durum istenebilir. Daha fazla bilgi için Sıfır Sonuçta Karşılama başlıklı makaleyi inceleyin.

Coğrafi Kodlama Yanıtları

Coğrafi kodlama hizmeti, coğrafi kodlayıcının sonuçları alındıktan sonra yürütülecek bir geri çağırma yöntemi gerektirir. Bu geri çağırma, results ve status kodunu tutmak için iki parametre geçirmelidir.

Coğrafi Kodlama Sonuçları

GeocoderResult nesnesi tek bir coğrafi kodlama sonucunu temsil eder. Bir coğrafi kod isteği birden fazla sonuç nesnesi döndürebilir:

results[]: {
 types[]: string,
 formatted_address: string,
 address_components[]: {
   short_name: string,
   long_name: string,
   postcode_localities[]: string,
   types[]: string
 },
 partial_match: boolean,
 place_id: string,
 postcode_localities[]: string,
 geometry: {
   location: LatLng,
   location_type: GeocoderLocationType
   viewport: LatLngBounds,
   bounds: LatLngBounds
 }
}

Bu alanlar aşağıda açıklanmıştır:

  • types[], döndürülen sonucun adres türünü belirten bir dizidir. Bu dizi, sonuçta döndürülen özellik türünü tanımlayan sıfır veya daha fazla etiket kümesi içerir. Örneğin, "Chicago"nun coğrafi kodu, "Chicago"nun bir şehir olduğunu belirten "locality" ve siyasi bir varlık olduğunu belirten "political" değerini döndürür. Adres türleri ve adres bileşeni türleri hakkında daha fazla bilgiyi aşağıda bulabilirsiniz.
  • formatted_address, bu konumun kullanıcıların okuyabileceği adresini içeren bir dizedir.

    Bu adres genellikle posta adresine eşdeğerdir. Birleşik Krallık gibi bazı ülkelerde, lisanslama kısıtlamaları nedeniyle gerçek posta adreslerinin dağıtımına izin verilmediğini unutmayın.

    Biçimlendirilmiş adres, mantıksal olarak bir veya daha fazla adres bileşeninden oluşur. Örneğin, "111 8th Avenue, New York, NY" adresi şu bileşenlerden oluşur: "111" (sokak numarası), "8th Avenue" (yol), "New York" (şehir) ve "NY" (ABD eyaleti).

    Biçimlendirilmiş adresi programatik olarak ayrıştırmayın. Bunun yerine, API yanıtının biçimlendirilmiş adres alanına ek olarak içerdiği bağımsız adres bileşenlerini kullanmanız gerekir.

  • address_components[], bu adres için geçerli olan ayrı bileşenleri içeren bir dizidir.

    Her adres bileşeni genellikle aşağıdaki alanları içerir:

    • types[], adres bileşeninin türünü belirten bir dizidir. Desteklenen türlerin listesine bakın.
    • long_name, adres bileşeninin Geocoder tarafından döndürülen tam metin açıklaması veya adıdır.
    • short_name, varsa adres bileşeninin kısaltılmış metin adıdır. Örneğin, Alaska eyaletinin adres bileşeninde 2 harfli posta kısaltması kullanılarak long_name "Alaska" ve short_name "AK" olabilir.

    address_components[] dizisiyle ilgili aşağıdaki bilgilere dikkat edin:

    • Adres bileşenleri dizisi, formatted_address değerinden daha fazla bileşen içerebilir.
    • Dizi, formatted_address içinde yer alanlar dışında, adres içeren tüm siyasi varlıkları içermeyebilir. Belirli bir adresi içeren tüm siyasi varlıkları almak için, isteğe parametre olarak adresin enlem/boylamını ileterek ters coğrafi kodlama kullanmanız gerekir.
    • Yanıtın biçiminin istekler arasında aynı kalacağı garanti edilmez. Özellikle address_components sayısı, istenen adrese göre değişir ve aynı adres için zaman içinde değişebilir. Bir bileşen, dizideki konumunu değiştirebilir. Bileşenin türü değişebilir. Belirli bir bileşen sonraki yanıtlarda eksik olabilir.

    Adres türleri ve adres bileşeni türleri hakkında daha fazla bilgiyi aşağıda bulabilirsiniz.

  • partial_match, kodlayıcının istenen adresin bir kısmını eşleştirebilmesine rağmen orijinal istek için tam eşleşme döndürmediğini gösterir. Yazım hataları ve/veya eksik adres olup olmadığını kontrol etmek için orijinal isteği inceleyebilirsiniz.

    Kısmi eşleşmeler en sık, istekte ilettiğiniz yerleşim biriminde bulunmayan sokak adresleri için gerçekleşir. Bir istek aynı yerleşim yerindeki iki veya daha fazla konumla eşleştiğinde de kısmi eşleşmeler döndürülebilir. Örneğin, "Hillpar St, Bristol, UK" hem Henry Street hem de Henrietta Street için kısmi eşleşme döndürür. Bir istekte yanlış yazılmış bir adres bileşeni varsa coğrafi kodlama hizmetinin alternatif bir adres önerebileceğini unutmayın. Bu şekilde tetiklenen öneriler de kısmi eşleşme olarak işaretlenir.

  • place_id, bir yerin benzersiz tanımlayıcısıdır ve diğer Google API'leriyle birlikte kullanılabilir. Örneğin, yerel bir işletmenin telefon numarası, çalışma saatleri ve kullanıcı yorumları gibi ayrıntılarını almak için place_id kitaplığını Google Places API ile birlikte kullanabilirsiniz. Yer kimliğine genel bakış başlıklı makaleyi inceleyin.
  • postcode_localities[], bir posta kodunda bulunan tüm yerleşim yerlerini belirten bir dizidir ve yalnızca sonuç, birden fazla yerleşim yeri içeren bir posta kodu olduğunda bulunur.
  • geometry aşağıdaki bilgileri içerir:

    • location,coğrafi olarak kodlanmış enlem ve boylam değerini içerir. Bu konumu biçimlendirilmiş bir dize olarak değil, LatLng nesnesi olarak döndürdüğümüzü unutmayın.
    • location_type, belirtilen konumla ilgili ek veriler depolar. Aşağıdaki değerler desteklenir:
      • ROOFTOP, döndürülen sonucun kesin bir coğrafi kodu yansıttığını gösterir.
      • RANGE_INTERPOLATED Döndürülen sonucun, iki kesin nokta (ör. kavşaklar) arasında enterpolasyonla hesaplanmış bir yaklaşıma (genellikle bir yol üzerinde) karşılık geldiğini gösterir. Çatı coğrafi kodları bir sokak adresi için kullanılamadığında genellikle enterpolasyonlu sonuçlar döndürülür.
      • GEOMETRIC_CENTER Döndürülen sonucun, çoklu çizgi (ör. sokak) veya çokgen (bölge) gibi bir sonucun geometrik merkezi olduğunu gösterir.
      • APPROXIMATE Döndürülen sonucun yaklaşık olduğunu gösterir.

    • viewport, döndürülen sonuç için önerilen görüntü alanını depolar.
    • bounds (isteğe bağlı olarak döndürülür) döndürülen sonucu tamamen içerebilen LatLngBounds değerini depolar. Bu sınırların önerilen görünüm penceresiyle eşleşmeyebileceğini unutmayın. (Örneğin, San Francisco teknik olarak şehrin bir parçası olan ancak görünüm alanında döndürülmemesi gereken Farallon Adaları'nı içerir.)

Adresler, tarayıcının tercih edilen dil ayarı veya API JavaScript'i language parametresi kullanılarak yüklenirken belirtilen dil kullanılarak Geocoder tarafından döndürülür. (Daha fazla bilgi için Yerelleştirme bölümünü inceleyin.)

Adres türleri ve adres bileşeni türleri

Yanıtın GeocoderResult bölümündeki types[] dizisi, adres türünü gösterir. Adres türlerine örnek olarak açık adres, ülke veya siyasi birim verilebilir. GeocoderAddressComponent içindeki types dizisi, adresin her bir bölümünün türünü gösterir. Örneğin, bina numarası veya ülke.

Adresler birden fazla türde olabilir. Türler "etiket" olarak kabul edilebilir. Örneğin, birçok şehir political ve locality tü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_address Açık adres.
route Adlandırılmış bir rota (ör. "US 101").
intersection Genellikle iki ana yolun kesiştiği büyük bir kavşak.
political Siyasi bir tüzel kişi Genellikle bu tür, bir sivil idareye ait poligonu gösterir.
country Ulusal siyasi varlık ve genellikle Geocoder tarafından döndürülen en yüksek sıralı türdür.
administrative_area_level_1 Ülke düzeyinin altındaki birinci dereceden idari bölgeler. Amerika Birleşik Devletleri'nde bu idari düzeyler eyaletlerdir. Bu idari düzeyler bazı ülkelerde kullanılmaz. Çoğu durumda, administrative_area_level_1 kısa adları ISO 3166-2 alt bölümleri ve yaygın olarak kullanılan diğer listelerle yakından 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 belirtir. 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 belirtir. 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 belirtir. Bu idari düzeyler bazı ülkelerde kullanılmaz.
administrative_area_level_6 Ülke düzeyinin altındaki altıncı dereceden idari bölge. Bu tür, küçük bir idari bölgeyi belirtir. 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 belirtir. Bu idari düzeyler bazı ülkelerde kullanılmaz.
colloquial_area Tüzel kişi için yaygın olarak kullanılan alternatif ad.
locality Tüzel kişiliğe sahip bir şehir veya kasaba siyasi tüzel kişiliği.
sublocality Bir yerleşim biriminin altındaki birinci düzey idari bölge. Bazı konumlar için sublocality_level_1 ile sublocality_level_5 arasındaki ek türlerden biri gösterilebilir. Her alt yerleşim birimi düzeyi, sivil bir varlıktır. Daha büyük sayılar, daha küçük bir coğrafi alanı gösterir.
neighborhood Adlandırılmış bir mahalle.
premise Adlandırılmış bir konumdur. Genellikle ortak bir adı olan bir bina veya binalar topluluğudur.
subpremise Tesis düzeyinin altında adreslenebilir bir varlık (ör. apartman, birim veya süit).
plus_code Enlem ve boylamdan elde edilen, kodlanmış bir konum referansı. Plus code'lar, sokak adreslerinin olmadığı yerlerde (binaların numaralandırılmadığı veya sokakların adlandırılmadığı yerler) sokak adreslerinin yerine kullanılabilir. Ayrıntılar için https://plus.codes adresini ziyaret edin.
postal_code Ülke içinde posta gönderiminde kullanılan posta kodu.
natural_feature Belirgin bir doğal alan.
airport Havalimanı
park Adlandırılmış bir park.
point_of_interest Adlandırılmış bir önemli yer. Bu "önemli yerler" genellikle "Empire State Binası" veya "Eyfel Kulesi" gibi başka bir kategoriye kolayca uymayan, öne çıkan yerel varlıklardır.

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).

Yukarıdakilere ek olarak, adres bileşenleri aşağıdaki türleri içerebilir.

Not: Bu liste tam kapsamlı değildir ve değişebilir.

Yukarıdakilere ek olarak, adres bileşenleri aşağıda listelenen türleri de içerebilir.

Adres Bileşeni Türü Açıklama
floor Bina adresinin bulunduğu kat.
establishment Genellikle henüz sınıflandırılmamış bir yerdir.
landmark Navigasyona yardımcı olmak için referans olarak kullanılan yakındaki bir yer.
point_of_interest Adlandırılmış bir önemli yer.
parking Otopark veya katlı otopark
post_box Belirli bir posta kutusu.
postal_town Bazı ülkelerde posta adresleri için kullanılan locality ve sublocality gibi coğrafi alanların gruplandırılması.
room Bina adresinin bulunduğu oda.
street_number Tam bina numarası.
bus_station, train_station ve transit_station Otobüs, tren veya toplu taşıma durağının konumu.

Durum Kodları

status kodu aşağıdaki değerlerden birini döndürebilir:

  • "OK", hata oluşmadığını, adresin başarıyla ayrıştırıldığını ve en az bir coğrafi kodun döndürüldüğünü gösterir.
  • "ZERO_RESULTS", coğrafi kodlamanın başarılı olduğunu ancak sonuç döndürmediğini gösterir. Bu durum, coğrafi kodlayıcıya mevcut olmayan bir address iletilirse ortaya çıkabilir.
  • "OVER_QUERY_LIMIT", kotanızı aştığınızı gösterir.
  • "REQUEST_DENIED", isteğinizin reddedildiğini gösterir. Web sayfasının coğrafi kodlayıcıyı kullanmasına izin verilmiyor.
  • "INVALID_REQUEST" genellikle sorgunun (address, components veya latlng) eksik olduğunu gösterir.
  • "UNKNOWN_ERROR", sunucu hatası nedeniyle isteğin işlenemediğini gösterir. Tekrar denerseniz istek başarılı olabilir.
  • "ERROR", isteğin zaman aşımına uğradığını veya Google sunucularıyla iletişim kurulurken bir sorun oluştuğunu gösterir. Tekrar denerseniz istek başarılı olabilir.

Bu örnekte, bir adresi coğrafi olarak kodluyoruz ve döndürülen enlem ve boylam değerlerine bir işaretçi yerleştiriyoruz. İşleyicinin anonim işlev değişmezi olarak iletildiğini unutmayın.

  var geocoder;
  var map;
  function initialize() {
    geocoder = new google.maps.Geocoder();
    var latlng = new google.maps.LatLng(-34.397, 150.644);
    var mapOptions = {
      zoom: 8,
      center: latlng
    }
    map = new google.maps.Map(document.getElementById('map'), mapOptions);
  }

  function codeAddress() {
    var address = document.getElementById('address').value;
    geocoder.geocode( { 'address': address}, function(results, status) {
      if (status == 'OK') {
        map.setCenter(results[0].geometry.location);
        var marker = new google.maps.Marker({
            map: map,
            position: results[0].geometry.location
        });
      } else {
        alert('Geocode was not successful for the following reason: ' + status);
      }
    });
  }

<body onload="initialize()">
 <div id="map" style="width: 320px; height: 480px;"></div>
  <div>
    <input id="address" type="textbox" value="Sydney, NSW">
    <input type="button" value="Encode" onclick="codeAddress()">
  </div>
</body>

Örneği görüntüleyin.

Görüntü Alanı Önyargısı

Coğrafi Kodlama Hizmeti'ne, belirli bir görüntü alanındaki (sınırlayıcı kutu olarak ifade edilir) sonuçları tercih etmesi talimatını verebilirsiniz. Bunu, bu görüntü alanının sınırlarını tanımlamak için GeocoderRequest nesne değişmezinin içinde bounds parametresini ayarlayarak yaparsınız. Önyargının yalnızca sınırlar içindeki sonuçları tercih ettiğini unutmayın. Bu sınırlar dışında daha alakalı sonuçlar varsa bunlar da dahil edilebilir.

Örneğin, "Winnetka" için bir coğrafi kod genellikle Chicago'nun bu banliyösünü döndürür:

{
  "types":["locality","political"],
  "formatted_address":"Winnetka, IL, USA",
  "address_components":[{
    "long_name":"Winnetka",
    "short_name":"Winnetka",
    "types":["locality","political"]
  },{
    "long_name":"Illinois",
    "short_name":"IL",
    "types":["administrative_area_level_1","political"]
  },{
    "long_name":"United States",
    "short_name":"US",
    "types":["country","political"]
  }],
  "geometry":{
    "location":[ -87.7417070, 42.1083080],
    "location_type":"APPROXIMATE"
  },
  "place_id": "ChIJW8Va5TnED4gRY91Ng47qy3Q"
}

Ancak, Los Angeles'taki San Fernando Vadisi için sınırlayıcı bir kutu tanımlayan bir bounds parametresi belirtmek, bu coğrafi kodun söz konusu konumdaki "Winnetka" adlı mahalleyi döndürmesine neden olur:

{
  "types":["sublocality","political"],
  "formatted_address":"Winnetka, California, USA",
  "address_components":[{
    "long_name":"Winnetka",
    "short_name":"Winnetka",
    "types":["sublocality","political"]
  },{
    "long_name":"Los Angeles",
    "short_name":"Los Angeles",
    "types":["administrative_area_level_3","political"]
  },{
    "long_name":"Los Angeles",
    "short_name":"Los Angeles",
    "types":["administrative_area_level_2","political"]
  },{
    "long_name":"California",
    "short_name":"CA",
    "types":["administrative_area_level_1","political"]
  },{
    "long_name":"United States",
    "short_name":"US",
    "types":["country","political"]
  }],
  "geometry":{
    "location": [34.213171,-118.571022],
    "location_type":"APPROXIMATE"
  },
  "place_id": "ChIJ0fd4S_KbwoAR2hRDrsr3HmQ"
}

Bölge Kodu Önyargısı

region parametresini kullanarak Coğrafi Kodlama Hizmeti'nin belirli bir bölgeye yönelik sonuçlar döndürmesini sağlayabilirsiniz. Bu parametre, iki karakterli (sayısal olmayan) Unicode bölge alt etiketi olarak belirtilen bir bölge kodu alır. Bu etiketler, doğrudan bilinen ccTLD ("üst düzey alan adı") iki karakterli değerleriyle eşlenir. Örneğin, "co.uk" alan adındaki "uk" gibi. Bazı durumlarda, region etiketi ISO-3166-1 kodlarını da destekler. Bu kodlar bazen ccTLD değerlerinden farklıdır (örneğin, "Büyük Britanya" için "GB").

region parametresini kullanırken:

  • Yalnızca bir ülke veya bölge belirtin. Birden fazla değer yok sayılır ve bu durum, isteğin başarısız olmasına neden olabilir.
  • Yalnızca iki karakterli bölge alt etiketlerini (Unicode CLDR biçimi) kullanın. Diğer tüm girişler hataya neden olur.
  • Yalnızca Google Haritalar Platformu Kapsam Ayrıntıları'nda listelenen ülke ve bölgeler desteklenir.

Coğrafi kodlama istekleri, ana Google Haritalar uygulamasının coğrafi kodlama sunduğu her alan için gönderilebilir. Önyargı oluşturmanın yalnızca belirli bir alanla ilgili sonuçları tercih ettiğini unutmayın. Bu alanın dışında daha alakalı sonuçlar varsa bunlar da dahil edilebilir.

Örneğin, "Toledo" için bir coğrafi kod, Coğrafi Kodlama Hizmeti'nin varsayılan alanı ABD olarak ayarlandığından şu sonucu döndürür:

{
  "types":["locality","political"],
  "formatted_address":"Toledo, OH, USA",
  "address_components":[{
    "long_name":"Toledo",
    "short_name":"Toledo",
    "types":["locality","political"]
  },{
    "long_name":"Ohio",
    "short_name":"OH",
    "types":["administrative_area_level_1","political"]
  },{
    "long_name":"United States",
    "short_name":"US",
    "types":["country","political"]
  }],
  "place_id": "ChIJeU4e_C2HO4gRRcM6RZ_IPHw"
}

region alanı 'es' (İspanya) olarak ayarlanmış "Toledo" coğrafi kodu, İspanya'daki şehri döndürür:

{
  "types":["locality","political"],
  "formatted_address":"Toledo, España",
  "address_components":[{
    "long_name":"Toledo",
    "short_name":"Toledo",
    "types":["locality","political"]
  },{
    "long_name":"Toledo",
    "short_name":"TO",
    "types":["administrative_area_level_2","political"]
  },{
    "long_name":"Castilla-La Mancha",
    "short_name":"CM",
    "types":["administrative_area_level_1","political"]
  },{
    "long_name":"España",
    "short_name":"ES",
    "types":["country","political"]
  }],
  "place_id": "ChIJ8f21C60Lag0R_q11auhbf8Y"
}

Bileşen Filtreleme

Bir bileşen filtresi kullanarak Coğrafi Kodlama Hizmeti'nin belirli bir alanla sınırlı adres sonuçları döndürmesini sağlayabilirsiniz. Filtreyi componentRestrictions parametresinde belirtin. Filtre değerleri, diğer coğrafi kodlama istekleriyle aynı yazım düzeltme ve kısmi eşleşme yöntemlerini destekler.

Coğrafi kod çözücü yalnızca bileşen filtrelerinin tümüyle eşleşen sonuçları döndürür. Yani filtre özelliklerini VEYA olarak değil, VE olarak değerlendirir.

Bileşenler filtresi aşağıdaki öğelerden birini veya daha fazlasını içerir:

  • route, bir rotanın uzun veya kısa adıyla eşleşir.
  • locality yerleşim birimi ve alt yerleşim birimi türleriyle eşleşir.
  • administrativeArea, tüm idari bölge düzeyleriyle eşleşir.
  • postalCode, posta kodları ve posta kodu önekleriyle eşleşir.
  • country, ülke adıyla veya iki harfli ISO 3166-1 ülke koduyla eşleşir. Not: API, ülkeleri tanımlamak için ISO standardını kullanır ve filtreleme, ülkenin ilgili ISO kodu kullanıldığında en iyi şekilde çalışır.

Aşağıdaki örnekte, country ve postalCode'ye göre filtrelemek için componentRestrictions parametresinin kullanımı gösterilmektedir:

function codeAddress() {
geocoder.geocode({
  componentRestrictions: {
    country: 'AU',
    postalCode: '2000'
  }
}, function(results, status) {
  if (status == 'OK') {
    map.setCenter(results[0].geometry.location);
    var marker = new google.maps.Marker({
      map: map,
      position: results[0].geometry.location
    });
  } else {
    window.alert('Geocode was not successful for the following reason: ' + status);
  }
});
}

Sıfır sonuçta karşılama

Tersine coğrafi kodlama için söz varsayılan olarak status=ZERO_RESULTS üzerinde bozulur. Ancak, bu durumda plus_code ve address_descriptor ek yanıt düzeyi alanları yine de doldurulabilir. fulfillOnZeroResults parametresi için doğru sağlanırsa bu durumda doldurulur. fulfillOnZeroResults parametresi için doğru değeri sağlanırsa söz bozulmaz ve bu ek alanlar varsa sözden erişilebilir.

Aşağıda, Antarktika'daki bir enlem/boylam için bu davranışa dair bir örnek verilmiştir. Ters coğrafi kodlama sonuçları olmasa da fulfillOnZeroResults=true ayarını yaparsak sözde artı kodunu yazdırabiliriz.

    function addressDescriptorReverseGeocoding() {
      var latlng = new google.maps.LatLng(-75.290330, 38.653861);
      geocoder
        .geocode({
          'location': latlng,
          'fulfillOnZeroResults': true,
        })
        .then((response) => {
          console.log(response.plus_code);
        })
        .catch((error) => {
          window.alert(`Error`);
        });
    }
  

Adres tanımlayıcıları

Adres tanımlayıcıları, önemli noktaları ve alanları kullanarak bir konumu tanımlamaya yardımcı olan ek bilgiler içerir. Özelliği keşfetmek için adres tanımlayıcıları demosuna göz atın.

Adres tanımlayıcıları, extraComputations parametresi kullanılarak etkinleştirilebilir. Yanıtınızda adres tanımlayıcıları almak için coğrafi kodlama isteğine (extra_computations=ADDRESS_DESCRIPTORS), tersine coğrafi kodlama isteğine (extra_computations=ADDRESS_DESCRIPTORS) veya yer coğrafi kodlama isteğine (extra_computations=ADDRESS_DESCRIPTORS) ekleyin.

Yerlerde coğrafi kodlama örneği

Aşağıdaki sorguda Delhi'deki bir yerin adresi yer alıyor.

function addressDescriptorPlaceIdLookup() {
  geocoder.geocode({
  geocoder.geocode({
    'placeId': 'ChIJyxAX8Bj9DDkRgBfAnBYa66Q',
    'extraComputations': ['ADDRESS_DESCRIPTORS']
    }, function(results, status) {
    if (status == 'OK') {
      console.log(results[0].address_descriptor);
    } else {
      window.alert('Geocode was not successful for the following reason: ' + status);
    }
  });
}

Tersine coğrafi kodlama örneği

Aşağıdaki sorgu, Delhi'deki bir konumun enlem/boylam değerini içerir.

    function addressDescriptorReverseGeocoding() {
      var latlng = new google.maps.LatLng(28.640964,77.235875);
      geocoder
        .geocode({
          'location': latlng,
          'extraComputations': ["ADDRESS_DESCRIPTORS"],
        })
        .then((response) => {
          console.log(response.address_descriptor);
        })
        .catch((error) => {
          window.alert(`Error`);
        });
    }
  

Adres Açıklayıcı Örneği

Bir örnek address_descriptor aşağıda verilmiştir.

  {
    "address_descriptor" : {
       "areas" : [
          {
             "containment" : "OUTSKIRTS",
             "display_name" : {
                "language_code" : "en",
                "text" : "Turkman Gate"
             },
             "place_id" : "ChIJ_7LLvyb9DDkRMKKxP9YyXgs"
          },
          {
             "containment" : "OUTSKIRTS",
             "display_name" : {
                "language_code" : "en",
                "text" : "Chandni Chowk"
             },
             "place_id" : "ChIJWcXciBr9DDkRUb4dCDykTwI"
          },
          {
             "containment" : "NEAR",
             "display_name" : {
                "language_code" : "en",
                "text" : "Katar Ganj"
             },
             "place_id" : "ChIJH3cWUyH9DDkRaw-9CjvcRvY"
          }
       ],
       "landmarks" : [
          {
             "display_name" : {
                "language_code" : "en",
                "text" : "Delite Cinema"
             },
             "straight_line_distance_meters" : 29.9306755065918,
             "place_id" : "ChIJLfiYDCT9DDkROoEa7NdupUM",
             "travel_distance_meters" : 418.7794799804688,
             "spatial_relationship" : "ACROSS_THE_ROAD",
             "types" : [ "establishment", "movie_theater", "point_of_interest" ]
          },
          {
             "display_name" : {
                "language_code" : "en",
                "text" : "YES Bank"
             },
             "straight_line_distance_meters" : 66.83731079101562,
             "place_id" : "ChIJFYHM3yb9DDkRRKGkZl2mpSQ",
             "travel_distance_meters" : 489.0340270996094,
             "spatial_relationship" : "DOWN_THE_ROAD",
             "types" : [ "bank", "establishment", "finance", "point_of_interest" ]
          },
          {
             "display_name" : {
                "language_code" : "en",
                "text" : "UCO Bank"
             },
             "straight_line_distance_meters" : 25.38849639892578,
             "place_id" : "ChIJ-c6_wCb9DDkRjIk1LeqRtGM",
             "travel_distance_meters" : 403.2246398925781,
             "spatial_relationship" : "ACROSS_THE_ROAD",
             "types" : [ "atm", "bank", "establishment", "finance", "point_of_interest" ]
          },
          {
             "display_name" : {
                "language_code" : "en",
                "text" : "Delhi By Cycle Meeting Point"
             },
             "straight_line_distance_meters" : 44.02867126464844,
             "place_id" : "ChIJNxVfkSb9DDkRJD22l-eGFdM",
             "travel_distance_meters" : 97.41281890869141,
             "spatial_relationship" : "AROUND_THE_CORNER",
             "types" : [
                "establishment",
                "point_of_interest",
                "tourist_attraction",
                "travel_agency"
             ]
          },
          {
             "display_name" : {
                "language_code" : "en",
                "text" : "Axis Bank Branch"
             },
             "straight_line_distance_meters" : 102.3495178222656,
             "place_id" : "ChIJr3uaDCT9DDkR8roHTVSn1x4",
             "travel_distance_meters" : 330.8566284179688,
             "spatial_relationship" : "DOWN_THE_ROAD",
             "types" : [ "bank", "establishment", "finance", "point_of_interest" ]
          }
       ]
    }
  }

Her address_descriptor nesnesinde iki dizi vardır: landmarks ve areas. landmarks dizisi, istenen koordinata yakınlık, simge yapının yaygınlığı ve görünürlüğü dikkate alınarak alaka düzeyine göre sıralanmış en fazla 5 sonuç içerir. Her önemli yer sonucu aşağıdaki değerleri içerir:

  • place_id, önemli noktalar sonucunun yer kimliğidir. Yer kimliğine genel bakış bölümünü inceleyin.
  • display_name, önemli yerin görünen adıdır ve language_code ile text'yi içerir.
  • straight_line_distance_meters, giriş koordinatı ile önemli yerler sonucu arasındaki nokta nokta mesafedir (metre cinsinden).
  • travel_distance_meters, giriş koordinatı ile önemli yerler sonucu arasında yol ağı kullanılarak gidilen mesafedir (yol kısıtlamaları göz ardı edilir).
  • spatial_relationship, giriş koordinatı ile önemli yerler sonucu arasındaki tahmini ilişkidir:
    • Aşağıdakilerden hiçbiri geçerli olmadığında varsayılan ilişki "NEAR" olur.
    • Giriş koordinatı, belirgin işaretle ilişkili yapının sınırları içinde yer aldığında "WITHIN"
    • "BESIDE" Giriş koordinatı, doğrudan önemli noktanın veya önemli noktanın erişim noktasının bitişiğinde olduğunda.
    • "ACROSS_THE_ROAD" Giriş koordinatı, rotanın diğer tarafındaki önemli noktanın tam karşısında olduğunda.
    • "DOWN_THE_ROAD" Giriş koordinatı, önemli yerle aynı rota üzerinde olduğunda ancak "BESIDES" veya "ACROSS_THE_ROAD" olmadığında.
    • Giriş koordinatı, referans noktasıyla aynı yönde olmayan bir rota üzerindeyken (tek bir dönüşle sınırlıdır)."AROUND_THE_CORNER"
    • "BEHIND" Giriş koordinatı, önemli yere yakın ancak erişim noktasına uzak olduğunda.
  • types, simge yapının yer türleridir.

areas nesnesi en fazla 3 yanıt içerir ve kendisini mahalleler, alt yerleşim birimleri ve büyük kompleksler gibi küçük bölgeleri temsil eden yerlerle sınırlar. İstenen koordinatı içeren alanlar önce listelenir ve en küçüğünden en büyüğüne doğru sıralanır. Her areas sonucu aşağıdaki değerleri içerir:

  • place_id, alanlar sonucunun yer kimliğidir. Yer kimliğine genel bakış bölümünü inceleyin.
  • display_name, alanın görünen adıdır ve language_code ile text'yi içerir.
  • containment, giriş koordinatı ile alanlar sonucu arasındaki tahmini kapsama ilişkisidir:
    • Aşağıdakilerden hiçbiri geçerli olmadığında varsayılan ilişki "NEAR" olur.
    • "WITHIN" Giriş koordinatı alanın merkezine yakın olduğunda.
    • "OUTSKIRTS" Giriş koordinatı alanın kenarına yakın olduğunda.

Adres Açıklayıcı Kapsamı

Adres tanımlayıcıları Hindistan için GA'da yer alır. Hindistan'da adres tanımlayıcılarının kullanımı ek bir ücrete tabi değildir ve kullanım, mevcut Geocoding (Hindistan) Essentials SKU'su kapsamındadır.

Geri bildirim

Bu özellik tüm bölgelerde kullanılabilir. Hindistan'da GKST aşamasında, diğer tüm bölgelerde ise GKST öncesi deneysel lansman aşamasındadır. Geri bildirimlerinizi bekliyoruz:

Tersine Coğrafi Kodlama (Adres Arama)

Coğrafi kodlama terimi genellikle okunabilir bir adresin harita üzerindeki bir konuma çevrilmesini ifade eder. Bunun tersi olan, haritadaki bir konumu okunabilir bir adrese çevirme işlemine ters coğrafi kodlama adı verilir.

Metin biçiminde bir address sağlamak yerine, location parametresinde virgülle ayrılmış bir enlem/boylam çifti sağlayın.

Aşağıdaki örnekte bir enlem/boylam değeri coğrafi olarak kodlanıyor ve harita bu konumda ortalanarak biçimlendirilmiş adresi içeren bir bilgi penceresi açılıyor:

TypeScript

let marker;

async function initMap() {
    //  Request the needed libraries.
    const [{ Map, InfoWindow }, { Geocoder }, { AdvancedMarkerElement }] =
        await Promise.all([
            google.maps.importLibrary(
                'maps'
            ) as Promise<google.maps.MapsLibrary>,
            google.maps.importLibrary(
                'geocoding'
            ) as Promise<google.maps.GeocodingLibrary>,
            google.maps.importLibrary(
                'marker'
            ) as Promise<google.maps.MarkerLibrary>,
        ]);

    // Get the gmp-map element.
    const mapElement = document.querySelector(
        'gmp-map'
    ) as google.maps.MapElement;

    // Get the inner map.
    const innerMap = mapElement.innerMap;

    // Get the latlng input box.
    const latLngQuery = document.getElementById('latlng') as HTMLInputElement;

    // Get the submit button.
    const submitButton = document.getElementById('submit') as HTMLElement;

    // Set the cursor to crosshair.
    innerMap.setOptions({
        draggableCursor: 'crosshair',
        zoom: 13,
    });

    // Create a marker for re-use.
    marker = new AdvancedMarkerElement({
        map: innerMap,
    });

    const geocoder = new Geocoder();
    const infowindow = new InfoWindow();

    // Add a click event listener to the submit button.
    submitButton.addEventListener('click', () => {
        geocodeLatLng(geocoder, innerMap, infowindow);
    });

    // Add a click event listener to the map.
    innerMap.addListener('click', (event) => {
        latLngQuery.value = `${event.latLng.lat()}, ${event.latLng.lng()}`;
        geocodeLatLng(geocoder, innerMap, infowindow);
    });

    // Make an initial request upon loading.
    geocodeLatLng(geocoder, innerMap, infowindow);
}

async function geocodeLatLng(
    geocoder: google.maps.Geocoder,
    map: google.maps.Map,
    infowindow: google.maps.InfoWindow
) {
    const input = (document.getElementById('latlng') as HTMLInputElement).value;
    const latlngStr = input.split(',', 2);
    const latlng = {
        lat: parseFloat(latlngStr[0]),
        lng: parseFloat(latlngStr[1]),
    };

    geocoder
        .geocode({ location: latlng })
        .then((response) => {
            if (response.results[0]) {
                marker.position = latlng;
                map.setCenter(latlng);
                infowindow.setContent(response.results[0].formatted_address);
                infowindow.open(map, marker);
            } else {
                window.alert('No results found');
            }
        })
        .catch((e) => window.alert('Geocoder failed due to: ' + e));
}

initMap();

JavaScript

let marker;
async function initMap() {
    //  Request the needed libraries.
    const [{ Map, InfoWindow }, { Geocoder }, { AdvancedMarkerElement }] = await Promise.all([
        google.maps.importLibrary('maps'),
        google.maps.importLibrary('geocoding'),
        google.maps.importLibrary('marker'),
    ]);
    // Get the gmp-map element.
    const mapElement = document.querySelector('gmp-map');
    // Get the inner map.
    const innerMap = mapElement.innerMap;
    // Get the latlng input box.
    const latLngQuery = document.getElementById('latlng');
    // Get the submit button.
    const submitButton = document.getElementById('submit');
    // Set the cursor to crosshair.
    innerMap.setOptions({
        draggableCursor: 'crosshair',
        zoom: 13,
    });
    // Create a marker for re-use.
    marker = new AdvancedMarkerElement({
        map: innerMap,
    });
    const geocoder = new Geocoder();
    const infowindow = new InfoWindow();
    // Add a click event listener to the submit button.
    submitButton.addEventListener('click', () => {
        geocodeLatLng(geocoder, innerMap, infowindow);
    });
    // Add a click event listener to the map.
    innerMap.addListener('click', (event) => {
        latLngQuery.value = `${event.latLng.lat()}, ${event.latLng.lng()}`;
        geocodeLatLng(geocoder, innerMap, infowindow);
    });
    // Make an initial request upon loading.
    geocodeLatLng(geocoder, innerMap, infowindow);
}
async function geocodeLatLng(geocoder, map, infowindow) {
    const input = document.getElementById('latlng').value;
    const latlngStr = input.split(',', 2);
    const latlng = {
        lat: parseFloat(latlngStr[0]),
        lng: parseFloat(latlngStr[1]),
    };
    geocoder
        .geocode({ location: latlng })
        .then((response) => {
        if (response.results[0]) {
            marker.position = latlng;
            map.setCenter(latlng);
            infowindow.setContent(response.results[0].formatted_address);
            infowindow.open(map, marker);
        }
        else {
            window.alert('No results found');
        }
    })
        .catch((e) => window.alert('Geocoder failed due to: ' + e));
}
initMap();
Örneği görüntüleyin

Örneği deneyin

Önceki örnekte, results[0] seçilerek ilk sonucun gösterildiğini unutmayın. Ters coğrafi kodlayıcı genellikle birden fazla sonuç döndürür. Coğrafi kodlu adresler yalnızca posta adresleri değil, bir konuma coğrafi olarak ad vermenin herhangi bir yoludur. Örneğin, Chicago şehrindeki bir nokta coğrafi olarak kodlandığında, coğrafi olarak kodlanan nokta sokak adresi, şehir (Chicago), eyalet (Illinois) veya ülke (ABD) olarak etiketlenebilir. Tümü coğrafi kodlayıcıya gönderilen adreslerdir. Ters coğrafi kod çözücü, bu sonuçların tümünü döndürür.

Ters coğrafi kodlayıcı, siyasi varlıkları (ülkeler, iller, şehirler ve mahalleler), açık adresleri ve posta kodlarını eşleştirir.

Yukarıdaki sorgunun döndürebileceği adres listesi örneği:

results[0].formatted_address: "277 Bedford Ave, Brooklyn, NY 11211, USA"
results[1].formatted_address: "Grand St/Bedford Av, Brooklyn, NY 11211, USA"
results[2].formatted_address: "Williamsburg, Brooklyn, NY, USA"
results[3].formatted_address: "Brooklyn, NY, USA"
results[4].formatted_address: "New York, NY, USA"
results[5].formatted_address: "Brooklyn, NY 11211, USA"
results[6].formatted_address: "Kings County, NY, USA"
results[7].formatted_address: "New York-Northern New Jersey-Long Island, NY-NJ-PA, USA"
results[8].formatted_address: "New York Metropolitan Area, USA"
results[9].formatted_address: "New York, USA"

Adresler, en iyi eşleşmeden en az eşleşmeye doğru sıralanarak döndürülür. Genellikle, bu örnekte olduğu gibi, en kesin adres en belirgin sonuçtur. En spesifik sokak adresinden daha az spesifik siyasi birimlere (ör. mahalleler, şehirler, ilçeler, eyaletler) kadar farklı adres türleri döndürdüğümüzü unutmayın. Daha genel bir adresi eşleştirmek istiyorsanız results[].types alanını inceleyebilirsiniz.

Not: Tersine coğrafi kodlama kesin bir bilim değildir. Coğrafi kodlayıcı, belirli bir tolerans içinde en yakın adreslenebilir konumu bulmaya çalışır.

Yer kimliği için adres alma

Belirli bir yer kimliğinin adresini bulmak için placeId girin. Yer kimliği, diğer Google API'leriyle kullanılabilen benzersiz bir tanımlayıcıdır. Örneğin, Roads API tarafından döndürülen placeId değerini sağlayarak sabitlenmiş bir noktanın adresini alabilirsiniz. Yer kimlikleri hakkında daha fazla bilgi için Yer kimliği genel bakış başlıklı makaleyi inceleyin.

placeId sağladığınızda istek aşağıdaki alanlardan hiçbirini içeremez:

  • address
  • latLng
  • location
  • componentRestrictions

Aşağıdaki örnekte bir yer kimliği kabul edilir, ilgili adres bulunur ve harita bu konumda ortalanır. Ayrıca, ilgili yerin biçimlendirilmiş adresini gösteren bir bilgi penceresi de açılır:

TypeScript

// Initialize the map.
function initMap(): void {
  const map = new google.maps.Map(
    document.getElementById("map") as HTMLElement,
    {
      zoom: 8,
      center: { lat: 40.72, lng: -73.96 },
    }
  );
  const geocoder = new google.maps.Geocoder();
  const infowindow = new google.maps.InfoWindow();

  (document.getElementById("submit") as HTMLElement).addEventListener(
    "click",
    () => {
      geocodePlaceId(geocoder, map, infowindow);
    }
  );
}

// This function is called when the user clicks the UI button requesting
// a geocode of a place ID.
function geocodePlaceId(
  geocoder: google.maps.Geocoder,
  map: google.maps.Map,
  infowindow: google.maps.InfoWindow
) {
  const placeId = (document.getElementById("place-id") as HTMLInputElement)
    .value;

  geocoder
    .geocode({ placeId: placeId })
    .then(({ results }) => {
      if (results[0]) {
        map.setZoom(11);
        map.setCenter(results[0].geometry.location);

        const marker = new google.maps.Marker({
          map,
          position: results[0].geometry.location,
        });

        infowindow.setContent(results[0].formatted_address);
        infowindow.open(map, marker);
      } else {
        window.alert("No results found");
      }
    })
    .catch((e) => window.alert("Geocoder failed due to: " + e));
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

// Initialize the map.
function initMap() {
  const map = new google.maps.Map(document.getElementById("map"), {
    zoom: 8,
    center: { lat: 40.72, lng: -73.96 },
  });
  const geocoder = new google.maps.Geocoder();
  const infowindow = new google.maps.InfoWindow();

  document.getElementById("submit").addEventListener("click", () => {
    geocodePlaceId(geocoder, map, infowindow);
  });
}

// This function is called when the user clicks the UI button requesting
// a geocode of a place ID.
function geocodePlaceId(geocoder, map, infowindow) {
  const placeId = document.getElementById("place-id").value;

  geocoder
    .geocode({ placeId: placeId })
    .then(({ results }) => {
      if (results[0]) {
        map.setZoom(11);
        map.setCenter(results[0].geometry.location);

        const marker = new google.maps.Marker({
          map,
          position: results[0].geometry.location,
        });

        infowindow.setContent(results[0].formatted_address);
        infowindow.open(map, marker);
      } else {
        window.alert("No results found");
      }
    })
    .catch((e) => window.alert("Geocoder failed due to: " + e));
}

window.initMap = initMap;
Örneği görüntüleyin

Örneği deneyin