Coğrafi Kodlama Hizmeti

Genel bakış

Coğrafi kodlama, adresleri (1700 Amphitheatre Parkway, Mountain View, CA gibi) coğrafi koordinatlara (ör. enlem 37.423021 ve boylam -122.083739) dönüştürme işlemidir. İşaretçileri yerleştirir veya haritayı konumlandırabilirsiniz.

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

Belirli bir yer kimliğine ait adresi bulmak için coğrafi kodlamayı da kullanabilirsiniz.

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

Başlarken

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

Etkin API'lerinizin listesini görüntülemek için:

  1. Google Cloud Console'a gidin.
  2. Bir proje seçin düğmesini tıklayın, ardından Maps JavaScript API için ayarladığınız projeyi seçin ve 'ı tıklayın.
  3. Kontrol Paneli'ndeki API listesinde Geocoding API'yi bulun.
  4. API'yi listede görüyorsanız her şey hazır demektir. API listelenmiyorsa etkinleştirin:
    1. Kitaplık sekmesini görmek için sayfanın üst kısmından API'Yİ ETKİNLEŞTİR'i seçin. Alternatif olarak, sol kısımdaki menüden Kitaplık'ı seçin.
    2. Geocoding API'yi arayın, ardından sonuç listesinden API'yi seçin.
    3. ETKİNLEŞTİR'i seçin. İşlem tamamlandığında Geocoding API, Kontrol Paneli'nde API listesinde 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 Coğrafi Kodlama hizmetinin kullanımıyla 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 bakın.

Politikalar

Coğrafi kodlama hizmetinin kullanımı, Coğrafi Kodlama API'si 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ığında yürütme işleminin yürütülmesi için 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 nesnesi aracılığıyla erişirsiniz. Geocoder.geocode() yöntemi, coğrafi kodlama hizmetine bir istek başlatır. Bu hizmet, giriş terimlerini içeren bir GeocoderRequest nesne değişmez değeri ve yanıt alındığında yürütülecek bir geri çağırma yöntemi geçirir.

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
}

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

  • address — Coğrafi kodlamasını yapmak istediğiniz adres.
    veya
    location — İnsanın okuyabileceği en yakın adresi elde etmek istediğiniz LatLng (veya LatLngLiteral). Coğrafi kodlama bir coğrafi coğrafi kodlama uygular. Daha fazla bilgi için Ters Coğrafi Kodlama bölümüne bakın.
    veya
    placeId — İnsanı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 kodlamaya dayalı sonuçların daha belirgin şekilde ön plana çıkarılacağı LatLngBounds. bounds parametresi, yalnızca coğrafi kodlama işleminin sonuçlarını etkiler, tam olarak kısıtlanmaz. 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. Bileşen filtreleme hakkında daha fazla bilgiyi aşağıda bulabilirsiniz.
  • region — İki karakterli (sayısal olmayan) Unicode bölge alt etiketi olarak belirtilen bölge kodu. Çoğu durumda, bu etiketler doğrudan bilinen ccTLD'lerle ("üst düzey alan") iki karakterli değerlerle eşlenir. region parametresi, yalnızca coğrafi kodlama işleminin sonuçlarını etkiler, tam olarak kısıtlanmaz. 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ülecek bir geri çağırma yöntemi gerektirir. Bu geri çağırma, results ve status kodlarını aynı sırada 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ü belirleyen bir veya daha fazla etiket kümesi içerir. Örneğin, "Ankara"nın coğrafi kodu, "Ankara"nın bir şehir olduğunu belirten "bölge" ve aynı zamanda, bir siyasi tüzel kişi olduğunu belirten "siyasi" değerini döndürür. Aşağıda adres türleri ve adres bileşeni türleri hakkında daha fazla bilgi edinebilirsiniz.
  • formatted_address, bu konumun kullanıcılar tarafından okunabilen adresini içeren bir dizedir.

    Bu adres genellikle posta adresiyle eşdeğerdir. Lisanslama kısıtlamaları nedeniyle, Birleşik Krallık gibi bazı ülkelerin gerçek posta adreslerinin dağıtımına izin vermediğ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" (cadde numarası), "8th Avenue" (rota), "New York" (şehir) ve "NY" (ABD eyaleti).

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

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

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

    • types[], adres bileşeninin türünü belirten bir dizidir. Desteklenen türlerin listesine bakın.
    • long_name, Geocoder tarafından döndürülen adres bileşeninin tam metin açıklaması veya adıdır.
    • short_name, adres bileşeni için kullanılan kısaltılmış bir 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 noktaları göz önünde bulundurun:

    • Adres bileşenleri dizisi, formatted_address öğesinden daha fazla bileşen içerebilir.
    • Dizi, formatted_address'da yer alan tüzel kişiler dışında, adres içeren tüm siyasi tüzel kişileri kapsamaz. Belirli bir adres içeren tüm siyasi varlıkları almak için, adresin enlem/boylamını isteğe parametre olarak ileterek tersine coğrafi kodlama kullanmanız gerekir.
    • Yanıt biçiminin istekler arasında aynı olacağı garanti edilmez. Özellikle address_components sayısı, talep edilen adrese göre değişir ve aynı adres için zamanla 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 edinebilirsiniz.

  • partial_match, coğrafi kodlama sahibinin orijinal istek için tam eşleşme döndürmediğini ancak istenen adresin bir kısmıyla eşleşebildiğini belirtir. Yazım yanlışları ve/veya eksik adres için ilk isteği inceleyebilirsiniz.

    Kısmi eşleşmeler çoğunlukla, talebi ilettiğiniz konum içinde 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, İngiltere" hem Henry Street hem de Henrietta Street için kısmi bir eşleşme döndürür. Bir istek yanlış yazılan 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_idbir yerin benzersiz tanımlayıcısıdır ve diğer Google API'leriyle kullanılabilir. Örneğin, place_id numarasıyla yerel bir işletmenin telefon numarası, çalışma saatleri, kullanıcı yorumları gibi bilgilerini elde etmek için Google Places API kitaplığını kullanabilirsiniz. Yer kimliğine genel bakış bölümünü inceleyin.
  • postcode_localities[], bir posta kodundaki tüm şehirleri belirten bir dizidir ve yalnızca sonuçta birden fazla şehir içeren posta kodu bulunduğunda mevcuttur.
  • 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üreceğimizi unutmayın.
    • location_type, belirtilen konumla ilgili ek verileri depolar. Şu anda aşağıdaki değerler 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 tam nokta (kesişim gibi) arasındaki bir yaklaşık değeri (genellikle yol üzerinde) yansıttığını belirtir. Aralıklı sonuçlar, genellikle açık adres için çatı coğrafi kodlamaları 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 gösterir.

    • viewport, döndürülen sonuç için önerilen görüntü alanını depolar.
    • bounds (isteğe bağlı olarak, döndürülür) döndürülen sonucu 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, şehrin parçası olan, ancak görüntü alanında döndürülmemesi gereken Farallon Adaları'nı da 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 dille 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 kodlama uzmanı 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, coğrafi kodlama uzmanı 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 belirtir.
  • route, adlandırılmış bir rotayı belirtir (ör. "US 101").
  • intersection genellikle iki ana yoldan oluşan ana kesişimi belirtir.
  • political, siyasi bir varlığı belirtir. Genellikle bu, bir sivil yönetimin poligonunu gösterir.
  • country, ulusal siyasi varlığı belirtir ve genellikle Geocoder tarafından döndürülen en yüksek sipariş türüdür.
  • administrative_area_level_1, ülke düzeyinin altındaki birinci taraf sivil tüzel kişiyi belirtir. ABD'de bu yönetim düzeyleri eyalet düzeyindedir. Bu yönetim düzeyleri tüm ülkeler tarafından görülemez. Çoğu durumda, admin_area_level_1 kısa adları, ISO 3166-2 alt bölümleriyle ve yaygın olarak kullanılan diğer listelerle yakından eşleşir. Ancak coğrafi kodlama sonuçlarımız çeşitli sinyalleri ve konum verilerini temel aldığından bu garanti edilmez.
  • administrative_area_level_2, ülke düzeyinin altında ikinci taraf sivil kuruluşu belirtir. Amerika Birleşik Devletleri'nde bu idari bölgeler ilçedir. Bu yönetim düzeyleri tüm ülkeler tarafından görülemez.
  • administrative_area_level_3, ülke düzeyinin altında üçüncü taraf sivil kuruluşu belirtir. Bu tür, küçük bir hukuki bölümü gösterir. Bu idari düzey her ülke tarafından gösterilmemektedir.
  • administrative_area_level_4, ülke düzeyinin altında dördüncü taraf sivil kuruluşu belirtir. Bu tür, küçük bir hukuki bölümü gösterir. Bu idari düzey her ülke tarafından gösterilmemektedir.
  • administrative_area_level_5, ülke düzeyinin beşinci sırada yer alan bir tüzel kişi olduğunu belirtir. Bu tür, küçük bir hukuki bölümü gösterir. Bu idari düzey her ülke tarafından gösterilmemektedir.
  • administrative_area_level_6, ülke düzeyinin altında olan altıncı bir sivil tüzel kişiyi belirtir. Bu tür, küçük bir hukuki bölümü gösterir. Bu idari düzey her ülke tarafından gösterilmemektedir.
  • administrative_area_level_7, ülke düzeyinin altında yedinci düzey medeni tüzel kişiyi belirtir. Bu tür, küçük bir hukuki bölümü gösterir. Bu idari düzey her ülke tarafından gösterilmemektedir.
  • colloquial_area, varlık için yaygın olarak kullanılan bir alternatif adı belirtir.
  • locality, ilişkili şehir veya ilçe siyasi varlığını belirtir.
  • sublocality, bir mahallenin altındaki birinci taraf sivil tüzel kişiyi belirtir. Bazı konumlar için şu ek türlerinden birini alabilir: sublocality_level_1 - sublocality_level_5. Her semt, bir tüzel kişidir. Daha büyük sayılar, daha küçük bir coğrafi alanı belirtir.
  • neighborhood, adlandırılmış bir mahalleyi gösteriyor
  • premise, adlandırılmış bir konumu belirtir. Bu konum genellikle bir bina veya ortak ada sahip bir bina koleksiyonudur
  • subpremise, adlandırılmış bir konumun altındaki birinci taraf varlığını belirtir (genellikle aynı ada sahip bina koleksiyonundaki tek bir bina).
  • plus_code, enlem ve boylamdan türetilen kodlanmış bir konum referansını belirtir. Artı kodları, var olmayan yerlerde (binaların numaralandırılmamış veya sokakların adlandırılmamış olduğu) açık adresler yerine kullanılabilir. Ayrıntılar için https://plus.codes sayfasına bakın.
  • postal_code, ülke içindeki posta kodları için kullanılan posta kodunu belirtir.
  • natural_feature belirgin bir doğal özelliği belirtir.
  • airport, bir havaalanını gösteriyor.
  • park, park adını belirtir.
  • point_of_interest, adlandırılan bir önemli noktayı belirtir. Genellikle bu "ÖY'ler", "Empire State Binası" veya "Eyfel Kulesi" gibi başka bir kategoriye kolayca sığmayan önemli yerel varlıklardır.

Boş türler listesi, belirli bir 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şiklik gösterebilir.

  • floor, bina adresinin tabanını belirtir.
  • establishment genel olarak henüz kategorize edilmemiş bir yeri belirtir.
  • landmark, gezinme işlemine yardımcı olmak için referans olarak kullanılan yakındaki bir yeri belirtir.
  • point_of_interest, adlandırılan bir önemli noktayı belirtir.
  • parking bir park yerini 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 alanların gruplandırıldığını gösterir.
  • room, 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 olmadığını belirtir. Adres başarıyla ayrıştırıldı ve en az bir coğrafi kod döndürüldü.
  • "ZERO_RESULTS", coğrafi kodlamanın başarılı olduğunu ancak hiçbir sonuç döndürmediğini belirtir. Bu durum, coğrafi kodlayıcının var olmayan address öğesi iletilmiş olması durumunda oluşabilir.
  • "OVER_QUERY_LIMIT", kotanızı aştığınızı belirtir.
  • "REQUEST_DENIED", isteğinizin reddedildiğini belirtir. Web sayfasının coğrafi kodlayıcıyı kullanmasına izin verilmiyor.
  • "INVALID_REQUEST" genellikle sorgunun (address, components veya latlng) eksik olduğunu gösterir.
  • "UNKNOWN_ERROR", bir sunucu hatası nedeniyle isteğin işlenemediğini gösterir. Tekrar denemeniz durumunda istek başarılı olabilir.
  • "ERROR", isteğin zaman aşımına uğradığını veya Google sunucularıyla iletişim kurmada sorun olduğunu gösterir. Tekrar denemeniz durumunda 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 geçirildiğ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'nin 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çinde bounds parametresini ayarlayarak yapabilirsiniz. Ön yargının yalnızca sınırların içindeki sonuçları tercih ettiğini unutmayın. Bu sınırlar dışında daha alakalı sonuçlar varsa sonuçlar dahil edilebilir.

Örneğin, "Winnetka" için coğrafi kodlama genellikle Chicago'nun bu banliyösini 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 Vadisi'nde bulunan sınırlayıcı kutuyu tanımlayan bir bounds parametresi belirtmek, söz konusu konumda bu coğrafi konumda "Winnetka" adlı mahallenin döndürülmesini sağlar:

{
  "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 belirli bir bölgeye ağırlık verilmiş 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"deki "uk" gibi iki karakterlik değerler. Bazı durumlarda region etiketi, bazen ccTLD değerlerinden farklı olan ISO-3166-1 kodlarını da (örneğin, "İngiltere" için GB) destekler.

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 yol açabilir.
  • Yalnızca iki karakterlik bölge alt etiketleri (Unicode CLDR biçimi) kullanın. Tüm diğer 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 için coğrafi kodlama isteği gönderilebilir. Taraflı tutmanın yalnızca belirli bir alan adına ait sonuçları tercih ettiğini unutmayın. Bu alan dışında daha alakalı sonuçlar varsa sonuçlar dahil edilebilir.

Örneğin, Geocoding Hizmeti'nin varsayılan alanı ABD olarak ayarlandığı için "Toledo"nun coğrafi kodlama 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"
}

"Toledo" için region alanı 'es' (İspanya) olarak ayarlanmış 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ı 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şleştirme 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 spesifikasyonlarını VEYA olarak değil, VE olarak değerlendirir.

Bileşen filtresi, aşağıdaki öğelerin biri veya birkaçından oluşur:

  • route, bir rotanın uzun veya kısa adıyla eşleşiyor.
  • locality, konum ve alt konum türleriyle eşleşir.
  • administrativeArea, idari bölgenin tüm düzeyleriyle eşleşiyor.
  • postalCode posta kodları ve posta kodu ön ekleriyle eşleşiyor.
  • 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 ilgili ISO kodunu kullanırken en iyi sonucu verir.

Aşağıdaki örnekte, country ve postalCode öğelerine göre filtreleme yapmak için componentRestrictions parametresi kullanılmaktadır:

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 bir kullanıcının okuyabileceği bir adresin haritadaki bir konuma çevrilmesini ifade eder. Haritadaki bir konumu kullanıcılar tarafından okunabilir bir adrese çevirerek ters çevirme işlemini yapma sürecine ters coğrafi kodlama denir.

Metin 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 haritayı bu konuma ortalayarak biçimlendirilmiş adresi içeren 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 Dene

Önceki örnekte, results[0]'yi seçerek ilk sonucu gösterdiğimizi unutmayın. Ters coğrafi kodlama genellikle birden fazla sonuç döndürür. Coğrafi kodlamalı adresler yalnızca posta adresleri değildir. Bir yeri coğrafi olarak adlandırmanın bir yoludur. Örneğin, Chicago şehrinde bir noktanın coğrafi kodlamasını yaparken coğrafi kodlamalı nokta şehir, (Chicago), eyaleti (Illinois) veya ülke (Amerika Birleşik Devletleri) olarak etiketlenebilir. Bunların tümü coğrafi kodlamacının adresleridir. Ters coğrafi kodlayıcı tüm bu sonuçları döndürür.

Ters coğrafi kodlama, siyasi tüzel kişiler (ülkeler, iller, şehirler ve mahalleler), açık adresler 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 seyrek eşleşme sırasına göre döndürülür. Bu durumda genellikle en belirgin sonuç, daha açık adrestir. En spesifik sokak adresinden mahalleler, şehirler, ilçeler, eyaletler gibi daha az politik varlıklara kadar farklı türlerde adresler döndürdüğümüzü unutmayın. Daha genel bir adresle eşleştirmek istiyorsanız results[].types alanını inceleyebilirsiniz.

Not: Ters coğrafi kodlama tam bir bilim değildir. Coğrafi kodlama uzmanı, 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, sabitlenmiş bir noktanın adresini almak için Roads API tarafından döndürülen placeId bilgisini sağlayabilirsiniz. Yer kimlikleri hakkında daha fazla bilgi için yer kimliğine genel bakış konusuna bakın.

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

  • address
  • latLng
  • location
  • componentRestrictions

Aşağıdaki örnek bir yer kimliğini kabul eder, ilgili adresi bulur ve haritayı bu konuma ortalar. Ayrıca, ilgili yerin biçimlendirilmiş adresini gösteren bir bilgi penceresi de açılır:

TypeScript

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

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

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

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

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

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

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

JavaScript

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

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

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

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

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

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

window.initMap = initMap;
Örneği göster

Örneği Dene