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 URL'leri içerir.
Etkin API'lerin listesini görüntülemek için:
- Şuraya gidin: Google Cloud Console.
- Proje seçin düğmesini tıklayın, ardından oluşturduğunuz projeyi seçin JavaScript API'sini açın ve Aç'ı tıklayın.
- Kontrol Paneli'ndeki API listesinde, Geocoding API.
- Listede API'yi görüyorsanız hazırsınız demektir. API listede yoksa
şunu etkinleştirebilirsiniz:
- 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.
- Geocoding API ifadesini arayın ve ardından listeden bunu seçin. sonuç listesi.
- 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
.location
—LatLng
(veyaLatLngLiteral
) 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:
bounds
—LatLngBounds
ö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 parametresiADDRESS_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ğulong_name
oranında "Alaska" veshort_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, birLatLng
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çerebilenLatLngBounds
. 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österirpremise
, adlandırılmış bir konumu (genellikle bir bina veya ortak bir ada sahip bina koleksiyonusubpremise
, 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 adplus_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 sığmayan 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
vesublocality
, 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
vetransit_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 biraddress
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
veyalatlng
) 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>
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:
- Yalnızca bir ülke veya bölge belirtin. Birden çok değer yoksayılır ve başarısız bir isteğe neden olabilir.
- Yalnızca iki karakterlik bölge alt etiketlerini kullanın (Unicode CLDR biçimi). Diğer tüm ülkeler hataya neden olur.
- Yalnızca Google'da listelenen ülkeler ve bölgeler Haritalar Platformu Kapsam Ayrıntıları desteklenir.
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ı oluplanguage_code
iletext
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ı oluplanguage_code
iletext
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 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;