Coğrafi Kodlama Hizmeti

Genel bakış

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

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 ve kullanıcı girişinden dinamik olarak ters coğrafi kodlama için bir Geocoder sınıfı sağlar. Bunun yerine bilinen statik adreslerin coğrafi kodlamasını yapmak istiyorsanız Coğrafi kodlama web hizmeti sayfasını inceleyin.

Başlarken

Maps JavaScript API'de Geocoding hizmetini kullanmadan önce ilk olarak Maps JavaScript API için ayarladığınız projede Coğrafi Kodlama API'sinin Google Cloud Console'da etkinleştirildiğinden emin olun.

Etkin API'lerin listesini 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 hazırsınız demektir. API listede yoksa 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'ı da seçebilirsiniz.
    2. Geocoding API ifadesini aratın ve sonuç listesinden bunu seçin.
    3. ETKİNLEŞTİR'i seçin. İşlem tamamlandığında Kontrol Paneli'ndeki API'ler listesinde Geocoding API gösterilir.

Fiyatlandırma ve politikalar

Fiyatlandırma

16 Temmuz 2018'den 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 hizmetini kullanımınızla ilgili yeni fiyatlandırma ve kullanım sınırları hakkında daha fazla bilgi edinmek için Geocoding API için Kullanım ve Faturalandırma bölümüne bakın.

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ızdır. Bu nedenle, istek tamamlandıktan sonra yürütmek için callback (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 Haritalar API'si coğrafi kodlama hizmetine, google.maps.Geocoder oluşturucu nesnesi aracılığıyla kodunuz içinde erişirsiniz. Geocoder.geocode() yöntemi, coğrafi kodlama hizmetine bir istek başlatarak bu hizmet, giriş terimlerini ve yanıt alındıktan sonra yürütülecek bir geri çağırma yöntemini içeren GeocoderRequest nesne değişmez değerini iletir.

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

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

Gerekli parametreler: Aşağıdaki alanlardan yalnızca bir tanesini girmeniz gerekir:

  • address — Coğrafi kodlaması yapmak istediğiniz adres.
         veya
    location — Kullanıcıların okuyabileceği en yakın adresi elde etmek istediğiniz LatLng (veya LatLngLiteral) . Coğrafi kodlayıcı, ters coğrafi kodlama işlemi gerçekleştirir. Daha fazla bilgi için Tersine Coğrafi Kodlama bölümüne bakın.
         veya
    placeId - Kullanıcıların okuyabileceği en yakın adresi edinmek 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ına daha belirgin bir şekilde ağırlık vermek için kullanılacak LatLngBounds. bounds parametresi yalnızca coğrafi kodlayıcıdan gelen sonuçları etkiler, tam olarak 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 alanla kısıtlamak için kullanılır. Bileşen filtreleme hakkında daha fazla bilgiyi aşağıda bulabilirsiniz.
  • region: İki karakterlik (sayısal olmayan) bir Unicode bölge alt etiketi olarak belirtilen bölge kodu. Çoğu durumda, bu etiketler doğrudan bilinen ccTLD ("üst düzey alan") iki karakterlik değerlerle eşlenir. region parametresi yalnızca coğrafi kodlayıcıdan gelen sonuçları etkiler, tam olarak kısıtlamaz. Aşağıda, bölge koduna ağırlık verme hakkında daha fazla bilgi bulabilirsiniz.
  • extraComputations: Bu parametre için izin verilen tek değer ADDRESS_DESCRIPTORS değeridir. Daha fazla bilgi için adres tanımlayıcıları bölümüne bakın.
  • fulfillOnZeroResults — Yanıtta ZERO_RESULT durumuyla ilgili sözünüzü yerine getirin. Bu, coğrafi kodlama sonucu sıfır olsa bile ek yanıt düzeyi alanları döndürülebileceği için istenebilir. Daha fazla bilgi için sıfır sonuçtan yararlanma bölümüne bakın.

Yanıtları Coğrafi Olarak Kodlama

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 bu sırayla tutmak için iki parametre iletmelidir.

Coğrafi Kodlama Sonuçları

GeocoderResult nesnesi, tek bir coğrafi kodlama sonucunu temsil eder. Coğrafi kodlama 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ü gösteren bir dizidir. Bu dizi, sonuçta döndürülen özelliğin türünü tanımlayan bir veya daha fazla etiket kümesi içerir. Örneğin, "Şikago"nun coğrafi kodu, "Chicago"nun bir şehir olduğunu belirten "locality", ayrıca politik bir varlık olduğunu belirten "sicago" 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 tarafından okunabilen 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" (rota), "New York" (şehir) ve "NY" (ABD eyaleti).

    Biçimlendirilmiş adresi programlı olarak ayrıştırmayın. Bunun yerine, biçimlendirilmiş adres alanına ek olarak API yanıtının 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ü gösteren bir dizidir. Desteklenen türler 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 eyaleti için bir adres bileşeninde 2 harfli posta kısaltması kullanılarak long_name "Alaska" ve short_name "AK" bulunabilir.

    address_components[] dizisiyle ilgili aşağıdaki gerçeklere dikkat edin:

    • Adres bileşenleri dizisi, formatted_address öğesinden daha fazla bileşen içerebilir.
    • Dizi, formatted_address içinde yer alanların dışında, bir adres içeren tüm siyasi varlıkları içermeyebilir. Belirli bir adres içeren tüm siyasi varlıkları almak için tersine coğrafi kodlama kullanmanız ve adresin enlem/boylam değerlerini isteğe parametre olarak iletmeniz gerekir.
    • Yanıt 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. 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 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 belirttiğiniz bölgede bulunmayan açık adresler için gerçekleşir. Bir istek aynı konumdaki iki veya daha fazla konumla eşleştiğinde kısmi eşleşmeler de döndürülebilir. Örneğin, "Hillpar St, Bristol, UK" hem Henry Street hem de Henrietta Street için kısmi bir eşleşme döndürü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 diğer Google API'leriyle kullanılabilen benzersiz tanımlayıcısıdır. Örneğin, place_id aracını Google Places API kitaplığıyla birlikte kullanarak bir yerel işletmeyle ilgili telefon numarası, çalışma saatleri, kullanıcı yorumları ve daha pek çok bilgiye ulaşabilirsiniz. Yer kimliğine genel bakış sayfasını inceleyin.
  • postcode_localities[], bir posta kodundaki tüm yerleri belirten bir dizidir ve yalnızca sonuç, birden fazla yerel birim içeren bir posta kodu olduğunda bulunur.
  • geometry, şu bilgileri içeriyor:

    • location, coğrafi olarak kodlanmış enlem,boylam değerini içeriyor. 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 verileri depolar. Şu anda aşağıdaki değerler desteklenmektedir:
      • 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. kesişimler) arasında interpolasyon yapılmış yaklaşık bir değeri (genellikle bir yolda) yansıttığını gösterir. İnterpole edilmiş sonuçlar genellikle bir sokak adresi 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ı da kapsar.)

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

Adres Türleri ve Adres Bileşeni Türleri

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

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

  • street_address, tam açık adresi gösterir.
  • route, adlandırılmış bir rotayı (ör. "TR 101") gösterir.
  • intersection, genellikle iki ana yolu kapsayan ana bir kesişimi gösterir.
  • political, siyasi bir tüzel kişiyi belirtir. Bu tür genellikle bir sivil yönetim poligonunu gösterir.
  • country, ulusal siyasi kuruluşu gösterir 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 birinci dereceden bir sivil tüzel kişiyi belirtir. ABD'de bu idari düzeyler eyalettir. Tüm uluslar bu idari düzeylerde değildir. Çoğu durumda, management_area_level_1 kısa adları, ISO 3166-2 alt bölümleri ve yaygın olarak 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 durum garanti edilmez.
  • administrative_area_level_2, ülke düzeyinin altında ikinci düzey bir sivil tüzel kişiyi gösterir. Bu idari düzeyler ABD'de ilçelerdir. Tüm uluslar bu idari düzeylerde değildir.
  • administrative_area_level_3, ülke düzeyinin altında üçüncü taraf bir sivil tüzel kişiyi gösterir. Bu tür, küçük bir sivil toplum bölmesini belirtir. Tüm uluslar bu idari düzeylerde değildir.
  • administrative_area_level_4, ülke düzeyinin altında dördüncü dereceden bir sivil tüzel kişiyi gösterir. Bu tür, küçük bir sivil toplum bölmesini belirtir. Tüm uluslar bu idari düzeylerde değildir.
  • administrative_area_level_5, ülke düzeyinin altında beşinci düzey bir sivil tüzel kişiyi belirtir. Bu tür, küçük bir sivil toplum bölmesini belirtir. Tüm uluslar bu idari düzeylerde değildir.
  • administrative_area_level_6, ülke düzeyinin altında altıncı düzey bir sivil tüzel kişiyi gösterir. Bu tür, küçük bir sivil toplum bölmesini belirtir. Tüm uluslar bu idari düzeylerde değildir.
  • administrative_area_level_7, ülke düzeyinin altında yedinci düzey sivil tüzel kişiyi gösterir. Bu tür, küçük bir sivil toplum bölmesini belirtir. Tüm uluslar bu idari düzeylerde değildir.
  • colloquial_area, varlık için yaygın olarak kullanılan bir alternatif adı gösterir.
  • locality, anonim bir şehir veya kasabadaki siyasi tüzel kişiyi belirtir.
  • sublocality, bir konum altında birinci dereceden bir sivil tüzel kişiyi belirtir. Bazı konumlar için ek türlerden biri alınabilir: sublocality_level_1 - sublocality_level_5. Her alt konum düzeyi bir sivil tüzel kişidir. Büyük sayılar daha küçük bir coğrafi alanı belirtir.
  • neighborhood, adlandırılmış bir mahalleyi gösterir
  • premise, genellikle ortak bir ada sahip olan bir bina veya bina topluluğu olan adlandırılmış bir konumu gösterir
  • subpremise, adlandırılmış bir konumun altındaki birinci derece varlığı gösterir. Bu genellikle ortak bir ada sahip binalar içinde yer alan tek bir binadır
  • plus_code, enlem ve boylamdan türetilen kodlanmış bir konum referansını gösterir. Artı kodları, var olmadıkları yerlerde (binaların numaralandırılmadığı veya sokakların adlandırılmadığı durumlarda) açık adreslerin yerine kullanılabilir. Ayrıntılar için https://plus.codes sayfasına bakın.
  • postal_code, ülke içindeki posta postaları için kullanılan posta kodunu belirtir.
  • natural_feature belirgin bir doğal özelliği gösterir.
  • airport, bir havaalanını gösterir.
  • park, adlandırılmış bir parkı gösterir.
  • point_of_interest, adlandırılmış bir önemli yeri gösterir. Bu "ÖY"ler, genellikle "Empire State Binası" veya "Eyfel Kulesi" gibi başka bir kategoriye kolayca uymayan önemli 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'daki Lieu-dit).

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

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

  • floor bir bina adresinin katını gösterir.
  • establishment genellikle henüz sınıflandırılmamış bir yeri gösterir.
  • landmark, navigasyona yardımcı olmak için referans olarak kullanılan yakındaki bir yeri gösterir.
  • point_of_interest, adlandırılmış bir önemli yeri gösterir.
  • parking, bir otopark veya otopark olduğunu belirtir.
  • post_box, belirli bir posta kutusunu belirtir.
  • postal_town, bazı ülkelerde posta adresleri için kullanılan locality ve sublocality gibi coğrafi alanlardan oluşan bir gruplandırmayı belirtir.
  • room, bina adresinin bulunduğu odayı gösterir.
  • street_number tam sokak numarasını gösterir.
  • bus_station, train_station ve transit_station 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", hiçbir hata oluşmadığını belirtir; adresin başarıyla ayrıştırıldığını ve en az bir coğrafi kod döndürüldüğünü gösterir.
  • "ZERO_RESULTS", coğrafi kodlamanın başarılı olduğunu ancak hiçbir sonuç döndürmediğini gösterir. Bu durum, coğrafi kodlayıcıya var olmayan bir address kodundan geçilmesi durumunda ortaya çıkabilir.
  • "OVER_QUERY_LIMIT", kotanızı aştığınızı gösteriyor.
  • "REQUEST_DENIED", isteğinizin reddedildiğini gösterir. Web sayfasının coğrafi kodlayıcı kullanmasına izin verilmiyor.
  • "INVALID_REQUEST" genellikle sorgunun (address, components veya latlng) eksik olduğunu gösterir.
  • "UNKNOWN_ERROR", isteğin bir sunucu hatası nedeniyle 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 belirtir. Tekrar denerseniz istek başarılı olabilir.

Bu örnekte, bir adresin coğrafi kodlamasını yaparak döndürülen enlem ve boylam değerlerine bir işaretçi yerleştiriyoruz. İş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 >
 <div id="map" style="width: 320px; height: 480px;"></div>
  <div>
    <input id="address" type="textbox" value="Sydney, NSW">
    <input type="button" value="Encode" >
  </div>
</body>

Örneği inceleyin.

Görüntü Alanına Ağırlık Verme

Coğrafi Kodlama Hizmeti'ne, belirli bir görüntü alanı içindeki sonuçları tercih etmesi talimatını verebilirsiniz (sınırlayıcı kutu olarak ifade edilir). Bunu, bu görüntü alanının sınırlarını tanımlamak için GeocoderRequest nesne değişmez değeri içindeki bounds parametresini ayarlayarak yapabilirsiniz. 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 bunlar dahil edilebilir.

Örneğin, "Winnetka" için coğrafi kod genellikle Chicago'nun şu banliyösü 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, San Fernando Vadisi için sınırlayıcı kutu tanımlayan bir bounds parametresi belirtilmesi, bu coğrafi kodun ilgili konumda "Winnetka" adlı mahalleyi döndürmesiyle sonuçlanı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

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

region parametresini kullanırken:

  • Yalnızca bir ülke veya bölge belirtin. Birden çok değer yoksayılır ve isteğin başarısız olmasına neden olabilir.
  • 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.

Ana Google Haritalar uygulamasının coğrafi kodlama sunduğu her alan adı için coğrafi kodlama istekleri gönderilebilir. Ağırlık vermenin yalnızca belirli bir alan adına ilişkin sonuçları tercih ettiğini unutmayın; bu alanın dışında daha alakalı sonuçlar varsa bunlar da dahil edilebilir.

Örneğin, Coğrafi Kodlama Hizmeti'nin varsayılan alan adı ABD olarak ayarlandığından "Toledo" için coğrafi kod aşağıdaki 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"
}

"Toledo" için, region alanının 'es' (İspanya) olarak ayarlandığı bir coğrafi kod, İ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 alanla kısıtlanmış 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şleme yöntemlerini destekler.

Coğrafi kodlayıcı yalnızca bileşen tüm filtreleriyle 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 öğelerin birinden veya birkaçından oluşur:

  • route, bir rotanın uzun veya kısa adıyla eşleşiyor.
  • locality, yerel ve alt konum 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 bir ülke adıyla veya iki harfli ISO 3166-1 ülke koduyla eşleşir. Not: API, ülkeleri tanımlamak için ISO standardını uygular ve filtreleme, ülkenin karşılık gelen ISO kodu kullanıldığında en iyi şekilde çalışır.

Aşağıdaki örnekte, country ve postalCode ölçütlerine göre filtreleme yapmak için componentRestrictions parametresinin kullanılması 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çla Yerine Getirme

Ters coğrafi kodlamada, status=ZERO_RESULTS ürününde taahhüt varsayılan olarak ihlal edilir. Ancak bu durumda plus_code ve address_descriptor ek yanıt düzeyi alanları yine de doldurulabilir. fulfillOnZeroResults parametresi için Doğru değeri sağlanırsa vaat uygulanmaz ve bu ek alanlara (varsa) taahhütten erişilebilir.

Aşağıda, Antarktika'daki bir enlem/boylam için bu davranışın bir örneği verilmiştir. Ters coğrafi kodlama sonucu olmasa da, fulfillOnZeroResults=true değerini ayarlamamız durumunda taahhütteki 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 açıklamaya 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 bir coğrafi kodlama isteğine, ters coğrafi kodlama isteğine veya bir yer coğrafi kodlama isteğine extra_computations=ADDRESS_DESCRIPTORS ekleyin.

Yer coğrafi kodlamasına örnek

Aşağıdaki sorgu, Delhi'deki bir yerin adresini içeriyor.

function addressDescriptorPlaceIdLookup() {
  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);
    }
  });
}

Ters 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 Tanımlayıcı Örneği

Aşağıda address_descriptor ile ilgili bir örnek 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 bulunur: landmarks ve areas. landmarks dizisi, istenen koordinata yakınlık, önemli noktanı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 nokta sonucu aşağıdaki değerleri içerir:

  • place_id, önemli noktalar sonucunun yer kimliğidir. Yer kimliğine genel bakış sayfasını inceleyin.
  • display_name, önemli noktanın görünen adı olup language_code ile text kelimelerini içerir.
  • straight_line_distance_meters, giriş koordinatı ile önemli nokta sonucu arasındaki metre cinsinden nokta-nokta mesafesidir.
  • travel_distance_meters, yol ağında (yol kısıtlamaları yok sayılarak) giriş koordinatı ile önemli nokta sonucu arasındaki katedilen mesafedir.
  • spatial_relationship, giriş koordinatı ile önemli nokta sonucu arasındaki tahmini ilişkidir:
    • Aşağıdakilerin hiçbiri geçerli olmadığında varsayılan ilişki "NEAR" olur.
    • Giriş koordinatı, önemli noktayla ilişkili yapının sınırları içinde olduğunda "WITHIN".
    • Giriş koordinatı, önemli noktanın veya önemli noktanın erişim noktasının hemen bitişiğinde olduğunda "BESIDE".
    • Giriş koordinatı rotanın diğer tarafındaki önemli noktanın doğrudan tersi olduğunda "ACROSS_THE_ROAD".
    • Giriş koordinatı, önemli noktayla aynı rota üzerinde olduğunda ancak "BESIDES" veya "ACROSS_THE_ROAD" olmadığında "DOWN_THE_ROAD".
    • Giriş koordinatı, önemli nokta olarak dikey bir rota üzerinde olduğunda (tek bir dönüşle sınırlıdır) "AROUND_THE_CORNER".
    • Giriş koordinatı, yer işaretine yakın, ancak erişim noktasından uzak olduğunda "BEHIND".
  • types, önemli noktanın Yer türleridir.

areas nesnesi en fazla 3 yanıt içerir ve kendisini mahalleler, semtler ve büyük kompleksler gibi küçük bölgeleri temsil eden yerlerle sınırlandırır. İstenen koordinatı içeren alanlar ilk sırada listelenir ve en küçükten en büyüğe doğru sıralanır. Her areas sonucu aşağıdaki değerleri içerir:

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

Adres Tanımlayıcı Kapsamı

Bu özellik yalnızca belirli ülkelerde kullanılabilir.

Bu bir Önizleme özelliğidir ve geri bildirimlerinizi almaktan memnuniyet duyarız. Lütfen address-descriptors-feedback@google.com adresinden bize e-posta gönderin.

Ters Coğrafi Kodlama (Adres Arama)

Coğrafi kodlama terimi genellikle okunabilir bir adresin harita üzerindeki bir konuma çevrilmesini ifade eder. Bunun tersini yapma, haritadaki bir konumu kullanıcıların okuyabileceği bir adrese çevirme işlemi, ters coğrafi kodlama olarak bilinir.

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ğerinin coğrafi kodu verilmiştir ve harita bu konumda ortalanmıştır. Böylece, biçimlendirilmiş adres içeren bir bilgi penceresi görüntülenir:

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 inceleyin

Örneği Deneyin

Önceki örnekte results[0] seçilerek ilk sonucun gösterildiğine dikkat edin. Ters coğrafi kodlayıcı genellikle birden fazla sonuç döndürür. Coğrafi kodlu adresler yalnızca posta adresleri değil, 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 (Şikago), eyaleti (Illinois) veya ülke (ABD) olarak etiketlenebilir. Bunların tümü coğrafi kodlayıcının adresleridir. Ters coğrafi kodlayı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 adresler ve posta kodlarıyla eşleştirir.

Yukarıdaki sorgunun döndürebileceği adres listesinin örneğini aşağıda 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, en iyi eşleşmeden en az eşleşmeye doğru sırayla döndürülür. Genellikle, bu durumda olduğu gibi, daha kesin adres en belirgin sonuçtur. En belirgin açık adresten mahalle, şehir, ilçe, eyalet gibi daha az belirgin siyasi oluşumlara kadar farklı adres türlerini döndürdüğümüze dikkat edin. Daha genel bir adresle 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 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 sağlayın. 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 yapışılmış bir noktanın adresini alabilirsiniz. Yer kimlikleri hakkında daha fazla bilgi için yer kimliğine genel bakış bölümüne bakın.

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

  • address
  • latLng
  • location
  • componentRestrictions

Aşağıdaki örnekte yer kimliği kabul edilir, ilgili adres bulunur ve harita bu konuma ortalanır. İlgili 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 inceleyin

Örneği Deneyin