Coğrafi Kodlama Hizmeti

Not: Sunucu tarafı kitaplıklar
Avrupa Ekonomik Alanı'ndaki (AEA) geliştiriciler

Genel Bakış

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

Tersine coğrafi kodlama, coğrafi koordinatları kullanıcı tarafından okunabilir bir adrese dönüştürme işlemidir (Tersine 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, kullanıcı girişinden dinamik olarak coğrafi kodlama ve tersine coğrafi kodlama yapmak için bir Geocoder sınıfı sağlar. Bunun yerine statik, bilinen adresleri coğrafi olarak kodlamak istiyorsanız Geocoding web hizmeti'ne bakın. Geocoder API'sini, yazarken arama, posta adresi doğrulama veya saat dilimi arama için diğer Google Haritalar Platformu API'leriyle karşılaştırmak istiyorsanız Doğru adres veya koordinat API'sini seçme başlıklı makaleyi inceleyin.

Başlayın

Maps JavaScript API'deki Geocoding hizmetini kullanmadan önce Google Cloud Console'da, Maps JavaScript API için ayarladığınız projede 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. Proje seçin düğmesini tıklayın, ardından Maps JavaScript API için oluşturduğunuz projeyi seçip Aç'ı tıklayın.
  3. Kontrol paneli'ndeki API listesinde Geocoding API'yi bulun.
  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ında API'Yİ ETKİNLEŞTİR'i seçin. Alternatif olarak, soldaki menüden Kitaplık'ı seçin.
    2. Geocoding API'yi arayın ve sonuç listesinden seçin.
    3. ETKİNLEŞTİR'i seçin. İşlem tamamlandığında Geocoding API, Kontrol Paneli'ndeki API'ler listesinde görünür.

Haritanız görüntülenmiyorsa veya tarayıcı konsolu bir API anahtarı ya da etkinleştirme hatası kaydediyorsa Sorun giderme ve Hata mesajları bölümlerine bakın.

Fiyatlandırma ve politikalar

Fiyatlandırma

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

Politikalar

Geocoding hizmetini kullanımınız Geocoding API Politikaları'na uygun olmalıdır.

Geocoding Requests

Coğrafi Kodlama hizmetine erişim eşzamansızdır ve harici bir sunucuya çağrı yapılmasını gerektirir. Bu nedenle, geocode yöntemi, istek tamamlandığında çözümlenen bir promise döndürür. Çözümlendikten sonra yanıtı işlemek için .then() veya await kullanabilirsiniz.

re

Google Maps API coğrafi kodlama hizmetine kodunuzun içinden google.maps.Geocoder oluşturucu nesnesini kullanarak erişirsiniz. Geocoder.geocode() yöntemi, coğrafi kodlama hizmetine bir istek gönderir ve bu isteğe, giriş terimlerini içeren bir GeocoderRequest nesne değişmez değeri ile yanıt alındığında yürütülecek bir geri çağırma yöntemi iletir.

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 olarak kodlamak istediğiniz adres.
         veya
    location: En yakın, okunabilir adresi almak istediğiniz LatLng (veya LatLngLiteral). Coğrafi kodlayıcı, tersine 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: En yakın, okunabilir adresini almak istediğiniz yerin kimliği. Bir yer kimliği için adres alma hakkında daha fazla bilgi edinin.

İsteğe bağlı parametreler:

  • bounds: Coğrafi kod sonuçlarının daha belirgin şekilde önceliklendirileceği LatLngBounds. bounds parametresi, coğrafi kodlayıcıdan gelen sonuçları tamamen kısıtlamaz, yalnızca etkiler. Görüntü alanı ağırlıklandırması hakkında daha fazla bilgi için aşağıya bakın.
  • componentRestrictions: Sonuçları belirli bir alanla sınırlamak için kullanılır. Bileşen filtreleme hakkında daha fazla bilgi için aşağıya bakın.
  • region: İki karakterli (sayısal olmayan) bir Unicode bölge alt etiketi olarak belirtilen bölge kodu. Çoğu durumda bu etiketler, doğrudan tanıdık ccTLD ("üst düzey alan") iki karakterli değerleriyle eşleşir. region parametresi, coğrafi kodlayıcıdan gelen sonuçları tamamen kısıtlamaz, yalnızca etkiler. Bölge kodu ağırlığı hakkında daha fazla bilgi için aşağıya bakın.
  • 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ıttaki ZERO_RESULT durumunda vaadi yerine getirin. Sıfır coğrafi kodlama sonucu olsa bile ek yanıt düzeyi alanları döndürülebileceğinden bu durum tercih edilebilir. Daha fazla bilgi için Sıfır Sonuçta Karşılama bölümüne bakın.

Coğrafi Kodlama Yanıtları

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

Coğrafi Kodlama Sonuçları

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

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

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

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

    Bu adres genellikle posta adresiyle aynıdır. Birleşik Krallık gibi bazı ülkelerde, lisans 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 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. Adres bileşeni için bilinen bir tür yoksa adres bileşeninin tür dizisi boş olabilir. API, gerektiğinde yeni tür değerleri ekleyebilir. Daha fazla bilgi için Adres türleri ve adres bileşeni türleri başlıklı makaleyi inceleyin.
    • long_name, Geocoder 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şeninin long_name değeri "Alaska" ve short_name değeri, 2 harfli posta kısaltması kullanılarak "AK" olabilir.

    address_components[] dizisiyle ilgili aşağıdaki bilgileri göz önünde bulundurun:

    • Adres bileşenleri dizisi, formatted_address değerinden daha fazla bileşen içerebilir.
    • Dizi, formatted_address içinde yer alanlar dışında, adres içeren tüm siyasi varlıkları içermeyebilir. Belirli bir adresi içeren tüm siyasi varlıkları almak için tersine coğrafi kodlama kullanmanız ve adresin enlem/boylam bilgisini 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. Belirli bir bileşen sonraki bir yanıtta eksik olabilir.

    Adres türleri ve adres bileşeni türleri hakkında daha fazla bilgi için aşağıya bakın.

  • 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. Orijinal istekte yazım hataları ve/veya eksik adres olup olmadığını inceleyebilirsiniz.

    Kısmi eşleşmeler genellikle istekte ilettiğiniz bölgede bulunmayan açık adresler için gerçekleşir. Bir istek aynı bölgedeki 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 eşleşme döndürür. Bir istekte yanlış yazılmış bir adres bileşeni varsa coğrafi kodlama hizmetinin alternatif bir adres önerebileceğini unutmayın. Bu şekilde tetiklenen öneriler de kısmi eşleşme olarak işaretlenir.

  • place_id, bir yerin benzersiz tanımlayıcısıdır ve diğer Google API'leriyle kullanılabilir. Örneğin, Google Places API kitaplığıyla place_id kullanarak yerel bir işletmenin telefon numarası, çalışma saatleri, kullanıcı yorumları ve diğer bilgileri gibi ayrıntılarını alabilirsiniz. Yer kimliğine genel bakış bölümünü inceleyin.
  • postcode_localities[], bir posta kodunda bulunan tüm yerleşimleri gösteren bir dizidir ve yalnızca sonuç birden fazla yerleşim içeren bir posta kodu olduğunda gösterilir.
  • geometry aşağıdaki bilgileri içerir:

    • location, coğrafi kodlu enlem, boylam değerini içerir. Bu konumun biçimlendirilmiş bir dize olarak değil, LatLng nesnesi olarak döndürüldüğünü unutmayın.
    • location_type, belirtilen konumla ilgili ek verileri depolar. Aşağıdaki değerler desteklenir:
      • ROOFTOP, döndürülen sonucun tam bir coğrafi kodu yansıttığını gösterir.
      • RANGE_INTERPOLATED döndürülen sonucun, iki kesin nokta (ör. kavşaklar) arasında enterpolasyonla hesaplanan bir yaklaşık değeri (genellikle bir yol üzerinde) yansıttığını gösterir. Ara değer hesaplamalı sonuçlar genellikle bir açık adres için çatı coğrafi kodları kullanılamadığında döndürülür.
      • GEOMETRIC_CENTER, döndürülen sonucun, çoklu çizgi (ör. sokak) veya çokgen (bölge) gibi bir sonucun geometrik merkezi olduğunu gösterir.
      • APPROXIMATE, döndürülen sonucun yaklaşık olduğunu gösterir.

    • viewport, döndürülen sonuç için önerilen görüntü alanını depolar.
    • bounds (isteğe bağlı olarak döndürülür), döndürülen sonucu tam olarak içerebilen LatLngBounds değerini 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ında döndürülmemesi gereken Farallon Adaları'nı içerir.)

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

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

Yanıttaki GeocoderResult içinde bulunan types[] dizisi, adres türünü gösterir. Adres türlerine örnek olarak açık adres, ülke veya siyasi bir varlık verilebilir. GeocoderAddressComponent'teki types dizisi, adresin her bir bölümünün türünü gösterir. Bina numarası veya ülke buna örnek olarak verilebilir.

Adreslerin birden fazla türü olabilir. Türler "etiket" olarak kabul edilebilir. Örneğin, birçok şehir political ve locality türleriyle etiketlenir.

Aşağıdaki türler desteklenir ve hem adres türü hem de adres bileşeni türü dizilerinde döndürülür:

Adres Türü Açıklama
street_address Tam açık adres.
route Adlandırılmış bir rota (ör. "US 101").
intersection Genellikle iki ana yolun kesiştiği büyük bir kavşak.
political Siyasi bir tüzel kişi. Genellikle bu tür, bir sivil idarenin poligonunu gösterir.
country Ulusal siyasi varlık. Genellikle Coğrafi Kodlayıcı tarafından döndürülen en yüksek düzeydeki türdür.
administrative_area_level_1 Ülke düzeyinin altındaki birinci dereceden idari bölge. Amerika Birleşik Devletleri'nde bu idari düzeyler eyaletlerdir. Bu idari düzeyler bazı ülkelerde kullanılmaz. Çoğu durumda administrative_area_level_1 kısa adları, ISO 3166-2 alt bölümleri ve yaygın olarak kullanılan diğer listelerle büyük ölçüde eşleşir. Ancak coğrafi kodlama sonuçlarımız çeşitli sinyallere ve konum verilerine dayandığından bu durum garanti edilmez.
administrative_area_level_2 Ülke düzeyinin altındaki ikinci dereceden idari bölge. Amerika Birleşik Devletleri'nde bu idari düzeyler ilçelerdir. Bu idari düzeyler bazı ülkelerde kullanılmaz.
administrative_area_level_3 Ülke düzeyinin altındaki üçüncü düzey idari bölge. Bu tür, küçük bir idari bölgeyi gösterir. Bu idari düzeyler bazı ülkelerde kullanılmaz.
administrative_area_level_4 Ülke düzeyinin altındaki dördüncü düzey idari bölge. Bu tür, küçük bir idari bölgeyi gösterir. Bu idari düzeyler bazı ülkelerde kullanılmaz.
administrative_area_level_5 Ülke düzeyinin altındaki beşinci düzey idari bölge. Bu tür, küçük bir idari bölgeyi gösterir. Bu idari düzeyler bazı ülkelerde kullanılmaz.
administrative_area_level_6 Ülke düzeyinin altındaki altıncı düzey idari bölge. Bu tür, küçük bir idari bölgeyi gösterir. Bu idari düzeyler bazı ülkelerde kullanılmaz.
administrative_area_level_7 Ülke düzeyinin altındaki yedinci dereceden idari bölge. Bu tür, küçük bir idari bölgeyi gösterir. Bu idari düzeyler bazı ülkelerde kullanılmaz.
colloquial_area Varlığın yaygın olarak kullanılan alternatif adı.
locality Anonim bir şehir veya kasaba siyasi kuruluşu.
sublocality Bir yerleşim yerinin altındaki birinci dereceden idari bölge. Bazı konumlarda ek türlerden biri (sublocality_level_1 - sublocality_level_5) kullanılabilir. Her alt semt düzeyi bir sivil tüzel kişidir. Daha büyük sayılar daha küçük bir coğrafi alanı gösterir.
neighborhood Adlandırılmış bir mahalle.
premise Adlandırılmış bir konum. Genellikle bir bina veya ortak adı olan bir bina grubudur.
subpremise Tesis düzeyinin altında, adreslenebilir bir varlık (ör. apartman dairesi, birim veya süit).
plus_code Enlem ve boylamdan türetilen, kodlanmış bir konum referansı. Plus Code'lar, açık adreslerin bulunmadığı yerlerde (binaların numaralandırılmadığı veya sokakların adlandırılmadığı yerler) açık adreslerin yerine kullanılabilir. Ayrıntılar için https://plus.codes adresini ziyaret edin.
postal_code Ülke içinde posta göndermek için kullanılan posta kodu.
natural_feature Önemli bir doğal özellik.
airport Havaalanı.
park Adlandırılmış bir park.
point_of_interest Adlandırılmış önemli yer. Genellikle bu "ÖY"ler, "Empire State Binası" veya "Eyfel Kulesi" gibi başka bir kategoriye kolayca uymayan, öne çıkan yerel öğelerdir.

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

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

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

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

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

Durum Kodları

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

  • "OK", hata oluşmadığını, adresin başarıyla ayrıştırıldığını ve en az bir coğrafi kodun döndürüldüğünü gösterir.
  • "ZERO_RESULTS", coğrafi kodun başarılı olduğunu ancak sonuç döndürmediğini gösterir. Coğrafi kodlayıcıya mevcut olmayan bir address iletildiğinde bu durum ortaya çıkabilir.
  • "OVER_QUERY_LIMIT", kotanızı aştığınızı gösterir.
  • "REQUEST_DENIED", isteğinizin reddedildiğini gösterir. Web sayfasının coğrafi kodlayıcıyı kullanmasına izin verilmiyor.
  • "INVALID_REQUEST" genellikle sorgunun (address, components veya latlng) eksik olduğunu 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 bağlantı kurulurken bir sorun oluştuğunu gösterir. Tekrar denerseniz istek başarılı olabilir.

Coğrafi Kodlama Örneği

Aşağıdaki örnekte, bir adresin coğrafi kodlaması ve döndürülen enlem ve boylam değerlerine bir işaretçi yerleştirilmesi gösterilmektedir. Coğrafi kodlama sonucu, bir Promise kullanılarak işlenir. Haritada herhangi bir yeri tıklayarak o konumdaki adresi coğrafi olarak kodlayın.

TypeScript

async function geocode(request: google.maps.GeocoderRequest) {
    clear();
    const { LatLng } = await google.maps.importLibrary('core');

    try {
        const response = await geocoder.geocode(request);
        const { results } = response;

        innerMap.setCenter(results[0].geometry.location);
        marker.position = new LatLng(results[0].geometry.location);
        mapElement.append(marker);
        responseDiv.style.display = 'block';
        responsePre.innerText = JSON.stringify(response, null, 2);
        return results;
    } catch (e) {
        alert(
            'Geocode was not successful for the following reason: ' + String(e)
        );
    }
}

JavaScript

async function geocode(request) {
    clear();
    const { LatLng } = await google.maps.importLibrary('core');

    try {
        const response = await geocoder.geocode(request);
        const { results } = response;

        innerMap.setCenter(results[0].geometry.location);
        marker.position = new LatLng(results[0].geometry.location);
        mapElement.append(marker);
        responseDiv.style.display = 'block';
        responsePre.innerText = JSON.stringify(response, null, 2);
        return results;
    } catch (e) {
        alert(
            'Geocode was not successful for the following reason: ' + String(e)
        );
    }
}

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

Görüntü Alanı Tercihi

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

Örneğin, "Winnetka" için bir coğrafi kod genellikle Chicago'nun şu 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'ın San Fernando Vadisi için sınırlayıcı kutu tanımlayan bir bounds parametresi belirtildiğinde bu coğrafi kod, söz konusu konumdaki "Winnetka" adlı mahalleyi döndürür:

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

Bölge kodu ağırlığı

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

region parametresini kullanırken:

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

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

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

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

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

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

Bileşen Filtreleme

Geocoding Service'i, bileşen filtresi kullanarak adres sonuçlarını belirli bir alanla kısıtlayacak ş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 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 öğelerden birini veya daha fazlasını içerir:

  • route, bir rotanın uzun veya kısa adıyla eşleşir.
  • locality, yerleşim yeri ve alt yerleşim yeri türleriyle eşleşir.
  • administrativeArea, tüm bağlı olduğu yer 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ı kullanır ve filtreleme, ülkenin ilgili 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ımı gösterilmektedir:

async function codeAddress(request: google.maps.GeocoderRequest) {
    clear();
    geocoder.geocode({
        componentRestrictions: {
            country: 'AU',
            postalCode: '2000'
        }
    })
    .then((result) => {
        const { results } = result;
        innerMap.setCenter(results[0].geometry.location);
        let marker = new google.maps.marker.AdvancedMarkerElement({
            map: innerMap,
            position: results[0].geometry.location
        });
    })
    .catch((e) => {
        alert('Geocode was not successful for the following reason: ' + e);
    });
};

Sıfır Sonuçta Karşılama

Tersine coğrafi kodlama için taahhüt varsayılan olarak status=ZERO_RESULTS tarihinde bozulur. Ancak bu durumda, plus_code ve address_descriptor ek yanıt düzeyi alanları doldurulabilir. fulfillOnZeroResults parametresi için true değeri sağlanırsa bu durumda doldurulur. fulfillOnZeroResults parametresi için true değeri sağlanırsa promise bozulmaz ve varsa bu ek alanlara promise'den erişilebilir.

Aşağıda, Antarktika'daki bir enlem/boylam için bu davranışa dair bir örnek verilmiştir. Tersine coğrafi kodlama sonucu olmasa bile fulfillOnZeroResults=true değerini ayarlarsak Plus Code'u 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: ${error}`);
    });
}

Adres Tanımlayıcılar

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

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

Yerlerin coğrafi kodlamasıyla ilgili örnek

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

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

Tersine coğrafi kodlama örneği

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

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

Adres Tanımlayıcı Örneği

Örnek bir address_descriptor aşağıda verilmiştir.

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

Her address_descriptor nesnesinde iki dizi vardır: landmarks ve areas. landmarks dizisi, istenen koordinata yakınlık, ö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 yerler sonucunun yer kimliğidir. Yer kimliğine genel bakış bölümünü inceleyin.
  • display_name, önemli noktanın görünen adıdır ve language_code ile text değerlerini içerir.
  • straight_line_distance_meters, giriş koordinatı ile önemli nokta sonucu arasındaki metre cinsinden noktadan noktaya mesafedir.
  • travel_distance_meters, giriş koordinatı ile önemli nokta sonucu arasında yol ağı kullanılarak (yol kısıtlamaları dikkate alınmadan) kat edilen metre cinsinden mesafedir.
  • spatial_relationship, giriş koordinatı ile önemli nokta sonucu arasındaki tahmini ilişkidir:
    • Aşağıdakilerden 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".
    • "BESIDE" (giriş koordinatı, önemli noktaya veya önemli noktanın erişim noktasına doğrudan bitişik olduğunda).
    • "ACROSS_THE_ROAD", giriş koordinatı rotanın diğer tarafındaki önemli noktanın tam karşısındaysa.
    • "DOWN_THE_ROAD", giriş koordinatı önemli yerle aynı rota üzerindeyse kullanılır. "BESIDES" veya "ACROSS_THE_ROAD" kullanılmaz.
    • Giriş koordinatı, önemli nokta ile dikey bir rota üzerindeyse (tek bir dönüşle sınırlı) "AROUND_THE_CORNER".
    • "BEHIND", giriş koordinatı önemli noktaya mekansal olarak yakın ancak erişim noktasına uzak olduğunda.
  • types, önemli noktanın yer türleridir.

areas nesnesi en fazla 3 yanıt içerir ve mahalleler, alt idari bölgeler ve büyük kompleksler gibi küçük bölgeleri temsil eden yerlerle sınırlıdır. İstenen koordinatı içeren alanlar ilk olarak 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, alanlar sonucunun yer kimliğidir. Yer kimliğine genel bakış bölümünü inceleyin.
  • display_name, alanın görünen adıdır ve language_code ile text değerlerini içerir.
  • containment, giriş koordinatı ile alan sonucu arasındaki tahmini kapsama ilişkisidir:
    • Aşağıdakilerden hiçbiri geçerli olmadığında varsayılan ilişki "NEAR" olur.
    • Giriş koordinatı alanın merkezine yakın olduğunda "WITHIN".
    • "OUTSKIRTS", giriş koordinatı alanın kenarına yakın olduğunda.

Adres Tanımlayıcı Kapsamı

Adres tanımlayıcılar Hindistan'da genel kullanıma sunuldu. Hindistan'da adres tanımlayıcıların kullanımı ek ücrete tabi değildir ve kullanım, mevcut Geocoding (India) Essentials SKU'su kapsamındadır.

Geri bildirim

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

Tersine Coğrafi Kodlama (Adres Arama)

Coğrafi kodlama terimi genellikle, okunabilir bir adresin haritadaki bir konuma dönüştürülmesini ifade eder. Bunun tersini yapma, yani haritadaki bir konumu okunabilir bir adrese dönüştürme işlemi tersine 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ğeri coğrafi olarak kodlanır ve harita bu konumda ortalanarak biçimlendirilmiş adresi içeren bir bilgi penceresi açılır. Konumu coğrafi olarak kodlamak için haritada herhangi bir yeri tıklayın veya kendi koordinatlarınızı girin.

TypeScript

let marker: google.maps.marker.AdvancedMarkerElement;

async function init() {
    //  Request the needed libraries.
    const [{ InfoWindow }, { Geocoder }, { AdvancedMarkerElement }] =
        await Promise.all([
            google.maps.importLibrary('maps'),
            google.maps.importLibrary('geocoding'),
            google.maps.importLibrary('marker'),
        ]);

    // Get the gmp-map element.
    const mapElement = document.querySelector('gmp-map')!;

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

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

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

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

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

    marker.anchorTop = '40px';

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

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

    // Add a click event listener to the map.
    innerMap.addListener('click', (event: google.maps.MapMouseEvent) => {
        if (event.latLng) {
            latLngQuery.value = `${event.latLng.lat()}, ${event.latLng.lng()}`;
            void geocodeLatLng(geocoder, innerMap, infoWindow);
        }
    });

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

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

    try {
        const { results } = await geocoder.geocode({ location: latlng });

        if (results[0]) {
            marker.position = latlng;
            map.setCenter(latlng);
            infoWindow.setContent(results[0].formatted_address);
            infoWindow.open(map, marker);
        } else {
            window.alert('No results found');
        }
    } catch (e) {
        window.alert('Geocoder failed due to: ' + String(e));
    }
}

void init();

JavaScript

let marker;

async function init() {
    //  Request the needed libraries.
    const [{ InfoWindow }, { Geocoder }, { AdvancedMarkerElement }] =
        await Promise.all([
            google.maps.importLibrary('maps'),
            google.maps.importLibrary('geocoding'),
            google.maps.importLibrary('marker'),
        ]);

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

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

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

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

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

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

    marker.anchorTop = '40px';

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

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

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

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

async function geocodeLatLng(geocoder, map, infoWindow) {
    const input = document.getElementById('latlng').value;
    const latlngStr = input.split(',', 2);
    const latlng = {
        lat: parseFloat(latlngStr[0]),
        lng: parseFloat(latlngStr[1]),
    };

    try {
        const { results } = await geocoder.geocode({ location: latlng });

        if (results[0]) {
            marker.position = latlng;
            map.setCenter(latlng);
            infoWindow.setContent(results[0].formatted_address);
            infoWindow.open(map, marker);
        } else {
            window.alert('No results found');
        }
    } catch (e) {
        window.alert('Geocoder failed due to: ' + String(e));
    }
}

void init();

CSS

/*
* Always set the map height explicitly to define the size of the div element
* that contains the map.
*/
gmp-map {
    height: 100%;
}

/*
* Optional: Makes the sample page fill the window.
*/
html,
body {
    height: 100%;
    margin: 0;
    padding: 0;
    font-family: Roboto, sans-serif;
}

#floating-panel {
    background-color: #fff;
    border-radius: 5px;
    box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px;
    margin: 10px;
    padding: 10px;
    font-family: Roboto, sans-serif;
    font-size: 1rem;
}

#latlng {
    width: 100%;
    font-family: Roboto, sans-serif;
    font-size: 1rem;
    margin-bottom: 4px;
}

#submit {
    font-size: 1rem;
}

HTML

<html>
    <head>
        <title>Reverse Geocoding</title>

        <link rel="stylesheet" type="text/css" href="./style.css" />
        <script type="module" src="./index.js"></script>
        <script>
            // prettier-ignore
            (g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({
                key: "GOOGLE_MAPS_API_KEY"
            });
        </script>
    </head>
    <body>
        <gmp-map center="0.714224, -73.961452" zoom="8" map-id="DEMO_MAP_ID">
            <div id="floating-panel" slot="control-block-start-inline-start">
                <p>
                    Click the map to reverse geocode, or add your own
                    coordinates.
                </p>
                <input
                    id="latlng"
                    type="text"
                    value="40.714224, -73.961452" /><br />
                <input id="submit" type="button" value="Reverse Geocode" />
            </div>
        </gmp-map>
    </body>
</html>
Örneği görüntüleyin

Önceki örnekte, results[0] seçeneğini belirleyerek ilk sonucu gösterdiğimizi unutmayın. Tersine coğrafi kodlayıcı genellikle birden fazla sonuç döndürür. Coğrafi kodlu adresler yalnızca posta adresleri değil, bir konumu coğrafi olarak adlandırmanın her yoludur. Örneğin, Chicago şehrindeki bir noktayı coğrafi olarak kodlarken coğrafi olarak kodlanmış nokta açık adres, şehir (Chicago), eyalet (Illinois) veya ülke (ABD) olarak etiketlenebilir. Tümü coğrafi kodlayıcıya gönderilen adreslerdir. Tersine coğrafi kodlayıcı bu sonuçların tümünü döndürür.

Tersine coğrafi kodlayıcı; idari birimleri (ülkeler, iller, şehirler ve mahalleler), açık adresleri ve posta kodlarını eşleştirir.

Yukarıdaki sorgunun döndürebileceği adres listesine bir örnek:

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. Genel olarak, bu örnekte olduğu gibi en belirgin sonuç daha kesin olan adrestir. En spesifik açık adresten mahalle, şehir, ilçe, eyalet gibi daha az spesifik idari birimlere kadar farklı adres türleri döndürdüğümüzü unutmayın. Daha genel bir adresi eşleştirmek istiyorsanız results[].types alanını inceleyebilirsiniz.

Not: Tersine coğrafi kodlama, kesin sonuçlar veren 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, yakalanan bir noktanın adresini almak için Roads API tarafından döndürülen placeId değerini sağlayabilirsiniz. Yer kimlikleri hakkında daha fazla bilgi için yer kimliğine genel bakış bölümünü inceleyin.

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

  • address
  • latLng
  • location
  • componentRestrictions

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

TypeScript

// Initialize the map.
async function init(): Promise<void> {
    const [{ Geocoder }, { InfoWindow }] = await Promise.all([
        google.maps.importLibrary('geocoding'),
        google.maps.importLibrary('maps'),
        google.maps.importLibrary('marker'),
    ]);

    const mapElement = document.querySelector('gmp-map')!;
    const innerMap = mapElement.innerMap;
    const geocoder = new Geocoder();
    const infoWindow = new InfoWindow();

    document.getElementById('submit')!.addEventListener('click', () => {
        void geocodePlaceId(geocoder, innerMap, infoWindow);
    });
}

// This function is called when the user clicks the UI button.
async function geocodePlaceId(
    geocoder: google.maps.Geocoder,
    map: google.maps.Map,
    infoWindow: google.maps.InfoWindow
) {
    const placeId = (document.getElementById('place-id') as HTMLInputElement)
        .value;

    const { AdvancedMarkerElement } = await google.maps.importLibrary('marker');

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

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

        infoWindow.setContent(results[0].formatted_address);
        infoWindow.open(map, marker);
    } else {
        window.alert('No results found');
    }
}

void init();

JavaScript

// Initialize the map.
async function init() {
    const [{ Geocoder }, { InfoWindow }] = await Promise.all([
        google.maps.importLibrary('geocoding'),
        google.maps.importLibrary('maps'),
        google.maps.importLibrary('marker'),
    ]);

    const mapElement = document.querySelector('gmp-map');
    const innerMap = mapElement.innerMap;
    const geocoder = new Geocoder();
    const infoWindow = new InfoWindow();

    document.getElementById('submit').addEventListener('click', () => {
        void geocodePlaceId(geocoder, innerMap, infoWindow);
    });
}

// This function is called when the user clicks the UI button.
async function geocodePlaceId(geocoder, map, infoWindow) {
    const placeId = document.getElementById('place-id').value;

    const { AdvancedMarkerElement } = await google.maps.importLibrary('marker');

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

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

        infoWindow.setContent(results[0].formatted_address);
        infoWindow.open(map, marker);
    } else {
        window.alert('No results found');
    }
}

void init();
Örneği görüntüleyin

Doğru adres veya koordinat API'sini seçme

Yaygın adres ve koordinat görevleri için google.maps.Geocoder'i diğer Google Haritalar Platformu API'leriyle karşılaştırmak üzere aşağıdaki bölümü genişletin:

Coğrafi Kodlayıcıyı diğer Google Haritalar Platformu API'leriyle karşılaştırma

Geliştirici hedefi Önerilen API veya yöntem Ne zaman kullanılır?
Tam bir açık adresi LatLng koordinatlarına dönüştürme (ileri coğrafi kodlama) geocoder.geocode({ address }) (google.maps.Geocoder) Elinizde tam ve net bir adres dizesi varsa ve harita koordinatlarına ihtiyacınız varsa kullanın.
GPS veya tıklanan harita koordinatlarını ({ lat, lng }) okunabilir bir açık adrese dönüştürme (tersine coğrafi kodlama) geocoder.geocode({ location }) (google.maps.Geocoder) Saha raporlaması, teslimat raptiyeleri bırakma veya bir koordinat için en yakın açık adresi görüntüleme amacıyla kullanın.
Kullanıcı bir giriş alanına yazarken otomatik tamamlama adres araması <gmp-place-autocomplete> (PlaceAutocompleteElement) Kullanıcı her tuşa bastığında Geocoder yöntemini çağırmak yerine, kullanıcı yazarken etkileşimli arama kutuları için kullanın.
Ödeme veya kargo adresini doğrulama, posta bileşenlerini standartlaştırma ya da alt tesis ve birim teslim edilebilirliğini kontrol etme Address Validation API (POST https://addressvalidation.googleapis.com/v1:validateAddress) E-ticaret ödeme işlemleri, kargo formları ve posta adresinin ya da apartman dairesi/birim numarasının teslimat için uygun olup olmadığını (Geocoder tarafından doğrulanmaz) onaylaması gereken iş akışları için kullanın.
Bir koordinatı (lat, lng) ve zaman damgasını UTC farkına (rawOffset, dstOffset) ve IANA timeZoneId değerine dönüştürün. Time Zone API (GET https://maps.googleapis.com/maps/api/timezone/json) Bir koordinat ve zaman damgası için IANA saat dilimi kimliği, UTC farkı veya yaz saati farkı gerektiğinde kullanın (Geocoder bunları döndürmez).