Coğrafi Kodlama Hizmeti

Genel bakış

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

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) konusuna 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 itibaren dinamik olarak coğrafi kodlama için bir Geocoder sınıfı sunar. Bunun yerine statik, bilinen adreslerin coğrafi kodlamasını yapmak isterseniz Coğrafi kodlama web hizmetini kullanın.

Kullanmaya başlama

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

Etkin API'lerinizin 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 arayın.
  4. API'yi listede görüyorsanız hazırsınız demektir. API listede yoksa etkinleştirin:
    1. Kitaplık sekmesini görüntülemek için sayfanın üst kısmındaki 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, ardından sonuçlar listesinden API'yi 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'den itibaren Haritalar, Rotalar ve Yerler için yeni bir kullandıkça öde fiyatlandırma planı yürürlüğe girdi. JavaScript Geocoding 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'nin Kullanım ve Faturalandırma bölümüne göz atı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ütülmesi için 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 Haritalar API'si coğrafi kodlama hizmetine kodunuzdaki google.maps.Geocoder oluşturucu nesne aracılığıyla erişirsiniz. Geocoder.geocode() yöntemi, coğrafi kodlama hizmetine bir istek başlatır. Bu hizmette, giriş terimlerini ve yanıtı aldıktan sonra yürütülecek geri çağırma yöntemini içeren bir GeocoderRequest nesne değişmez değeri aktarılır.

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

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

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

  • address - Coğrafi kodlamasını yapmak istediğiniz adres.
         veya
    location — İnsan tarafından okunabilir en yakın adresi elde etmek istediğiniz LatLng (veya LatLngLiteral). Coğrafi kodlayıcı ters coğrafi kodlama gerçekleştirir. Daha fazla bilgi için Ters Coğrafi Kodlama bölümüne bakın.
         veya
    placeId — İnsan tarafından okunabilir 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ın daha belirgin bir şekilde ön plana alınması için LatLngBounds. bounds parametresi yalnızca coğrafi kodlayıcıdan gelen sonuçları etkiler, ancak tam olarak kısıtlamaz. Aşağıda görüntü alanı ağırlıklandırması hakkında daha fazla bilgi bulabilirsiniz.
  • componentRestrictions: Sonuçları belirli bir alanla kısıtlamak için kullanılır. Aşağıda bileşen filtreleme hakkında daha fazla bilgi bulabilirsiniz.
  • region: İki karakterli (sayısal olmayan) Unicode bölge alt etiketi olarak belirtilen bölge kodu. Çoğu durumda bu etiketler, tanıdık ccTLD ("üst düzey alan") iki karakterli değerlerle doğrudan eşlenir. region parametresi yalnızca coğrafi kodlayıcıdan gelen sonuçları etkiler, ancak tam olarak kısıtlamaz. Aşağıda bölge koduna ağırlık verme hakkında daha fazla bilgi bulabilirsiniz.

Coğrafi Kodlama Yanıtları

Coğrafi kodlama hizmeti, coğrafi kodlayıcının sonuçlarının alınmasından sonra yürütülmesi için bir geri çağırma yöntemi gerektirir. Bu geri çağırma, results ve status kodlarını aynı 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 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 özelliğin türünü tanımlayan bir sıfır veya daha fazla etiket kümesi içerir. Örneğin, "Chicago" coğrafi kodu, "Chicago"nun bir şehir olduğunu belirten "locality" değerini, bir siyasi tüzel kişi olduğunu belirten "politik" değerini de döndürür. Aşağıda adres türleri ve adres bileşeni türleri hakkında daha fazla bilgi bulabilirsiniz.
  • formatted_address, bu konumun kullanıcılar tarafından okunabilen adresini içeren bir dizedir.

    Bu adres genellikle posta adresinin eş değeridir. 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" (cadde numarası), "8th Avenue" (rota), "New York" (şehir) ve "NY" (ABD eyaleti).

    Biçimlendirilmiş adresi programatik 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ü belirten bir dizidir. Desteklenen türlerin listesini inceleyin.
    • long_name, Geocoder tarafından döndürülen adres bileşeninin tam metin açıklaması veya adıdır.
    • short_name, adres bileşeninin kısaltılmış metin adıdır (varsa). Örneğin, Alaska eyaletinde bir adres bileşeninin long_name "Alaska" ve short_name "AK" olmasına rağmen 2 harfli posta kısaltması kullanılabilir.

    address_components[] dizisi hakkında aşağıdaki bilgilere dikkat edin:

    • Adres bileşenleri dizisi, formatted_address sayısından daha fazla bileşen içerebilir.
    • Dizi, formatted_address dahilindekiler dışında, adres içeren tüm siyasi varlıkları her zaman kapsamaz. Belirli bir adres içeren tüm siyasi varlıkları almak için ters coğrafi kodlamayı kullanarak adresin enlem/boylamını parametre olarak parametre olarak kullanmanız gerekir.
    • Yanıtın biçimler arasında aynı kalacağı garanti edilmez. Özellikle address_components sayısı, talep edilen 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.

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

  • partial_match, coğrafi kodun orijinal istek için tam eşleşme döndürmediğini ancak istenen adresin bir kısmıyla eşleşebildiğini gösterir. Yanlış yazım ve/veya eksik adres için yapılan orijinal isteği inceleyebilirsiniz.

    Kısmi eşleşmeler genellikle istekte ilettiğiniz konumda bulunmayan açık adresler için gerçekleşir. Bir istek, aynı yerleşimdeki 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" araması hem Henry Street hem de Henrietta Street için kısmi bir eşleşme döndürür. Bir istek yanlış yazılmış bir adres bileşeni içeriyorsa coğrafi kodlama hizmetinin alternatif bir adres önerebilir. Bu şekilde tetiklenen öneriler de kısmi eşleşme olarak işaretlenir.

  • place_idbir yerin benzersiz tanımlayıcısıdır ve diğer Google API'leriyle kullanılabilir. Örneğin, Google Yerler API'si kitaplığını kullanarak place_id kullanarak yerel bir işletmenin telefon numarası, çalışma saatleri ve kullanıcı yorumları gibi ayrıntılarını alabilirsiniz. Yer kimliğine genel bakış sayfasını inceleyin.
  • postcode_localities[], posta kodundaki tüm şehirleri belirten bir dizidir ve yalnızca sonuç, birden fazla şehir içeren bir posta kodu olduğunda mevcut olur.
  • geometry aşağıdaki bilgileri içerir:

    • location,coğrafi kodlamalı 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 verileri depolar. Aşağıdaki değerler şu anda desteklenmektedir:
      • ROOFTOP, döndürülen sonucun coğrafi konumu tam olarak yansıttığını gösterir.
      • RANGE_INTERPOLATED döndürülen sonucun iki kesin nokta (ör. kavşaklar) arasına yerleştirilmiş yaklaşık bir görünümü (genellikle yol üzerinde) yansıttığını gösterir. İnterpolasyon sonuçları, genellikle çatı adresi coğrafi adresleri açık adres için kullanılamadığında döndürülür.
      • GEOMETRIC_CENTER döndürülen sonucun bir çoklu çizgi (ör. sokak) veya poligon (bölge) gibi bir sonucun geometrik merkezi olduğunu gösterir.
      • 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 parçası olan ancak görüntü alanında döndürülmemesi gereken Farallon Adaları'nı içerir.)

Adresler, tarayıcının tercih edilen dil ayarı kullanılarak Geocoder tarafından veya language parametresi kullanılarak API JavaScript'i yüklenirken belirtilen dil kullanılarak döndürülür. (Daha fazla bilgi için Yerelleştirme başlıklı makaleyi 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ının döndürdüğü 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 desteklenir ve döndürülür:

  • street_address, açık adresi tam olarak belirtir.
  • route, adlandırılmış bir rotayı belirtir (ör. "US 101").
  • intersection genellikle iki ana yolun kesişimsel bir kesişim noktasını gösterir.
  • political bir siyasi varlığı belirtir. Bu durum genellikle bir sivil yönetimin poligonunu gösterir.
  • country, ulusal siyasi tüzel kişiyi gösterir ve genellikle Geocoder tarafından döndürülen en yüksek sipariş türünü belirtir.
  • administrative_area_level_1, ülke düzeyinin altındaki birinci taraf sivil tüzel kişiyi belirtir. Amerika Birleşik Devletleri'nde bu idari düzeyler eyalettir. Tüm ülkeler bu yönetici düzeylerini göstermez. Çoğu durumda, admin_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 dayalı olduğundan bu garanti edilmez.
  • administrative_area_level_2, ülke düzeyinin altındaki ikinci dereceden bir tüzel kişiyi belirtir. Amerika Birleşik Devletleri'nde bu idari bölgeler ilçedir. Tüm ülkeler bu yönetici düzeylerini göstermez.
  • administrative_area_level_3, ülke düzeyinin altında üçüncü taraf bir sivil tüzel kişiyi belirtir. Bu tür, küçük bir sivil bölümü belirtir. Tüm ülkeler bu yönetici düzeylerini göstermez.
  • administrative_area_level_4, ülke düzeyinin altında dördüncü taraf bir sivil tüzel kişiyi belirtir. Bu tür, küçük bir sivil bölümü belirtir. Tüm ülkeler bu yönetici düzeylerini göstermez.
  • administrative_area_level_5, ülke düzeyinin beşinci sırada yer alan bir sivil tüzel kişiyi belirtir. Bu tür, küçük bir sivil bölümü belirtir. Tüm ülkeler bu yönetici düzeylerini göstermez.
  • administrative_area_level_6, ülke düzeyinin altındaki altıncı bir sivil tüzel kişiyi belirtir. Bu tür, küçük bir sivil bölümü belirtir. Tüm ülkeler bu yönetici düzeylerini göstermez.
  • administrative_area_level_7, ülke düzeyinin altındaki yedinci medeni tüzel kişiyi belirtir. Bu tür, küçük bir sivil bölümü belirtir. Tüm ülkeler bu yönetici düzeylerini göstermez.
  • colloquial_area, varlık için yaygın olarak kullanılan bir alternatif adı belirtir.
  • locality, birleştirilmiş bir şehir veya kasaba siyasi varlığını belirtir.
  • sublocality, bir konumda bulunan birinci derece sivil tüzel kişiyi belirtir. Bazı konumlar için şu ek türlerinden birini alabilirsiniz: sublocality_level_1 - sublocality_level_5. Her alt konum düzeyi bir tüzel kişidir. Sayı daha büyükse daha küçük bir coğrafi alan gösterilir.
  • neighborhood, adlandırılmış bir mahalleyi gösteriyor
  • premise, adlandırılmış bir konumu belirtir. Bu genellikle bir bina veya ortak ada sahip bina koleksiyonudur
  • subpremise, adlandırılmış bir konumun altındaki birinci taraf varlığını belirtir (genellikle ortak bir ada sahip bina koleksiyonu içindeki tek bir bina)
  • plus_code, enlem ve boylamdan türetilen kodlanmış bir konum referansını gösterir. Artı kodları, var olmayan yerlerde (binaların numaralanmadığı veya sokakların adlandırılmadığı) açık adreslerin yerine kullanılabilir. Ayrıntılar için https://plus.codes adresini inceleyin.
  • postal_code, ülke içindeki posta adresleri için kullanılan posta kodunu belirtir.
  • natural_feature, önemli bir doğal özelliği belirtir.
  • airport, bir havaalanını belirtir.
  • park, adlandırılmış bir parkı gösterir.
  • point_of_interest, ilgilenilen bir önemli yeri gösterir. Bu "ÖY'ler" genellikle "Empire State Binası" veya "Eyfel Kulesi" gibi başka bir kategoriye kolayca sığmayan belirgin yerel varlıklardır.

Boş tür listesi, belirli adres bileşeni için bilinen tür olmadığını gösterir (örneğin, Fransa'daki 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.

  • floor bir bina adresinin tabanını belirtir.
  • establishment, genellikle henüz sınıflandırılmamış bir yeri belirtir.
  • landmark, gezinme işlemine yardımcı olmak için yakındaki bir yeri referans olarak kullanır.
  • point_of_interest, ilgilenilen bir önemli yeri gösterir.
  • parking, bir otopark veya otopark 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ı 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", herhangi bir hata oluşmadığını gösterir. Adres başarıyla ayrıştırılır ve en azından bir coğrafi kodlama döndürülür.
  • "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ının mevcut olmayan bir address iletmesi halinde gerçekleşebilir.
  • "OVER_QUERY_LIMIT", kotanızı aştığınızı belirtir.
  • "REQUEST_DENIED", isteğinizin reddedildiğini belirtir. Web sayfasının coğrafi kodlamayı 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şime geçilirken bir sorun olduğunu belirtir. Tekrar denerseniz istek başarılı olabilir.

Bu örnekte, bir adresin coğrafi kodunu belirler 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 aktarıldığını 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ındaki (sınırlayıcı kutu olarak ifade edilir) sonuçları tercih etmesini söyleyebilirsiniz. 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ıklandırmanı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 dahil edilebilirler.

Ö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 şehrinin San Fernando Vadisi için sınırlayıcı kutu tanımlayan bir bounds parametresi belirtilmesi, bu coğrafi kodda ilgili konumda "Winnetka" adlı mahallenin döndürülmesine 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 Kodlarına Ağırlık Verme

Coğrafi Kodlama Hizmeti'ni region parametresini kullanarak açıkça belirli bir bölgeye yönelik sonuçları döndürecek şekilde ayarlayabilirsiniz. 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'lerle ("üst düzey alan") eşlenir. Örneğin, "co.uk" içindeki "uk" gibi iki karakterli değerler. Bazı durumlarda region etiketi, bazen ccTLD değerlerinden farklı olan ISO-3166-1 kodlarını da destekler (örneğin, "İngiltere" için GB).

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 etiketleri (Unicode CLDR biçimi) kullanın. Diğer tüm girişlerde hatalar ortaya çıkar.
  • 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 için coğrafi kodlama istekleri gönderilebilir. Ağırlıklandırmanın yalnızca belirli bir alan için sonuçları tercih ettiğini unutmayın. Bu alanın dışında daha alakalı sonuçlar varsa sonuçlar dahil edilebilir.

Örneğin, "Toledo" için bir coğrafi kod, Coğrafi Kodlama Hizmetinin varsayılan alanı ABD olarak ayarlandığından bu 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" için 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

Bir bileşen filtresi kullanarak Coğrafi Kodlama Hizmeti'ni belirli bir alanla sınırlı adres sonuçlarını döndürecek şekilde ayarlayabilirsiniz. componentRestrictions parametresinde filtreyi 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 tüm bileşen filtreleriyle eşleşen sonuçları döndürür. Yani filtre özelliklerini VEYA olarak değil, VE olarak değerlendirir.

Bileşen filtresi, aşağıdaki öğelerin en az birinden oluşur:

  • route bir rotanın uzun veya kısa adıyla eşleşiyor.
  • locality, konum ve alt konum türleriyle eşleşiyor.
  • administrativeArea tüm idari bölge seviyeleriyle eşleşir.
  • postalCode posta kodları ve posta kodu önekleriyle eşleşiyor.
  • country, bir ülke adı 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 ilgili ISO kodu kullanılırken en iyi şekilde çalışır.

Aşağıdaki örnekte, country ve postalCode ölçütlerine göre filtrelemek için componentRestrictions parametresi 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);
  }
});
}

Ters Coğrafi Kodlama (Adres Arama)

Coğrafi kodlama terimi, genellikle okunabilir bir adresi haritadaki bir konuma çevirmeyi ifade eder. Haritadaki bir konumu, kullanıcıların okuyabileceği bir adrese dönüştürmek, tersini yapmak için ters coğrafi kodlama olarak bilinir.

Metin (address) sağlamak yerine location parametresinde virgülle ayrılmış enlem/boylam çifti sağlayın.

Aşağıdaki örnekte bir enlem/boylam değeri coğrafi olarak kodlanır ve haritayı bu konuma ortalayarak biçimlendirilmiş adresin yer aldığı bir bilgi penceresi açılır:

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öster

Örneği Deneyin

Önceki örnekte, results[0]'i seçerek ilk sonucu gösterdiğimizi unutmayın. Ters coğrafi kodlayıcı genellikle birden fazla sonuç döndürür. Coğrafi kodlamalı adresler yalnızca posta adresleri değil, bir konuma coğrafi ad vermenin herhangi bir yoludur. Örneğin, Chicago şehrindeki bir noktanın coğrafi kodlaması yapılırken, coğrafi kodlamalı nokta açık adres, şehir (Chicago), eyalet (Illinois) veya ülke (ABD) olarak etiketlenebilir. Bunların tümü coğrafi kodlamanın adresleridir. Ters coğrafi kodlayıcı tüm bu sonuçları döndürür.

Ters coğrafi kodlayıcı, siyasi tüzel kişiler (ülkeler, iller, şehirler ve mahalleler), açık adresleri ve posta kodlarıyla eşleşir.

Yukarıdaki sorgunun döndürebileceği adres listesinin bir ö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ıralanır. Bu durumda olduğu gibi, daha açık adres genellikle en belirgin sonuçtur. En spesifik sokak adresinden mahalle, şehir, ilçe, eyalet gibi daha az spesifik siyasi tüzel kişilere farklı adres türleri döndürdüğümüzü unutmayın. Daha genel bir adresle eşleştirmek istiyorsanız results[].types alanını incelemek isteyebilirsiniz.

Not: Ters coğrafi kodlama kesin bir bilim değildir. Coğrafi kodlayıcı, belirli bir tolerans dahilinde en yakın adreslenebilir yeri 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, tutturulan bir noktanın adresini almak için Roads API tarafından döndürülen placeId öğesini sağlayabilirsiniz. Yer kimlikleri hakkında daha fazla bilgi için yer kimliğine genel bakış bölümünü inceleyin.

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

  • address
  • latLng
  • location
  • componentRestrictions

Aşağıdaki örnek bir yer kimliğini kabul eder, karşılık gelen adresi bulur ve haritayı bu konuma ortalar. İ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 göster

Örneği Deneyin