Genel bakış
Coğrafi kodlama, adresleri ("1600 Amphitheatre Parkway, Mountain View, CA" gibi) coğrafi koordinatlara dönüştürme (enlem 37,423021 ve boylam -122,083739 gibi) şeklinde, işaretçi yerleştirmek veya haritayı konumlandırmak için kullanılabilen süreçtir.
Ters coğrafi kodlama, coğrafi koordinatları kullanıcıların okuyabileceği bir adrese dönüştürme işlemidir (Ters coğrafi kodlama (Adres Arama) bölümüne bakın).
Belirli bir yer kimliği için adresi bulmak üzere coğrafi kodlamayı da kullanabilirsiniz.
Maps JavaScript API, coğrafi kodlama ve kullanıcı girişinden dinamik olarak ters coğrafi kodlama için Coğrafi Kodlayıcı sınıfı sunar. Bunun yerine statik, bilinen adreslerin coğrafi kodlamasını yapmak istiyorsanız Coğrafi kodlama web hizmetini inceleyin.
Başlarken
Maps JavaScript API'de Coğrafi Kodlama hizmetini kullanmadan önce, ilk olarak Haritalar JavaScript API'si için ayarladığınız projede Google Cloud Console'da Coğrafi Kodlama API'sinin etkinleştirildiğinden emin olun.
Etkin API'lerinizin listesini görüntülemek için:
- Google Cloud Console'a gidin.
- Proje seçin düğmesini tıklayın, ardından Maps JavaScript API için oluşturduğunuz projeyi seçin ve Aç'ı tıklayın.
- Kontrol Paneli'ndeki API listesinde Geocoded API'yi bulun.
- API'yi listede görüyorsanız her şey hazır demektir. API listelenmiyorsa etkinleştirin:
- Kitaplık sekmesini görüntülemek için sayfanın üst kısmından API'Yİ ETKİNLEŞTİR'i seçin. Alternatif olarak sol taraftaki menüden Kitaplık'ı da seçebilirsiniz.
- Geocoded API'yi arayıp sonuçlar listesinden seçin.
- ETKİNLEŞTİR'i seçin. İşlem tamamlandığında Coğrafi Kodlama API'si, Kontrol Paneli'ndeki API'ler listesinde görünür.
Fiyatlandırma ve politikalar
Fiyatlandırma
16 Temmuz 2018'den itibaren Haritalar, Rotalar ve Yerler için kullandıkça öde türünde yeni bir fiyatlandırma planı kullanıma sunuldu. JavaScript Coğrafi Kodlama hizmetini kullanırken uygulanan yeni fiyatlandırma ve kullanım sınırları hakkında daha fazla bilgi edinmek için Geocode 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ıda bulunması gerektiğinden Coğrafi Kodlama hizmetine erişim eşzamansız olarak yapılır. Bu nedenle, isteğin tamamlanması durumunda yürütme için bir geri çağırma yöntemi iletmeniz gerekir. Bu geri çağırma yöntemi, sonuçları işler. Coğrafi kodlayıcının birden fazla sonuç döndürebileceğini unutmayın.
Google Haritalar API'si coğrafi kodlama hizmetine kodunuzdaki google.maps.Geocoder
oluşturucu nesnesi aracılığıyla erişirsiniz. Geocoder.geocode()
yöntemi, coğrafi kodlama hizmetine bir istek gönderir. Bu istek, giriş terimlerini içeren bir GeocoderRequest
nesne değişmez değeri ve yanıt alındığında yürütülecek geri çağırma yöntemi içerir.
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 girmeniz gerekir:
address
- Coğrafi kodlamasını yapmak istediğiniz adres.
veya
location
— İnsan tarafından okunabilir en yakın adresi elde etmek istediğinizLatLng
(veyaLatLngLiteral
). Coğrafi kodlama, ters coğrafi kodlama gerçekleştirir. Daha fazla bilgi için Ters Coğrafi Kodlama bölümüne bakın.
veya
placeId
— İnsan tarafından okunabilir en yakın adresi almak 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 kodlamanın sonuçların daha belirgin şekilde öne çıkarılacağıLatLngBounds
.bounds
parametresi yalnızca coğrafi kodlamaya ait sonuçları etkilemez, tam olarak kısıtlamaz. Aşağıda, görüntü alanı ağırlıklandırması hakkında daha fazla bilgi bulabilirsiniz.componentRestrictions
: Sonuçları belirli bir alanla kısıtlamak için kullanılır. Aşağıda bileşen filtreleme hakkında daha fazla bilgi bulabilirsiniz.region
- İki karakterli (sayısal olmayan) Unicode bölge alt etiketi olarak belirtilen bölge kodu. Çoğu durumda bu etiketler doğrudan bilinen ccTLD ("üst düzey alan") iki karakterli değerlerle eşlenir.region
parametresi yalnızca coğrafi kodlamaya ait sonuçları kısıtlamaz, tamamen etkilemez. Aşağıda bölge koduna ağırlık verme hakkında daha fazla bilgi bulabilirsiniz.
Coğrafi Kodlama Yanıtları
Coğrafi kodlama hizmeti, coğrafi kodlayıcının sonuçlarının alınmasından sonra yürütülmesi için bir geri çağırma yöntemi gerektirir. Bu geri çağırma, results
ve status
kodunu bu sırayla tutmak için iki parametre iletmelidir.
Coğrafi Kodlama Sonuçları
GeocoderResult
nesnesi, tek bir coğrafi kodlama sonucunu temsil eder. Coğrafi kodlama isteği birden 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 kümesi içerir. Örneğin, "Chicago"nun coğrafi kodlama kodu, "Chicago"nun bir şehir olduğunu belirten "locality", bir siyasi tüzel kişi olduğunu belirten "politik" ifadesini 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 okunabilir adresini içeren bir dizedir.Bu adres genellikle posta adresiyle eşdeğerdir. Birleşik Krallık gibi bazı ülkelerde lisanslama kısıtlamaları nedeniyle gerçek posta adreslerinin dağıtımına izin verilmediğini hatırlatmak isteriz.
Biçimlendirilmiş adres, mantıksal olarak bir veya daha fazla adres bileşeninden oluşur. Örneğin, "111 8th Avenue, New York, NY" adresi şu bileşenlerden oluşur: "111" (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. 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şeninin (varsa) kısaltılmış metin adıdır. Örneğin, Alaska eyaletindeki bir adres bileşeninde, 2 harfli posta kısaltması kullanılaraklong_name
"Alaska" veshort_name
değeri "AK" bulunabilir.
address_components[]
dizisiyle ilgili aşağıdaki noktaları göz önünde bulundurun:- Adres bileşenleri dizisi,
formatted_address
değerinden daha fazla bileşen içerebilir. - Dizide,
formatted_address
içinde bulunanlar dışında adres içeren tüm siyasi kuruluşlar bulunmayabilir. Belirli bir adres içeren tüm siyasi varlıkları almak için, isteğin enlem veya boylamını parametre olarak ileterek tersine coğrafi kodlama kullanmanız gerekir. - İsteğin biçiminin istekler arasında aynı kalacağı garanti edilmez. Özellikle
address_components
sayısı, talep edilen adrese göre değişir ve aynı adres için zaman içinde değişebilir. Bir bileşen, dizideki konumu değiştirebilir. Bileşenin türü değişebilir. Daha sonraki bir yanıtta belirli bir bileşen eksik olabilir.
Aşağıda adres türleri ve adres bileşeni türleri hakkında daha fazla bilgi edinebilirsiniz.
-
partial_match
, coğrafi kodlamanın 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 adresle ilgili orijinal isteği inceleyebilirsiniz.Kısmi eşleşmeler çoğunlukla istekte ilettiğiniz bölgede bulunmayan sokak adresleri için gerçekleşir. Bir istek aynı yerleşimdeki iki veya daha fazla konumla eşleştiğinde de kısmi eşleşmeler döndürülebilir. Örneğin, "Hillpar St, Bristol, UK" hem Henry Street hem de Henrietta Street için kısmi bir eşleşme döndürecektir. Bir istekte yanlış yazılmış 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, yerel bir işletmenin telefon numarası, çalışma saatleri, kullanıcı yorumları gibi ayrıntılarını almak içinplace_id
ile Google Yerler API'si 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ç birden fazla konum içeren bir posta kodu olduğ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ürdüğümüzü unutmayın.location_type
, belirtilen konumla ilgili ek verileri depolar. Şu anda desteklenen değerler şunlardır:ROOFTOP
, döndürülen sonucun coğrafi kodlamanın tam olarak yansıtıldığını gösterir.RANGE_INTERPOLATED
işlevi, döndürülen sonucun iki kesin nokta (ör. kavşaklar) arasına yerleştirilen yaklaşık bir değeri (genellikle bir yol üzerinde) yansıttığını gösterir. Etkileşimli sonuçlar genellikle bir 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çerebilenLatLngBounds
öğesini depolar. Bu sınırların, önerilen görüntü alanıyla eşleşmeyebileceğini unutmayın. (Örneğin, San Francisco, teknik olarak şehrin bir parçası olan ancak görüntü alanında döndürülmemesi gereken Farallon Adaları'nı içerir.
Adresler, tarayıcının tercih edilen dil ayarı kullanılarak Geocoder tarafından veya language
parametresi kullanılarak API JavaScript'i yüklenirken belirtilen dil 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
içindeki 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 kodlamacı tarafından döndürülen adreslerin birden fazla türü olabilir. Türler, etiket olarak kabul edilebilir.
Örneğin, birçok şehir political
ve locality
türüyle etiketlenir.
Aşağıdaki türler, coğrafi kodlama tarafından hem adres hem de adres bileşeni türlerinde desteklenir ve döndürülür:
street_address
açık bir adres belirtiyor.route
, adlandırılmış bir rotayı belirtir (ör. "US 101").intersection
genellikle iki ana yoldan oluşan büyük bir kesişimi gösterir.political
, siyasi bir varlığı belirtir. Genellikle bu tür, belirli bir idari yönetimin poligonunu belirtir.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 varlığı gösterir. ABD'de bu idari düzeyler eyalettir. Bu yönetim seviyeleri her ülke tarafından sergilenmemektedir. Çoğu durumda, admin_area_level_1 kısa adları ISO 3166-2 alt bölümleri ve yaygın şekilde dolaşım sağlayan diğer listelerle yakından eşleşir. Ancak, coğrafi kodlama sonuçlarımız çeşitli sinyallere ve konum verilerine dayalı olduğundan bu garanti edilmez.administrative_area_level_2
, ülke düzeyinin altındaki ikinci düzey bir tüzel kişiyi gösterir. Amerika Birleşik Devletleri'nde bu idari bölgeler ilçelerdir. Bu yönetim seviyeleri her ülke tarafından sergilenmemektedir.administrative_area_level_3
, ülke düzeyinin altındaki üçüncü taraf sivil tüzel kişiliğini gösterir. Bu tür, küçük bir sivil bölümü gösterir. Bu yönetim seviyeleri her ülke tarafından sergilenmemektedir.administrative_area_level_4
, ülke düzeyinin altındaki dördüncü taraf bir sivil tüzel kişiyi belirtir. Bu tür, küçük bir sivil bölümü gösterir. Bu yönetim seviyeleri her ülke tarafından sergilenmemektedir.administrative_area_level_5
, ülke düzeyinin altındaki beşinci sırada yer alan bir sivil tüzel kişiyi belirtir. Bu tür, küçük bir sivil bölümü gösterir. Bu yönetim seviyeleri her ülke tarafından sergilenmemektedir.administrative_area_level_6
, ülke düzeyinin altındaki bir altıncı sivil tüzel kişiyi belirtir. Bu tür, küçük bir sivil bölümü gösterir. Bu yönetim seviyeleri her ülke tarafından sergilenmemektedir.administrative_area_level_7
, ülke düzeyinin altındaki yedinci bir sivil tüzel kişiyi belirtir. Bu tür, küçük bir sivil bölümü gösterir. Bu yönetim seviyeleri her ülke tarafından sergilenmemektedir.colloquial_area
, varlık için yaygın olarak kullanılan bir alternatif ad belirtir.locality
, birleşik bir şehir veya ilçe siyasi varlığını belirtir.sublocality
, bir yerin altında birinci taraf sivil tüzel kişiliği gösterir. Bazı konumlar için ek türlerden biri alınabilir:sublocality_level_1
-sublocality_level_5
. Her alt konum düzeyi 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österiyorpremise
, genellikle ortak bir ada sahip olan bina veya bina koleksiyonu olmak üzere adlandırılmış bir konumu belirtirsubpremise
, adlandırılmış bir konumun altındaki birinci taraf varlığını (genellikle ortak bir ada sahip bina koleksiyonundaki tek bir bina) belirtirplus_code
, enlem ve boylamdan türetilen kodlanmış bir konum referansını belirtir. Artı kodları, mevcut olmayan (binaların numaralandırılmadığı veya sokakların adlandırılmamış olduğu) açık adreslerin yerine kullanılabilir. Ayrıntılar için https://plus.codes sayfasına göz atın.postal_code
, ülke içindeki posta posta adreslerinde kullanılan posta kodunu belirtir.natural_feature
belirgin bir doğal özellik gösterir.airport
bir havaalanını gösteriyor.park
, adlandırılmış bir parkı belirtir.point_of_interest
, önemli bir önemli nokta olduğunu gösterir. Bu "ÖY'ler" genellikle "Empire State Binası" veya "Eyfel Kulesi" gibi diğer kategorilere kolayca sığmayan önemli yerel varlıklardır.
Boş tür listesi, belirli adres bileşeni için bilinen 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, tam kapsamlı değildir ve değişebilir.
floor
, bina adresinin tabanını belirtir.establishment
genellikle henüz sınıflandırılmamış bir yeri belirtir.landmark
, gezinmeye yardımcı olmak için referans olarak kullanılan yakındaki bir yeri belirtir.point_of_interest
, önemli bir önemli nokta olduğunu gösterir.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ılanlocality
vesublocality
gibi coğrafi bölgelerin grubunu gösterir.room
, bina adresinin bulunduğu odayı belirtir.street_number
tam sokak numarasını belirtir.bus_station
,train_station
vetransit_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"
hata olmadığını, adresin başarıyla ayrıştırıldığını ve en az bir coğrafi kodlamanın döndürüldüğünü gösterir."ZERO_RESULTS"
, coğrafi kodlamanın başarılı olduğunu ancak hiçbir sonuç döndürmediğini belirtir. Bu durum, coğrafi kodlamanın mevcut olmayan biraddress
'dan geçirilmesi durumunda gerçekleşebilir."OVER_QUERY_LIMIT"
, kotanızı aştığınızı belirtir."REQUEST_DENIED"
, isteğinizin reddedildiğini belirtir. Web sayfasının coğrafi kodlamayı kullanmasına izin verilmiyor."INVALID_REQUEST"
genellikle sorgunun (address
,components
veyalatlng
) eksik olduğunu gösterir."UNKNOWN_ERROR"
, isteğin sunucu hatası nedeniyle işlenemediğini gösterir. Tekrar denediğinizde istek başarılı olabilir."ERROR"
, isteğin zaman aşımına uğradığını veya Google sunucularıyla iletişime geçerken bir sorun olduğunu belirtir. Tekrar denediğinizde istek başarılı olabilir.
Bu örnekte, bir adresin coğrafi kodunu bildiriyoruz ve döndürülen enlem ve boylam değerlerine bir işaretçi yerleştiriyoruz. İşleyicinin anonim bir işlev değişmez değeri olarak iletildiğini unutmayın.
var geocoder; var map; function initialize() { geocoder = new google.maps.Geocoder(); var latlng = new google.maps.LatLng(-34.397, 150.644); var mapOptions = { zoom: 8, center: latlng } map = new google.maps.Map(document.getElementById('map'), mapOptions); } function codeAddress() { var address = document.getElementById('address').value; geocoder.geocode( { 'address': address}, function(results, status) { if (status == 'OK') { map.setCenter(results[0].geometry.location); var marker = new google.maps.Marker({ map: map, position: results[0].geometry.location }); } else { alert('Geocode was not successful for the following reason: ' + status); } }); } <body 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>
Görüntü Alanına Ağırlık Verme
Coğrafi Kodlama Hizmeti'ne belirli bir görüntü alanındaki (sınırlayıcı kutu olarak ifade edilir) sonuçları tercih etmesini söyleyebilirsiniz. Bunu, bu görüntü alanının sınırlarını tanımlamak için GeocoderRequest
nesne değişmez değeri içinde bounds
parametresini ayarlayarak yapabilirsiniz. ağırlık vermenin yalnızca sınırlar dahilinde sonuçları tercih ettiğini unutmayın. Bu sınırlar dışında daha alakalı sonuçlar varsa sonuçlar da dahil edilebilir.
Örneğin, "Winnetka"nın coğrafi kodlama özelliği genellikle Chicago'nun bu banliyösünü döndürür:
{ "types":["locality","political"], "formatted_address":"Winnetka, IL, USA", "address_components":[{ "long_name":"Winnetka", "short_name":"Winnetka", "types":["locality","political"] },{ "long_name":"Illinois", "short_name":"IL", "types":["administrative_area_level_1","political"] },{ "long_name":"United States", "short_name":"US", "types":["country","political"] }], "geometry":{ "location":[ -87.7417070, 42.1083080], "location_type":"APPROXIMATE" }, "place_id": "ChIJW8Va5TnED4gRY91Ng47qy3Q" }
Ancak, San Fernando Valley for Los Angeles için bir sınır kutusu tanımlayan bir bounds
parametresi belirtilmesi, şu coğrafi konumda "Winnetka" adlı mahallenin döndürülmesiyle sonuçlanır:
{ "types":["sublocality","political"], "formatted_address":"Winnetka, California, USA", "address_components":[{ "long_name":"Winnetka", "short_name":"Winnetka", "types":["sublocality","political"] },{ "long_name":"Los Angeles", "short_name":"Los Angeles", "types":["administrative_area_level_3","political"] },{ "long_name":"Los Angeles", "short_name":"Los Angeles", "types":["administrative_area_level_2","political"] },{ "long_name":"California", "short_name":"CA", "types":["administrative_area_level_1","political"] },{ "long_name":"United States", "short_name":"US", "types":["country","political"] }], "geometry":{ "location": [34.213171,-118.571022], "location_type":"APPROXIMATE" }, "place_id": "ChIJ0fd4S_KbwoAR2hRDrsr3HmQ" }
Bölge Kodlarına Ağırlık Verme
Coğrafi Kodlama Hizmeti'ni, region
parametresini kullanarak belirli bir bölgeye ağırlık veren 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 ("üst düzey alan") ile eşleşir. Örneğin, "co.uk" içindeki "uk" gibi iki karakterli değerlerle eşleşir. 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 neden olabilir.
- Yalnızca iki karakterlik bölge alt etiketleri (Unicode CLDR biçimi) kullanın. Diğer tüm girişler hataya neden olur.
- Yalnızca Google Haritalar Platformu Kapsam Ayrıntıları'nda listelenen ülkeler ve bölgeler desteklenir.
Coğrafi kodlama istekleri, ana Google Haritalar uygulamasının coğrafi kodlama sunduğu tüm alanlar için gönderilebilir. Önyargılı çalışmanın yalnızca belirli bir alan adına ait sonuçları tercih ettiğini unutmayın. Bu alanın dışında daha alakalı sonuçlar varsa sonuçlar da dahil edilebilir.
Örneğin, "Toledo" için coğrafi kodlama, Coğrafi Kodlama Hizmeti için varsayılan alan ABD olarak ayarlandığı için 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ının 'es'
(İspanya) olarak ayarlandığı bir coğrafi kodlama, İ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ş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 öğ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
tüm idari bölge seviyeleriyle eşleşir.postalCode
posta kodları ve posta kodu önekleriyle 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
ölçütlerine 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 kullanıcıların okuyabileceği bir adresin haritadaki bir konuma dönüştürülmesini ifade eder. Haritadaki bir konumu okunabilir bir adrese çevirerek tersine çevirme süreci, ters coğrafi kodlama olarak bilinir.
Metin address
eklemek 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 söz konusu konumda ortalanır. Böylece, biçimlendirilmiş adresli 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 Deneyin
Önceki örnekte, results[0]
seçeneğini belirleyerek ilk sonucu gösterdiğimizi unutmayın. Ters coğrafi kodlayıcı genellikle birden fazla sonuç döndürür. Coğrafi kodlamalı adresler yalnızca posta adresleri değil, bir konumu coğrafi olarak adlandırmanın herhangi bir yoludur. Örneğin, Chicago şehrinde bir noktanın coğrafi kodlaması yapılırken, coğrafi kodlamalı nokta açık adres, şehir (Chicago), eyalet (Illinois) veya ülke (ABD) olarak etiketlenebilir. Bunların tümü, coğrafi kodlama yapan kişinin adresleridir. Ters coğrafi kodlayıcı bu sonuçların tümünü 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 az eşleşmeye doğru sıralanır. Bu örnekte olduğu gibi, daha açık adres genellikle en belirgin sonuçtur.
En spesifik sokak adresinden mahalleler, şehirler, ilçeler, eyaletler gibi daha dar kapsamlı siyasi kuruluşlara kadar farklı türlerde adresler döndürdüğümüzü unutmayın. Daha genel bir adresle eşleştirmek isterseniz results[].types
alanını inceleyebilirsiniz.
Not: Ters coğrafi kodlama tam olarak kesin bir kavram değildir. Coğrafi kodlayıcı, belirli bir tolerans dahilinde en yakın adreslenebilir yeri bulmaya çalışır.
Yer Kimliği için Adres Alma
Belirli bir yer kimliğinin adresini bulmak için placeId
girin. Yer kimliği, diğer Google API'leriyle kullanılabilecek 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
sağlayabilirsiniz. Yer kimlikleri hakkında daha fazla bilgi için yer kimliğine genel bakış bölümünü inceleyin.
Bir placeId
sağladığınızda, istek aşağıdaki alanlardan hiçbirini içeremez:
address
latLng
location
componentRestrictions
Aşağıdaki örnek bir yer kimliğini kabul eder, ilgili adresi bulur ve haritayı bu konuma ortalar. İlgili yerin biçimlendirilmiş adresini gösteren bir bilgi penceresi de açılır:
TypeScript
// Initialize the map. function initMap(): void { const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 8, center: { lat: 40.72, lng: -73.96 }, } ); const geocoder = new google.maps.Geocoder(); const infowindow = new google.maps.InfoWindow(); (document.getElementById("submit") as HTMLElement).addEventListener( "click", () => { geocodePlaceId(geocoder, map, infowindow); } ); } // This function is called when the user clicks the UI button requesting // a geocode of a place ID. function geocodePlaceId( geocoder: google.maps.Geocoder, map: google.maps.Map, infowindow: google.maps.InfoWindow ) { const placeId = (document.getElementById("place-id") as HTMLInputElement) .value; geocoder .geocode({ placeId: placeId }) .then(({ results }) => { if (results[0]) { map.setZoom(11); map.setCenter(results[0].geometry.location); const marker = new google.maps.Marker({ map, position: results[0].geometry.location, }); infowindow.setContent(results[0].formatted_address); infowindow.open(map, marker); } else { window.alert("No results found"); } }) .catch((e) => window.alert("Geocoder failed due to: " + e)); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
// Initialize the map. function initMap() { const map = new google.maps.Map(document.getElementById("map"), { zoom: 8, center: { lat: 40.72, lng: -73.96 }, }); const geocoder = new google.maps.Geocoder(); const infowindow = new google.maps.InfoWindow(); document.getElementById("submit").addEventListener("click", () => { geocodePlaceId(geocoder, map, infowindow); }); } // This function is called when the user clicks the UI button requesting // a geocode of a place ID. function geocodePlaceId(geocoder, map, infowindow) { const placeId = document.getElementById("place-id").value; geocoder .geocode({ placeId: placeId }) .then(({ results }) => { if (results[0]) { map.setZoom(11); map.setCenter(results[0].geometry.location); const marker = new google.maps.Marker({ map, position: results[0].geometry.location, }); infowindow.setContent(results[0].formatted_address); infowindow.open(map, marker); } else { window.alert("No results found"); } }) .catch((e) => window.alert("Geocoder failed due to: " + e)); } window.initMap = initMap;