Coğrafi Kodlama Hizmeti

Genel bakış

Coğrafi kodlama, adresleri (ör. "1600 Amphitheatre Parkway, Mountain View, CA") coğrafi koordinatlara (ör. 37.423021 enlem, 122.083739 boylam) yerleştirme işlemidir. Bunları işaretçi yerleştirmek veya haritayı konumlandırmak için kullanabilirsiniz.

Ters coğrafi kodlama, coğrafi koordinatları kullanıcıların okuyabileceği bir adrese dönüştürme işlemidir (Ters coğrafi kodlama (Adres Arama) bölümüne bakın).

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

Maps JavaScript API, coğrafi kodlama için Geocoder sınıfı ve kullanıcı girişinden dinamik olarak ters coğrafi kodlama sağlar. Bunun yerine statik, bilinen adreslerin coğrafi kodlamasını yapmak isterseniz Coğrafi kodlama web hizmetini inceleyin.

Kullanmaya başlama

Maps JavaScript API'de Coğrafi Kodlama hizmetini kullanmadan önce, ilk olarak Maps JavaScript API için oluşturduğunuz projede, Geocoding API'nin Google Cloud Console'da etkinleştirildiğinden emin olun.

Etkin API'ler listenizi görüntülemek için:

  1. Google Cloud Console'a gidin.
  2. Proje seçin düğmesini tıklayın, ardından Maps JavaScript API için oluşturduğunuz projeyi seçin ve 'ı tıklayın.
  3. Kontrol Paneli'ndeki API listesinde Geocoding API'yi bulun.
  4. Listede API'yi görüyorsanız her şey hazır demektir. API listede yoksa etkinleştirin:
    1. Sayfanın üst kısmında Kitaplık sekmesini görüntülemek için API'yi 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çlar 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

16 Temmuz 2018 tarihinden itibaren Haritalar, Rotalar ve Yerler için yeni bir kullandıkça öde fiyatlandırma planı yürürlüğe girdi. JavaScript Coğrafi Kodlama hizmeti kullanımınızla ilgili yeni fiyatlandırma ve kullanım sınırları hakkında daha fazla bilgi edinmek için Geocoding API'nin Kullanım ve Faturalandırma bölümünü inceleyin.

Politikalar

Coğrafi Kodlama hizmetinin kullanımı, Geocoding API için açıklanan politikalara 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ız olarak gerçekleşir. Bu nedenle, isteğin tamamlanmasının ardından yürütülecek bir callback 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 Haritalar API'si coğrafi kodlama hizmetine, kodunuzun içinden google.maps.Geocoder oluşturucu nesnesi aracılığıyla erişirsiniz. Geocoder.geocode() yöntemi, coğrafi kodlama hizmetine istek göndererek giriş terimlerini ve yanıt alındığında yürütülecek bir geri çağırma yöntemini içeren GeocoderRequest nesne değişmez değerini iletir.

GeocoderRequest nesnesi değişmez değeri şu alanları içerir:

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

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

  • address — Coğrafi kodlamasını yapmak istediğiniz adrestir.
         veya
    location: Kullanıcıların okuyabileceği en yakın adresi almak istediğiniz LatLng (veya LatLngLiteral). Coğrafi kodlayıcı, ters coğrafi kod gerçekleştirir. Daha fazla bilgi için Ters Coğrafi Kodlama bölümünü inceleyin.
         veya
    placeId — Kullanıcıların okuyabileceği en yakın adresi elde etmek 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 kodlama sonuçlarını daha belirgin bir şekilde ön yargılamak için kullanılacak LatLngBounds. bounds parametresi yalnızca coğrafi kodlayıcıdan gelen sonuçları etkiler, tamamen kısıtlamaz. Aşağıda görüntü alanına ağırlık verme hakkında daha fazla bilgi edinebilirsiniz.
  • componentRestrictions: Sonuçları belirli bir bölgeyle kısıtlamak için kullanılır. Bileşen filtreleme hakkında daha fazla bilgiyi aşağıda bulabilirsiniz.
  • region: İki karakterli (sayısal olmayan) bir Unicode bölge alt etiketi olarak belirtilen bölge kodu. Çoğu durumda, bu etiketler doğrudan bilindik ccTLD ("üst düzey alan") iki karakterli değerlerle eşlenir. region parametresi yalnızca coğrafi kodlayıcıdan gelen sonuçları etkiler, tamamen kısıtlamaz. Aşağıda bölge koduna ağırlık verme hakkında daha fazla bilgi edinebilirsiniz.

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 bir status kodunu bu sırayla 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 çok 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 özelliğin türünü tanımlayan bir sıfır veya daha fazla etiket kümesi içerir. Örneğin, "Chicago"nun coğrafi kodlaması "Chicago"nun bir şehir olduğunu belirten "locality" değerini ve aynı zamanda "political" (siyasi) 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 okunabilir adresini içeren bir dizedir.

    Bu adres çoğu zaman 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 hatırlatmak isteriz.

    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" (rota), "New York" (şehir) ve "NY" (ABD eyaleti).

    Biçimlendirilmiş adresi programlı bir şekilde 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, coğrafi kodlayıcı tarafından döndürülen adres bileşeninin 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 bir adres bileşeninde 2 harfli posta kısaltması kullanılarak long_name "Alaska" ve short_name olarak "AK" kullanılabilir.

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

    • Adres bileşenleri dizisi, formatted_address seçeneğinden daha fazla bileşen içerebilir.
    • Dizi, formatted_address özelliğindekiler dışında bir adres içeren tüm siyasi varlıkları içermez. Belirli bir adres içeren tüm siyasi varlıkları almak için ters coğrafi kodlamayı kullanmanız ve adresin enlemini/boylamını isteğe bir parametre olarak iletmeniz gerekir.
    • İstekler arasında yanıt biçiminin 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 konumu değiştirebilir. Bileşenin türü değişebilir. Daha sonraki bir yanıtta belirli bir bileşen eksik olabilir.

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

  • partial_match, coğrafi kodlayıcının orijinal istek için tam eşleşme döndürmediğini, ancak istenen adresin bir kısmını eşleştirebildiğini belirtir. Orijinal talebi inceleyerek yazım hataları ve/veya eksik adres olup olmadığını kontrol edebilirsiniz.

    Kısmi eşleşmeler çoğunlukla istekte ilettiğiniz konum içinde bulunmayan açık adresler için ortaya çıkar. Bir istek aynı konumdaki iki veya daha fazla konumla eşleştiğinde de kısmi eşleşmeler döndürülebilir. Örneğin, "İstiklal, İstanbul, Türkiye" olsun, İstanbul Caddesi ve Üsküdar için kısmen eşleşme döndürülür. İstek yanlış yazılmış bir adres bileşeni içeriyorsa 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şletmeyle ilgili telefon numarası, çalışma saatleri, kullanıcı yorumları vb. ayrıntıları almak için place_id uygulamasını Google Places API kitaplığıyla birlikte kullanabilirsiniz. Yer kimliğine genel bakış konusuna göz atın.
  • postcode_localities[], bir posta kodunda bulunan tüm şehirleri belirten bir dizidir ve yalnızca sonuç birden fazla şehir içeren bir posta kodu olduğunda mevcuttur.
  • geometry aşağıdaki bilgileri içerir:

    • location, coğrafi kodlamalı enlem,boylam değerini içerir. Bu konumun, biçimlendirilmiş bir dize olarak değil, LatLng nesnesi olarak döndürüldüğünü unutmayın.
    • location_type, belirtilen konumla ilgili ek verileri depolar. Şu anda aşağıdaki değerler desteklenmektedir:
      • ROOFTOP değeri, döndürülen sonucun kesin bir coğrafi kodu yansıttığını belirtir.
      • RANGE_INTERPOLATED, döndürülen sonucun iki kesin nokta (kavşaklar gibi) arasında interpolasyonla elde edilen yaklaşık bir sonucu (genellikle yol üzerinde) yansıttığını belirtir. İnterpole edilmiş sonuçlar genellikle bir açık adres için çatı coğrafi kodları kullanılamadığında döndürülür.
      • GEOMETRIC_CENTER, döndürülen sonucun, çoklu çizgi (örneğin, sokak) veya poligon (bölge) gibi bir sonucun geometrik merkezi olduğunu belirtir.
      • APPROXIMATE, döndürülen sonucun yaklaşık olduğunu belirtir.

    • 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 tam olarak içerebilen LatLngBounds öğesini depolar. Bu sınırların önerilen görüntü alanıyla eşleşmeyebileceğini unutmayın. (Örneğin San Francisco, teknik olarak şehrin bir parçası olan, ancak görüntü alanına döndürülmemesi gereken Farallon Adaları'nı içerir.)

Adresler, coğrafi kodlayıcı tarafından tarayıcının tercih edilen dil ayarı veya language parametresiyle API JavaScript'i yüklenirken belirtilen dil kullanılarak 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

GeocoderResult'daki types[] dizisi, adres türünü belirtir. types[] dizisi, belirli adres bileşeninin türünü belirtmek için bir GeocoderAddressComponent içinde de döndürülebilir. Coğrafi kodlayıcı tarafından döndürülen adreslerin birden fazla türü olabilir; türler etiket olarak kabul edilebilir. Örneğin, birçok şehir political ve locality türüyle etiketlenir.

Aşağıdaki türler, coğrafi kodlayıcı tarafından hem adres türlerinde hem de adres bileşeni türlerinde desteklenip döndürülür:

  • street_address, tam açık adresi belirtir.
  • route, adlandırılmış bir rotayı gösterir (ör. "US 101").
  • intersection, genellikle iki ana yoldan oluşan ana kavşağı gösterir.
  • political, siyasi bir tüzel kişiyi belirtir. Bu tür genellikle sivil yönetim poligonunu gösterir.
  • country, ulusal siyasi varlığı belirtir ve genellikle Coğrafi Kodlayıcı tarafından döndürülen en yüksek sipariş türüdür.
  • administrative_area_level_1, ülke düzeyinin altında yer alan birinci dereceden sivil tüzel kişiyi belirtir. ABD'de bu idari düzeyler eyaletlerdir. Tüm uluslar bu idari seviyeleri göstermez. Çoğu durumda idari_area_level_1 kısa adlar, ISO 3166-2 alt bölümleri ve geniş çapta dağıtı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 garanti edilmez.
  • administrative_area_level_2, ülke düzeyinin altındaki ikinci dereceden sivil tüzel kişiyi belirtir. ABD'de bu idari düzeyler ilçedir. Tüm uluslar bu idari seviyeleri göstermez.
  • administrative_area_level_3, ülke düzeyinin altındaki üçüncü dereceden sivil tüzel kişiyi belirtir. Bu tür, küçük sivil toplum bölümlerini gösterir. Tüm uluslar bu idari seviyeleri göstermez.
  • administrative_area_level_4, ülke düzeyinin altında dördüncü dereceden bir sivil tüzel kişiyi belirtir. Bu tür, küçük sivil toplum bölümlerini gösterir. Tüm uluslar bu idari seviyeleri göstermez.
  • administrative_area_level_5, ülke düzeyinin altında olan beşinci dereceden bir sivil tüzel kişiyi belirtir. Bu tür, küçük sivil toplum bölümlerini gösterir. Tüm uluslar bu idari seviyeleri göstermez.
  • administrative_area_level_6, ülke düzeyinin altında kalan altıncı dereceden bir sivil tüzel kişiyi belirtir. Bu tür, küçük sivil toplum bölümlerini gösterir. Tüm uluslar bu idari seviyeleri göstermez.
  • administrative_area_level_7, ülke düzeyinin altında yedinci dereceden bir sivil tüzel kişiyi belirtir. Bu tür, küçük sivil toplum bölümlerini gösterir. Tüm uluslar bu idari seviyeleri göstermez.
  • colloquial_area, varlık için yaygın olarak kullanılan alternatif adı gösterir.
  • locality, anonim bir şehir veya kasaba siyasi tüzel kişiliğini belirtir.
  • sublocality, bir yerel bölge altındaki birinci dereceden sivil tüzel kişiyi belirtir. Bazı konumlar için şu ek türlerden biri alınabilir: sublocality_level_1-sublocality_level_5. Her alt konum düzeyi medeni bir varlıktır. Büyük sayılar, daha küçük bir coğrafi alanı belirtir.
  • neighborhood, adlandırılmış bir mahalleyi belirtir
  • premise, adlandırılmış bir konumu belirtir (genellikle ortak bir ada sahip bir bina veya bina topluluğu)
  • subpremise, adlandırılmış bir konumun altında birinci dereceden varlığı (genellikle ortak bir ada sahip bir bina topluluğu içinde tek bir bina) belirtir.
  • plus_code, enlem ve boylamdan türetilen kodlanmış bir konum referansını gösterir. Artı kodları, var olmayan (bina numaralandırılmamış veya sokakların adlanmadığı yerlerde) açık adreslerin yerine kullanılabilir. Ayrıntılar için https://plus.codes sayfasına bakın.
  • postal_code, ülke içindeki posta adresine yanıt vermek için kullanılan bir posta kodunu belirtir.
  • natural_feature, belirgin bir doğal özelliği belirtir.
  • airport bir havaalanını belirtir.
  • park, adlandırılmış bir parkı belirtir.
  • point_of_interest, adlandırılmış bir önemli noktayı gösterir. Genellikle bu "ÖY"ler, "Empire State Binası" veya "Eyfel Kulesi" gibi başka bir kategoriye kolayca sığmayan belirgin yerel varlıklardır.

Boş bir tür listesi, belirli bir adres bileşeni için bilinen bir tür olmadığını gösterir (ör. Fransa'daki Lieu-dit).

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

Not: Bu, tam kapsamlı bir liste değildir ve değişikliğe tabidir.

  • floor, bir bina adresinin katını gösterir.
  • establishment genellikle henüz kategorize edilmemiş bir yeri gösterir.
  • landmark, navigasyona yardımcı olmak için referans olarak kullanılan yakındaki bir yeri belirtir.
  • point_of_interest, adlandırılmış bir önemli noktayı gösterir.
  • parking bir park yeri veya park yapısını belirtir.
  • post_box, belirli bir posta kutusunu belirtir.
  • postal_town, bazı ülkelerde posta adresleri için kullanılan locality ve sublocality gibi coğrafi bölgelerin gruplandırmasını belirtir.
  • room, bir bina adresinin odasını belirtir.
  • street_number, tam sokak numarasını belirtir.
  • bus_station, train_station ve transit_station bir otobüs, tren veya toplu taşıma durağının konumunu belirtir.

Durum Kodları

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

  • "OK" hata oluşmadığını belirtir; adres başarıyla ayrıştırılır ve en az bir coğrafi kod döndürüldü.
  • "ZERO_RESULTS", coğrafi kodun başarılı olduğunu ancak sonuç döndürmediğini belirtir. Coğrafi kodlayıcı var olmayan bir address iletildiyse bu durum 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 belirtir.
  • "UNKNOWN_ERROR", sunucu hatası nedeniyle isteğin işlenemediğini belirtir. Tekrar denerseniz istek başarılı olabilir.
  • "ERROR", isteğin zaman aşımına uğradığını veya Google sunucularıyla iletişim kurmada bir sorun olduğunu belirtir. Tekrar denerseniz istek başarılı olabilir.

Bu örnekte, bir adresin coğrafi kodlamasını yaparız ve döndürülen enlem ve boylam değerlerine bir işaretçi yerleştiririz. İşleyicinin anonim bir işlev değişmez değeri 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ına Ağırlık Verme

Coğrafi Kodlama Hizmeti'ne, belirli bir görüntü alanı içindeki (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şmez değerinde bounds parametresini ayarlayarak yaparsınız. Ağırlık vermenin yalnızca sınırlar içindeki sonuçları tercih ettiğini unutmayın. Bu sınırların dışında daha alakalı sonuçlar varsa onlar da dahil edilebilir.

Örneğin, "Winnetka" için kullanılan coğrafi kod genellikle Chicago'nun bu banliyösü sonucunu 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"
}

Bununla birlikte, Los Angeles'taki San Fernando Vadisi için sınırlayıcı kutuyu tanımlayan bir bounds parametresi belirtildiğinde, bu coğrafi kod, ilgili konum için "Winnetka" adlı mahalleyi döndürür:

{
  "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 Koduna Ağırlık Verme

region parametresini kullanarak Coğrafi Kodlama Hizmeti'ni, belirli bir bölgeye ağırlık veren sonuçları açık bir şekilde döndürecek şekilde ayarlayabilirsiniz. Bu parametre, iki karakterli (sayısal olmayan) bir Unicode bölge alt etiketi olarak belirtilen bir bölge kodu alır. Bu etiketler, örneğin "co.uk" içindeki "uk" gibi bilinen iki karakterli ccTLD ("üst düzey alan") değerleriyle doğrudan eşlenir. Bazı durumlarda region etiketi, bazen ccTLD değerlerinden ("İngiltere" için "GB") farklı olan ISO-3166-1 kodlarını da destekler.

region parametresini kullanırken:

  • Yalnızca bir ülke veya bölge belirtin. Birden fazla değer yok sayılır ve isteğin başarısız olmasına yol açabilir.
  • Yalnızca iki karakterlik bölge alt etiketlerini kullanın (Unicode CLDR biçimi). Diğer tüm girişler hataya neden olur.
  • Yalnızca Google Haritalar Platformu Kapsam Ayrıntıları'nda listelenen ülkeler 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. Ağırlık vermenin yalnızca belirli bir alan için sonuçları tercih ettiğini unutmayın. Bu alan dışında daha alakalı sonuçlar varsa onlar da dahil edilebilir.

Örneğin, Coğrafi Kodlama Hizmeti'nin varsayılan alanı ABD olarak ayarlandığı için "Toledo"nun coğrafi kodlaması ş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 kodlaması, İspanya şehrini 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

Bileşen filtresi kullanarak Coğrafi Kodlama Hizmeti'ni belirli bir bölgeyle sınırlı adres sonuçlarını döndürecek şekilde ayarlayabilirsiniz. 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 kodlayıcı yalnızca bileşen filtrelerinin tamamıyla eşleşen sonuçları döndürür. Yani filtre özelliklerini VEYA (VEYA) değil, VE olarak değerlendirir.

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

  • route, bir rotanın uzun veya kısa adıyla eşleşiyor.
  • locality, şehir ve alt konum türleriyle eşleşiyor.
  • administrativeArea, bağlı olduğu yerin tüm düzeyleriyle eşleşiyor.
  • postalCode, posta kodları ve posta kodu önekleriyle eşleşir.
  • country, bir ülke adı veya iki harfli ISO 3166-1 ülke koduyla eşleşir. Not: API, ülkeleri tanımlamak için ISO standardına uyar ve filtreleme, ülkenin ilgili ISO kodu kullanıldığında en iyi sonucu verir.

Aşağıdaki örnekte, country ve postalCode ölçütlerine 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);
  }
});
}

Tersine Coğrafi Kodlama (Adres Arama)

Coğrafi kodlama terimi, genellikle kullanıcılar tarafından okunabilen bir adresin harita üzerindeki bir konuma çevrilmesini ifade eder. Bunun tersini yapma, yani haritadaki bir konumu kullanıcıların okuyabileceği bir adrese çevirme sürecine ters coğrafi kodlama denir.

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ır ve harita ilgili konumda ortalanır. Böylece, biçimlendirilmiş adresin yer aldığı bir bilgi penceresi gösterilir:

TypeScript

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

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

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]) {
        map.setZoom(11);

        const marker = new google.maps.Marker({
          position: latlng,
          map: map,
        });

        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));
}

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

JavaScript

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

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

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]) {
        map.setZoom(11);

        const marker = new google.maps.Marker({
          position: latlng,
          map: map,
        });

        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));
}

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

Örneği Deneyin

Önceki örnekte results[0] öğesini seçerek ilk sonucu gösterdiğimize dikkat edin. Ters coğrafi kodlayıcı genellikle birden fazla sonuç döndürür. Coğrafi kodlamalı adresler yalnızca posta adresleri değildir, aynı zamanda bir konumu coğrafi olarak adlandırmanın herhangi bir yoludur. Örneğin, Chicago şehrindeki bir noktanın coğrafi kodlaması yapılırken coğrafi kodlanan nokta, açık adres, şehir (Chicago), eyalet (Illinois) veya ülke (ABD) olarak etiketlenebilir. Bunların tümü coğrafi kodlayıcıya ait adreslerdir. Ters coğrafi kodlayıcı, tüm bu sonuçları döndürür.

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

Yukarıdaki sorgunun döndürebileceği adres listesinin bir örneğini burada bulabilirsiniz:

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, eşleşmeler en iyiden en az olana doğru sıralanır. Bu örnekte olduğu gibi, daha kesin adres en belirgin sonuçtur. En belirgin açık adresten, mahalle, şehir, ilçe, eyalet gibi daha az belirgin politik varlıklara kadar farklı türde adresler döndürdüğümüzü unutmayın. Daha genel bir adresi eşleştirmek istiyorsanız results[].types alanını inceleyebilirsiniz.

Not: Ters coğrafi kodlama kesin bir bilim değildir. Coğrafi kodlayıcı, belirli bir tolerans dahilinde adres verilebilir en yakın konumu bulmaya çalışır.

Yer Kimliği İçin Adres Alma

Belirli bir yer kimliğinin adresini bulmak için bir placeId sağlayın. Yer kimliği, diğer Google API'leriyle birlikte kullanılabilecek benzersiz bir tanımlayıcıdır. Örneğin, tutturulmuş bir noktanın adresini almak için Roads API tarafından döndürülen placeId değerini sağlayabilirsiniz. Yer kimlikleri hakkında daha fazla bilgi için yer kimliğine genel bakış konusuna bakın.

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

  • address
  • latLng
  • location
  • componentRestrictions

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

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