Coğrafi Kodlama Hizmeti

Genel Bakış

Coğrafi kodlama, belirli bir coğrafi bölgede (ör. "1600 Amphitheatre Parkway, Mountain View, CA"), (ör. enlem 37.423021 ve boylam -122.083739) yer işaretçileri kullanabilir veya haritayı konumlandırabilirsiniz.

Ters coğrafi kodlama, belirli bir coğrafi bölgede veya koordinatlarını insan tarafından okunabilen bir adrese (Ters coğrafi kodlama (Adres Arama) konusuna bakın).

Bir sitenin adresini bulmak için coğrafi kodlayıcıyı da kullanabilirsiniz. yer kimliği verilir.

Maps JavaScript API, Coğrafi kodlayıcı sınıfı: coğrafi kodlama ve kullanıcı girişinden dinamik olarak ters coğrafi kod kullanma. Bunun yerine bilinen statik adreslerin coğrafi kodlamasını yapmak istiyorsanız Coğrafi kodlama web hizmeti.

Başlarken

Maps JavaScript API'de Coğrafi Kodlama hizmetini kullanmadan önce Geocoding API'nin Google Cloud Console'da etkinleştirildiğini ve projesi için oluşturduğunuz bir testtir.

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

  1. Şuraya gidin: Google Cloud Console.
  2. Proje seçin düğmesini tıklayın, ardından oluşturduğunuz projeyi seçin JavaScript API'sini açın ve 'ı tıklayın.
  3. Kontrol Paneli'ndeki API listesinde, Geocoding API.
  4. Listede API'yi görüyorsanız hazırsınız demektir. API listede yoksa şunu etkinleştirebilirsiniz:
    1. Sayfanın üst kısmında şunu görüntülemek için API'Yİ ETKİNLEŞTİR'i seçin: Kitaplık sekmesine gidin. Alternatif olarak sol taraftaki menüden Kitaplık'ı seçin.
    2. Geocoding API ifadesini arayın ve ardından listeden bunu seçin. sonuç listesi.
    3. ETKİNLEŞTİR'i seçin. Süreç tamamlandığında Geocoding API, Kontrol paneli.

Fiyatlandırma ve politikalar

Fiyatlandırma

16 Temmuz 2018'den itibaren yeni bir kullandıkça öde fiyatlandırma planı yürürlüğe girdi Haritalar, Rotalar ve Yerler için. Yeni fiyatlandırma ve kullanım hakkında daha fazla bilgi edinmek için JavaScript Coğrafi Kodlama hizmetini kullanımınızla ilgili sınırlar için bkz. Kullanım ve Faturalandırma kullanıma sunuyoruz.

Politikalar

Coğrafi Kodlama hizmetinin kullanımı, tanımlanan politikalar inceleyin.

Coğrafi Kodlama İstekleri

Google Maps API, Coğrafi Kodlama hizmetine erişim eşzamansız olduğundan harici bir sunucuya çağrı yapması gerekiyor. Bu nedenle istek tamamlandıktan sonra yürütülecek bir callback yöntemi. Bu geri çağırma yöntemi sonuçları işler. Coğrafi kodlayıcının birden fazla sonuç gösterilir.

Google Maps API coğrafi kodlama hizmetine, google.maps.Geocoder oluşturucu nesnesi. İlgili içeriği oluşturmak için kullanılan Geocoder.geocode() yöntemi coğrafi kodlamaya bir istek başlatır hizmetini içeren GeocoderRequest nesne değişmez değerini iletmek için kullanılır. giriş terimlerini ve yanıt alındıktan sonra yürütülecek bir geri çağırma yöntemini belirtir.

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

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

Gerekli parametreler: aşağıdaki alanları doldurun:

  • address — Coğrafi kodlaması yapmak istediğiniz adres.
    . veya
    . locationLatLng (veya LatLngLiteral) en yakın okunabilir bir adres olmalıdır. Coğrafi kodlayıcı, ters coğrafi kodlama işlemi gerçekleştirir. Görüntüleyin Daha fazla bilgi için Ters Coğrafi Kodlama başlıklı makaleyi inceleyin.
    . veya
    . placeId — İstediğiniz yerin yer kimliği okunabilir en yakın adresi almak için. hakkında daha fazla bilgi bir yer kimliği için adres alma.

İsteğe bağlı parametreler:

  • boundsLatLngBounds önyargısını daha belirgin bir şekilde belirleyebileceksiniz. bounds parametresi yalnızca coğrafi kodlayıcıdan gelen sonuçları etkiler, tam olarak kısıtlamaz. Görüntüleyin hakkında daha fazla bilgi görüntü alanına ağırlık vermeyi unutmayın.
  • componentRestrictions: Sonuçları bir bilgi sahibi olmanız gerekir. Daha fazla bilgi için: bileşen filtreleme bölümüne bakın.
  • region — Bölge kodu, iki karakterlik (sayısal olmayan) bir Unicode bölge alt etiketi olarak belirtilir. Çoğu zaman durumlarda, bu etiketler doğrudan bilinen ccTLD ("üst düzey alan") ile eşlenir. iki karakterli değerler sunmalıdır. region parametresi yalnızca, coğrafi kodlayıcıdan kaynaklanan sonuçlardır. Daha fazla bilgi için: bölge koduna ağırlık vermeyi öğrenin.
  • extraComputations: Bunun için izin verilen tek değer parametresi ADDRESS_DESCRIPTORS. Bkz. adres tanımlayıcıları inceleyebilirsiniz.
  • fulfillOnZeroResults — Şuradaki ZERO_RESULT statüsüyle ilgili sözünüzü yerine getirin: tıklayın. Bu istenen bir şeydir çünkü coğrafi kodlama sonucu sıfır olsa bile yanıt düzeyi ek alanı döndürüldü. Bkz. Daha fazla bilgi için Sıfır sonuçla ilgili şartları karşılayın.

Yanıtları Coğrafi Olarak Kodlama

Coğrafi Kodlama hizmeti, alma sonrasında yürütülecek bir geri çağırma yöntemi gerektirir coğrafi kodlayıcının sonuçlarından farklıdır. Bu geri çağırma, muhafaza edilecek iki parametre iletmelidir results ve status kodunu bu sırayla görürsünüz.

Coğrafi Kodlama Sonuçları

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

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

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

  • types[], şunun adres türünü gösteren bir dizidir: döndüren kullanıcıdır. Bu dizi sıfır veya daha fazla etiket içeren bir grup içeriyor sonuçta döndürülen özelliğin türünü belirler. Örneğin, "Chicago"nun coğrafi kodu "locality" değerini döndürür Bu da "Chicago"nun bir ve "siyasi" değerini döndürür. Bu durum, konunun politik varlık. Daha fazla bilgi için: adres türleri ve adres bileşeni türlerini inceleyin.
  • formatted_address, okunabilir öğeleri içeren bir dizedir bu konumun adresine sahip olur.

    Bu adres genellikle posta adresine eşdeğerdir. Bazı Birleşik Krallık gibi ülkelerde, doğru lisans kısıtlamaları nedeniyle posta adresi.

    Biçimlendirilmiş adres mantıksal olarak bir veya daha fazla adresinden oluşur. bileşenleri hakkında daha fazla bilgi edinin. Örneğin, "111 8. Cadde, İstanbul, Türkiye" adresi şu bileşenlerden oluşur: "111" (bina numarası), "8. Cadde" (rota), "New York" (şehir) ve "NY" (ABD eyaleti).

    Biçimlendirilmiş adresi programlı olarak ayrıştırmayın. Bunun yerine API yanıtına ek olarak dahil edilen bağımsız adres bileşenleri ekler.

  • address_components[], bu adres için geçerli olan bileşenleri içerir.

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

    • types[], türünü gösteren bir dizidir adres bileşeni. Şu listeye bakın: desteklenen türleri ziyaret edin.
    • long_name, adres bileşeninin her bir adımını içerir.
    • short_name, adres için kısaltılmış bir metin adıdır bileşenini (varsa) kontrol edin. Örneğin, eyalet için bir adres bileşeni için sahip olduğu long_name oranında "Alaska" ve short_name/"AK" kullanın.

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

    • Adres bileşenleri dizisi, formatted_address
    • Bu dizi, aşağıda belirtilenlerin dışında bir adresi formatted_address Tüm siyasi varlıkları geri almak için kullanıyorsanız, ters coğrafi kodlamayı veya belirli bir adres için İsteğe bağlı parametre olarak adresin enlem/boylamı.
    • Yanıt biçiminin kabul edersiniz. Özellikle, address_components sayısı talep edilen adrese göre değişir ve zaman içinde aynı adrese sahip olmalıdır. Bir bileşen, dizideki konumunu değiştirebilir. Bileşenin türü değişebilir. Belirli bir bileşen, yanıt veremeyebilirsiniz.

    Daha fazla bilgi için: adres türleri ve adres bileşeni türlerini inceleyin.

  • partial_match, coğrafi kodlayıcının bir kısmı eşleşebilse de orijinal istek için istenen adrese Orijinal isteği hatalı yazımlar ve/veya adres eksiktir.

    Kısmi eşleşmeler en sık, var olmayan açık adresler için ortaya çıkar istekte bulunduğunuz şehir içinde olmalıdır. Kısmi eşleşmeler bir istek aynı konumdaki iki veya daha fazla konumla eşleştiğinde döndürülür. Örneğin, "Hillpar St, Bristol, UK" her ikisi için de kısmi eşleşme döndürür ve Henry Street'te yer alır. Bir talepte bir yanlış yazılmış adres bileşeni varsa, coğrafi kodlama hizmeti bunun yerine girin. Bu şekilde tetiklenen öneriler kısmi bir eşleşmesini sağlar.

  • place_id, bir yerin kullanılabilecek benzersiz tanımlayıcısıdır API'lerle başlayın. Örneğin, place_id kullanabilirsiniz Google Rehber ile API kitaplığı ile yerel işletmeler hakkında telefon numarası, çalışma saatleri, kullanıcı yorumları ve daha fazlasını içerir. Bkz. yer kimliğine genel bakış.
  • postcode_localities[], tüm yerleri belirten bir dizidir bir posta kodunda yer alır ve yalnızca sonuç bir posta olduğunda bulunur kodu kullanabilirsiniz.
  • geometry, şu bilgileri içeriyor:

    • location, coğrafi olarak kodlanmış enlem,boylam değerini içeriyor. Bu konumu, bir LatLng nesnesi olarak döndürdüğümüzü, biçimlendirmenizi öneririm.
    • location_type, belirtilen konum. Şu anda aşağıdaki değerler desteklenmektedir:
      • ROOFTOP şunu belirtir: sonucun kesin bir coğrafi kodu yansıttığından emin olmanız gerekir.
      • RANGE_INTERPOLATED. döndürülen sonucun yaklaşık bir değeri yansıttığını belirtir (genellikle bir yolda) iki kesin nokta (ör. kesişim şeklinde gösterilir). İnterpolasyonlu sonuçlar genellikle bir açık adres için çatı coğrafi kodları kullanılamaz.
      • GEOMETRIC_CENTER. döndürülen sonucun bir metriğin geometrik merkezi çoklu çizgi (örneğin, sokak) veya poligon gibi sonuç (bölge).
      • APPROXIMATE. döndürülen sonucun yaklaşık olduğunu belirtir.

    • viewport, sonuç döndürdü.
    • bounds (isteğe bağlı olarak döndürülür) şunları depolar: Döndürülen sonucu tam olarak içerebilen LatLngBounds. Bu sınırların önerilen görüntü alanıyla eşleşmeyebileceğini unutmayın. ( Örneğin San Francisco, Farallon Teknik olarak şehrin bir parçası olan ancak olmaması gereken adalar görüntü alanına döndürülmesi gerekir.)

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

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

types[] dizisi GeocoderResult şunu gösterir: adres türü. types[] dizisi de döndürülebilir bir GeocoderAddressComponent ifadesini ekleyin. İade edilen adresler birden fazla türe sahip olabilir. türler, etiket olarak kabul edilebilir. Örneğin, birçok şehir political ve locality türü.

Aşağıdaki türler, hem adres türleri ve adres bileşeni türleri:

  • street_address, tam açık adresi gösterir.
  • route, adlandırılmış bir rotayı (ör. "TR 101") gösterir.
  • intersection, genellikle iki olan büyük bir kesişimi gösterir yollar bulunuyor.
  • political, siyasi bir tüzel kişiyi belirtir. Genellikle, bu tür bir sivil yönetim poligonunu gösterir.
  • country, ulusal siyasi kuruluşu belirtir ve genellikle Coğrafi Kodlayıcı tarafından döndürülen en yüksek sipariş türüdür.
  • administrative_area_level_1, birinci dereceden bir hukuki danışmanlığı gösterir ülke düzeyinin altında bir öğe tutarıdır. Amerika Birleşik Devletleri'nde idari düzeyler eyalettir. Tüm uluslar bunları sergilemez sorumlu tutulabilir. Çoğu durumda, yönetici_alanı_seviyesi_1 kısa adlar, ISO 3166-2 alt bölümleri ve diğer geniş kapsamlı dağıtım yapılan listeler; Ancak coğrafi kodlama sonuçlarımız çeşitli sinyallere ve konum verilerine dayanır.
  • administrative_area_level_2, ikinci dereceden bir hukuki danışmanlığı gösterir ülke düzeyinin altında bir öğe tutarıdır. Amerika Birleşik Devletleri'nde idari düzeyler ilçedir. Tüm uluslar bunları sergilemez sorumlu tutulabilir.
  • administrative_area_level_3, üçüncü düzey bir hukuki danışmanlığı belirtir ülke düzeyinin altında bir öğe tutarıdır. Bu tür, küçük bir sivil toplum bölmesini belirtir. Tüm uluslar bu idari düzeylerde değildir.
  • administrative_area_level_4, dördüncü dereceden bir sivil toplumu gösterir ülke düzeyinin altında bir öğe tutarıdır. Bu tür, küçük bir sivil toplum bölmesini belirtir. Tüm uluslar bu idari düzeylerde değildir.
  • administrative_area_level_5, beşinci sıradan bir sivil toplumu gösterir ülke düzeyinin altında bir öğe tutarıdır. Bu tür, küçük bir sivil toplum bölmesini belirtir. Tüm uluslar bu idari düzeylerde değildir.
  • administrative_area_level_6, altıncı dereceden bir sivil toplumu gösterir ülke düzeyinin altında bir öğe tutarıdır. Bu tür, küçük bir sivil toplum bölmesini belirtir. Tüm uluslar bu idari düzeylerde değildir.
  • administrative_area_level_7, yedinci düzey hukuku belirtir ülke düzeyinin altında bir öğe tutarıdır. Bu tür, küçük bir sivil toplum bölmesini belirtir. Tüm uluslar bu idari düzeylerde değildir.
  • colloquial_area, yaygın olarak kullanılan bir alternatif adı gösterir ilişkilidir.
  • locality, anonim bir şehir veya kasaba siyasetini belirtir varlık.
  • sublocality, birinci dereceden bir sivil tüzel kişiyi belirtir: şehir. Bazı konumlar için ek türlerden biri sunulabilir: sublocality_level_1 - sublocality_level_5. Her alt konum düzeyi bir sivil tüzel kişidir. Büyük sayılar daha küçük olduğunu gösterir coğrafi alanı ifade eder.
  • neighborhood, adlandırılmış bir mahalleyi gösterir
  • premise, adlandırılmış bir konumu (genellikle bir bina veya ortak bir ada sahip bina koleksiyonu
  • subpremise, adlandırılmış bir öğenin altındaki birinci derece öğeyi gösterir. bir dizi binanın içinde yer alan tek bir binadır. Bu yapı, genellikle yaygın bir ad
  • plus_code, türetilmiş kodlanmış konum referansını gösterir enlem ve boylama göre belirlenir. Artı kodları, mevcut olmadıkları yerlerde (binaların numaralandırılmamış veya numaralandırılmayan yerlerdeki açık adresleri) sokaklar adlandırılmamış). https://plus.codes sayfasına bakın inceleyebilirsiniz.
  • postal_code, posta adresini vermek için kullanılan bir posta kodunu belirtir ülke içinde posta gönderin.
  • natural_feature belirgin bir doğal özelliği gösterir.
  • airport, bir havaalanını gösterir.
  • park, adlandırılmış bir parkı gösterir.
  • point_of_interest, adlandırılmış bir önemli yeri gösterir. Bu "ÖY"ler, genellikle bir yere kolayca uymayan belirgin yerel varlıklardır. "Empire State Binası" gibi başka bir kategoride veya "Eyfel Kulesi".

Boş bir tür listesi, söz konusu öğe için bilinen bir tür olmadığını gösterir adresini ziyaret edin.

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

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

  • floor bir bina adresinin katını gösterir.
  • establishment, genellikle henüz ziyaret edilmeyen yerleri gösterir kategorize edildi.
  • landmark, referans olarak kullanılan yakındaki bir yeri gösterir. yardımcı olan araçlardır.
  • point_of_interest, adlandırılmış bir önemli yeri gösterir.
  • parking, bir otopark veya otopark olduğunu belirtir.
  • post_box, belirli bir posta kutusunu belirtir.
  • postal_town, locality ve sublocality, posta adresleri için kullanılır bazı ülkelerde.
  • room, bina adresinin bulunduğu odayı gösterir.
  • street_number tam sokak numarasını gösterir.
  • bus_station, train_station ve transit_station otobüs, tren veya halka açık yerleri belirtir toplu taşıma durağı.

Durum Kodları

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

  • "OK", herhangi bir hata oluşmadığı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 gösterir. Bu durum, coğrafi kodlayıcıya var olmayan bir address kodundan geçilmesi durumunda ortaya çıkabilir.
  • "OVER_QUERY_LIMIT", kotanızı aştığınızı gösteriyor.
  • "REQUEST_DENIED", isteğinizin reddedildiğini gösterir. Web sayfası ve coğrafi kodlayıcıyı kullanmasına izin verilmez.
  • "INVALID_REQUEST" genellikle sorgunun (address, components veya latlng) eksik.
  • "UNKNOWN_ERROR", isteğin gerçekleştirilemediğini gösterir işlendi. Aşağıdaki durumlarda istek başarılı olabilir: tekrar deneyin.
  • "ERROR", isteğin zaman aşımına uğradığını veya bir Google sunucularıyla bağlantı kurma sorunu. Aşağıdaki durumlarda istek başarılı olabilir: tekrar deneyin.

Bu örnekte, bir adresin coğrafi kodunu kodluyor ve döndürülen alana bir işaretçi enlem ve boylam değerlerine yer verir. İşleyicinin anonim işlev değişmez.

  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 inceleyin.

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

Coğrafi Kodlama Hizmeti'ne, belirli bir konumdaki görüntü alanı (sınırlayıcı kutu olarak ifade edilir). Bunu, GeocoderRequest nesnesindeki bounds parametre değerini alır. Yalnızca ağırlık vermenin tercih eder; Daha alakalı sonuçlar varsa bu sınırların dışında kalan videolar 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 sınırlayıcı kutuyu tanımlayan bir bounds parametresi belirtilmesi için arama sonuçları sayfasında, bu coğrafi kod kullanılarak "Winnetka" adlı mahalle söz konusu konumda:

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

Bölge Koduna Ağırlık Verme

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

region parametresini kullanırken:

Coğrafi kodlama istekleri, ana makine adı verilen her alan Google Haritalar uygulaması coğrafi kodlama olanağı sunar. Önyargı oluşturmanın yalnızca belirli bir alana ait sonuçları tercih eder; ve daha alakalı sonuçlar bu alanın dışında yer alıyor olabilirler.

Örneğin, "Toledo" için coğrafi kod varsayılan olarak bu sonucu döndürür Coğrafi Kodlama Hizmeti'nin alan adı ABD olarak ayarlanmış olmalıdı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 coğrafi kod region alanı 'es' (İspanya), İ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

Coğrafi Kodlama Hizmeti'ni, kısıtlanmış adres sonuçlarını döndürecek şekilde ayarlayabilirsiniz belirli bir alana göre ayarlayabilirsiniz. Filtreyi componentRestrictions parametresini içerir. Filtre değerleri diğer coğrafi kodlamalarla aynı yazım düzeltme ve kısmi eşleme yöntemleri kabul edersiniz.

Coğrafi kodlayıcı, yalnızca bileşen tamamı ile eşleşen sonuçları döndürür. filtrelerine dokunun. Yani, filtre özelliklerini bir VE ile değil, bir VE VEYA.

Bileşenler filtresi aşağıdaki öğelerin birinden veya birkaçından oluşur:

  • route, bir rotanın uzun veya kısa adıyla eşleşiyor.
  • locality, yerel ve alt konum türleriyle eşleşir.
  • administrativeArea, sorumlu tutulabilir.
  • postalCode, posta kodları ve posta kodu önekleriyle eşleşir.
  • country, bir ülke adıyla veya iki harfle eşleşir ISO 3166-1 ülke kodu. Not: API, en iyi sonucu verir. Filtre, ülkenin ilgili ISO kodu.

Aşağıdaki örnekte, Şuna göre filtrelenecek componentRestrictions parametresi: country ve postalCode:

function codeAddress() {
geocoder.geocode({
  componentRestrictions: {
    country: 'AU',
    postalCode: '2000'
  }
}, function(results, status) {
  if (status == 'OK') {
    map.setCenter(results[0].geometry.location);
    var marker = new google.maps.Marker({
      map: map,
      position: results[0].geometry.location
    });
  } else {
    window.alert('Geocode was not successful for the following reason: ' + status);
  }
});
}

Sıfır Sonuçla Yerine Getirme

Ters coğrafi kodlamada, status=ZERO_RESULTS ürününde taahhüt varsayılan olarak ihlal edilir. Ancak, plus_code ve address_descriptor ek yanıt düzeyi alanları hâlâ geçerli olabilir değerini girin. fulfillOnZeroResults parametresi için doğru değeri sağlanırsa ve bu ek alanlara (varsa) vaat aracılığıyla erişilebilmektedir.

Aşağıda, Antarktika'daki bir enlem/boylam için bu davranışın bir örneği verilmiştir. Ters coğrafi kodlama sonucu olmasa da, artı kodunu yazdırabiliriz. fulfillOnZeroResults=true olarak ayarlayacağız.

    function addressDescriptorReverseGeocoding() {
      var latlng = new google.maps.LatLng(-75.290330, 38.653861);
      geocoder
        .geocode({
          'location': latlng,
          'fulfillOnZeroResults': true,
        })
        .then((response) => {
          console.log(response.plus_code);
        })
        .catch((error) => {
          window.alert(`Error`);
        });
    }
  

Adres Tanımlayıcıları

Adres tanımlayıcıları, bir konumu açıklamaya yardımcı olan ek bilgiler içerir önemli noktaları ve alanları kullanarak. Adres tanımlayıcılar demosuna göz atın ziyaret edebilirsiniz.

Adres tanımlayıcıları, extraComputations kullanılarak etkinleştirilebilir parametresinden sonra bir değer girin. extra_computations=ADDRESS_DESCRIPTORS öğesini bir coğrafi kodlama isteğine dahil edin , coğrafi kodlama isteğini tersine çevirme veya yer coğrafi kodlama isteği ve yanıtınızda adres tanımlayıcıları alabilirsiniz.

Yer coğrafi kodlamasına örnek

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

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

Ters coğrafi kodlama örneği

Aşağıdaki sorgu, Türkiye'deki bir konumun enlem/boylam değerini Delhi.

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

Adres Tanımlayıcı Örneği

Aşağıda address_descriptor ile ilgili bir örnek verilmiştir.

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

Her address_descriptor nesnesinde iki dizi bulunur: landmarks ve areas. landmarks dizisi, aşağıdaki sıralamaya göre sıralanmış en fazla 5 sonuç içerir: istenen koordinata yakınlık dikkate alınarak, ve görünürlüğü. Her önemli nokta sonucu şu değerlere sahiptir:

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

areas nesnesi en fazla 3 yanıt içerir ve kendisini mahalleler, semtler ve büyükşehir bölgeleri gibi küçük bölgeleri kompleksler. İstenen koordinatı içeren bölgeler listenin başında ve en küçükten en büyüğe doğru sıralanır. Her areas sonucu şunu içerir: değerleri:

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

Adres Tanımlayıcı Kapsamı

Bu özellik yalnızca belirli ülke.

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

Ters Coğrafi Kodlama (Adres Arama)

Coğrafi kodlama terimi genellikle kullanıcılar tarafından okunabilir bir harita üzerinde bir konuma dönüştürmenizi sağlar. Bunun tersini yapma süreci, haritadaki bir yeri kullanıcıların okuyabileceği bir adrese dönüştürmek, ters coğrafi kodlamayı kullanın.

Metin biçiminde bir address sağlamak yerine virgülle ayrılmış bir değer sağlayın location parametresindeki enlem/boylam çifti.

Aşağıdaki örnekte bir enlem/boylam değeri coğrafi olarak kodlanmıştır ve ilgili konumdaki bir harita üzerinde çalışır ve biçimlendirilmiş adresle bir bilgi penceresi açar:

TypeScript

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

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

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

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

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

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

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

JavaScript

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

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

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

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

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

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

window.initMap = initMap;
.
Örneği inceleyin

Örneği Deneyin

Önceki örnekte, ilk sonuç olarak 2024'e kadar results[0] seçiliyor. Ters coğrafi kodlayıcı genellikle birden fazla sonuç vardır. Coğrafi kodlamalı adresler yalnızca posta adreslerinden değil, coğrafi olarak adlandırma yöntemidir. Örneğin, bir noktanın coğrafi kodlamasını yaparken coğrafi kodu bulunan nokta bir sokak adresi olarak etiketlenebilir, şehir (Şikago), eyaleti (Illinois) veya ülke (ABD) Eyaletleri). Bunların tümü coğrafi kodlayıcının adresleridir. Ters coğrafi kodlayıcı, bu sonuçlardan birini ziyaret edin.

Ters coğrafi kodlayıcı siyasi tüzel kişiliklerle (ülkeler, iller, şehir ve mahalleler), açık adresler ve posta kodları.

Yukarıdaki sorgunun döndürebileceği adres listesinin örneğini aşağıda bulabilirsiniz:

results[0].formatted_address: "277 Bedford Ave, Brooklyn, NY 11211, USA"
results[1].formatted_address: "Grand St/Bedford Av, Brooklyn, NY 11211, USA"
results[2].formatted_address: "Williamsburg, Brooklyn, NY, USA"
results[3].formatted_address: "Brooklyn, NY, USA"
results[4].formatted_address: "New York, NY, USA"
results[5].formatted_address: "Brooklyn, NY 11211, USA"
results[6].formatted_address: "Kings County, NY, USA"
results[7].formatted_address: "New York-Northern New Jersey-Long Island, NY-NJ-PA, USA"
results[8].formatted_address: "New York Metropolitan Area, USA"
results[9].formatted_address: "New York, USA"

Adresler, en iyi eşleşmeden en az eşleşmeye doğru sırayla döndürülür. Genellikle, daha kesin adres, bu örnekte olduğu gibi en belirgin sonuçtur. En spesifik adreslerden, en spesifik adreslerden mahalle gibi daha az belirgin siyasi oluşumlara şehir, ilçe, eyalet vb. görebilirsiniz. Daha genel bir adresle eşlemek isterseniz, results[].types alanını inceleyebilirsiniz.

Not: Ters coğrafi kodlama, hesaplamaya bilim. Coğrafi kodlayıcı, en yakın adreslenebilir konumu bulmaya çalışır belirli bir toleransta kullanın.

Yer Kimliği için Adres Alma

Belirli bir yer kimliğinin adresini bulmak için placeId sağlayın. İlgili içeriği oluşturmak için kullanılan yer kimliği, diğer Google API'leriyle kullanılabilecek benzersiz bir tanımlayıcıdır. Örneğin, Örneğin, placeId almak için Roads API'yi bir noktanın adresini yazın. Yer kimlikleri hakkında daha fazla bilgi için bkz. yer kimliğine genel bakış.

Bir placeId sağladığınızda, istek şunlardan herhangi birini içeremez: aşağıdaki alanları doldurun:

  • address
  • latLng
  • location
  • componentRestrictions

Aşağıdaki örnekte yer kimliği kabul edilir, ilgili adres bulunur, konumlandırıp haritayı bu konuma ortalar. Aynı zamanda, karşınıza ilgili yerin biçimlendirilmiş adresi:

TypeScript

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

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

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

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

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

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

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

JavaScript

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

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

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

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

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

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

window.initMap = initMap;
.
Örneği inceleyin

Örneği Deneyin