Genel Bakış
Coğrafi kodlama, adresleri ("1600 Amphitheatre Parkway, Mountain View, CA" gibi) coğrafi koordinatlara (enlem 37.423021 ve boylam -122.083739 gibi) dönüştürme işlemidir. Bu koordinatları, işaretçi yerleştirmek veya haritayı konumlandırmak için kullanabilirsiniz.
Tersine coğrafi kodlama, coğrafi koordinatları kullanıcı tarafından okunabilir bir adrese dönüştürme işlemidir (Tersine coğrafi kodlama (Adres Arama) bölümüne bakın).
Belirli bir yer kimliğinin adresini bulmak için coğrafi kodlayıcıyı da kullanabilirsiniz.
Maps JavaScript API, kullanıcı girişinden dinamik olarak coğrafi kodlama ve tersine coğrafi kodlama yapmak için bir Geocoder sınıfı sağlar. Bunun yerine statik, bilinen adresleri coğrafi olarak kodlamak istiyorsanız Geocoding web hizmeti'ne bakın. Geocoder API'sini, yazarken arama, posta adresi doğrulama veya saat dilimi arama için diğer Google Haritalar Platformu API'leriyle karşılaştırmak istiyorsanız Doğru adres veya koordinat API'sini seçme başlıklı makaleyi inceleyin.
Başlayın
Maps JavaScript API'deki Geocoding hizmetini kullanmadan önce Google Cloud Console'da, Maps JavaScript API için ayarladığınız projede Geocoding API'nin etkinleştirildiğinden emin olun.
Etkin API'lerinizin listesini görüntülemek için:
- 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çip Aç'ı tıklayın.
- Kontrol paneli'ndeki API listesinde Geocoding API'yi bulun.
- API'yi listede görüyorsanız hazırsınız demektir. API listede yoksa etkinleştirin:
- Kitaplık sekmesini görüntülemek için sayfanın üst kısmında API'Yİ ETKİNLEŞTİR'i seçin. Alternatif olarak, soldaki menüden Kitaplık'ı seçin.
- Geocoding API'yi arayın ve sonuç listesinden seçin.
- ETKİNLEŞTİR'i seçin. İşlem tamamlandığında Geocoding API, Kontrol Paneli'ndeki API'ler listesinde görünür.
Haritanız görüntülenmiyorsa veya tarayıcı konsolu bir API anahtarı ya da etkinleştirme hatası kaydediyorsa Sorun giderme ve Hata mesajları bölümlerine bakın.
Fiyatlandırma ve politikalar
Fiyatlandırma
JavaScript Geocoding hizmetinin fiyatlandırma ve kullanım politikaları hakkında bilgi edinmek için Geocoding API ile ilgili Kullanım ve Faturalandırma bölümüne bakın.
Politikalar
Geocoding hizmetini kullanımınız Geocoding API Politikaları'na uygun olmalıdır.
Geocoding Requests
Coğrafi Kodlama hizmetine erişim eşzamansızdır ve harici bir sunucuya çağrı yapılmasını gerektirir. Bu nedenle, geocode yöntemi, istek tamamlandığında çözümlenen bir promise döndürür. Çözümlendikten sonra yanıtı işlemek için .then() veya await kullanabilirsiniz.
Google Maps API coğrafi kodlama hizmetine kodunuzun içinden google.maps.Geocoder oluşturucu nesnesini kullanarak erişirsiniz. Geocoder.geocode() yöntemi, coğrafi kodlama hizmetine bir istek gönderir ve bu isteğe, giriş terimlerini içeren bir GeocoderRequest nesne değişmez değeri ile yanıt alındığında yürütülecek bir geri çağırma yöntemi iletir.
GeocoderRequest nesne değişmez değeri aşağıdaki alanları içerir:
{ address: string, location: LatLng, placeId: string, bounds: LatLngBounds, componentRestrictions: GeocoderComponentRestrictions, region: string }
Zorunlu parametreler: Aşağıdaki alanlardan yalnızca birini sağlamanız gerekir:
address: Coğrafi olarak kodlamak istediğiniz adres.
veya
location: En yakın, okunabilir adresi almak istediğinizLatLng(veyaLatLngLiteral). Coğrafi kodlayıcı, tersine coğrafi kodlama işlemi gerçekleştirir. Daha fazla bilgi için Tersine Coğrafi Kodlama bölümüne bakın.
veya
placeId: En yakın, okunabilir adresini almak istediğiniz yerin kimliği. Bir yer kimliği için adres alma hakkında daha fazla bilgi edinin.
İsteğe bağlı parametreler:
bounds: Coğrafi kod sonuçlarının daha belirgin şekilde önceliklendirileceğiLatLngBounds.boundsparametresi, coğrafi kodlayıcıdan gelen sonuçları tamamen kısıtlamaz, yalnızca etkiler. Görüntü alanı ağırlıklandırması hakkında daha fazla bilgi için aşağıya bakın.componentRestrictions: Sonuçları belirli bir alanla sınırlamak için kullanılır. Bileşen filtreleme hakkında daha fazla bilgi için aşağıya bakın.region: İki karakterli (sayısal olmayan) bir Unicode bölge alt etiketi olarak belirtilen bölge kodu. Çoğu durumda bu etiketler, doğrudan tanıdık ccTLD ("üst düzey alan") iki karakterli değerleriyle eşleşir.regionparametresi, coğrafi kodlayıcıdan gelen sonuçları tamamen kısıtlamaz, yalnızca etkiler. Bölge kodu ağırlığı hakkında daha fazla bilgi için aşağıya bakın.extraComputations: Bu parametre için izin verilen tek değerADDRESS_DESCRIPTORSdeğeridir. Daha fazla bilgi için adres tanımlayıcıları bölümüne bakın.fulfillOnZeroResults: Yanıttaki ZERO_RESULT durumunda vaadi yerine getirin. Sıfır coğrafi kodlama sonucu olsa bile ek yanıt düzeyi alanları döndürülebileceğinden bu durum tercih edilebilir. Daha fazla bilgi için Sıfır Sonuçta Karşılama bölümüne bakın.
Coğrafi Kodlama Yanıtları
Coğrafi kodlama hizmeti, coğrafi kodlayıcının sonuçları alındıktan sonra yürütülecek bir geri çağırma yöntemi gerektirir. Bu geri çağırma, results ve status kodunu sırasıyla tutmak için iki parametre iletmelidir.
Coğrafi Kodlama Sonuçları
GeocoderResult nesnesi, tek bir coğrafi kodlama sonucunu temsil eder. Coğrafi kod isteği birden fazla sonuç nesnesi döndürebilir:
results[]: { types[]: string, formatted_address: string, address_components[]: { short_name: string, long_name: string, postcode_localities[]: string, types[]: string }, partial_match: boolean, place_id: string, postcode_localities[]: string, geometry: { location: LatLng, location_type: GeocoderLocationType viewport: LatLngBounds, bounds: LatLngBounds } }
Bu alanlar aşağıda açıklanmıştır:
types[], döndürülen sonucun adres türünü belirten bir dizidir. Bu dizi, sonuçta döndürülen özelliğin türünü tanımlayan sıfır veya daha fazla etiket içerir. Örneğin, "Chicago" için coğrafi kod, "Chicago"nun bir şehir olduğunu belirten "yerleşim yeri" ve siyasi bir varlık olduğunu belirten "siyasi" değerini döndürür. Adres türleri ve adres bileşeni türleri hakkında daha fazla bilgi için aşağıya bakın.formatted_address, bu konumun kullanıcıların okuyabileceği adresini içeren bir dizedir.Bu adres genellikle posta adresiyle aynıdır. Birleşik Krallık gibi bazı ülkelerde, lisans kısıtlamaları nedeniyle gerçek posta adreslerinin dağıtımına izin verilmediğini unutmayın.
Biçimlendirilmiş adres, mantıksal olarak bir veya daha fazla adres bileşeninden oluşur. Örneğin, "111 8th Avenue, New York, NY" adresi şu bileşenlerden oluşur: "111" (sokak numarası), "8th Avenue" (rota), "New York" (şehir) ve "NY" (ABD eyaleti).
Biçimlendirilmiş adresi programatik olarak ayrıştırmayın. Bunun yerine, API yanıtının biçimlendirilmiş adres alanına ek olarak içerdiği bağımsız adres bileşenlerini kullanmanız gerekir.
address_components[], bu adres için geçerli olan ayrı bileşenleri içeren bir dizidir.Her adres bileşeni genellikle aşağıdaki alanları içerir:
types[], adres bileşeninin türünü belirten bir dizidir. Adres bileşeni için bilinen bir tür yoksa adres bileşeninin tür dizisi boş olabilir. API, gerektiğinde yeni tür değerleri ekleyebilir. Daha fazla bilgi için Adres türleri ve adres bileşeni türleri başlıklı makaleyi inceleyin.long_name, Geocoder tarafından döndürülen adres bileşeninin tam metin açıklaması veya adıdır.short_name, varsa adres bileşeninin kısaltılmış metin adıdır. Örneğin, Alaska eyaleti için bir adres bileşenininlong_namedeğeri "Alaska" veshort_namedeğeri, 2 harfli posta kısaltması kullanılarak "AK" olabilir.
address_components[]dizisiyle ilgili aşağıdaki bilgileri göz önünde bulundurun:- Adres bileşenleri dizisi,
formatted_addressdeğerinden daha fazla bileşen içerebilir. - Dizi,
formatted_addressiçinde yer alanlar dışında, adres içeren tüm siyasi varlıkları içermeyebilir. Belirli bir adresi içeren tüm siyasi varlıkları almak için tersine coğrafi kodlama kullanmanız ve adresin enlem/boylam bilgisini isteğe parametre olarak iletmeniz gerekir. - Yanıt biçiminin istekler arasında aynı kalacağı garanti edilmez. Özellikle
address_componentssayısı, istenen adrese göre değişir ve aynı adres için zaman içinde değişebilir. Bir bileşen, dizideki konumunu değiştirebilir. Bileşenin türü değişebilir. Belirli bir bileşen sonraki bir yanıtta eksik olabilir.
Adres türleri ve adres bileşeni türleri hakkında daha fazla bilgi için aşağıya bakın.
-
partial_match, coğrafi kodlayıcının orijinal istek için tam eşleşme döndürmediğini ancak istenen adresin bir kısmını eşleştirebildiğini gösterir. Orijinal istekte yazım hataları ve/veya eksik adres olup olmadığını inceleyebilirsiniz.Kısmi eşleşmeler genellikle istekte ilettiğiniz bölgede bulunmayan açık adresler için gerçekleşir. Bir istek aynı bölgedeki iki veya daha fazla konumla eşleştiğinde de kısmi eşleşmeler döndürülebilir. Örneğin, "Hillpar St, Bristol, UK" araması hem Henry Street hem de Henrietta Street için kısmi eşleşme döndürür. Bir istekte yanlış yazılmış bir adres bileşeni varsa coğrafi kodlama hizmetinin alternatif bir adres önerebileceğini unutmayın. Bu şekilde tetiklenen öneriler de kısmi eşleşme olarak işaretlenir.
place_id, bir yerin benzersiz tanımlayıcısıdır ve diğer Google API'leriyle kullanılabilir. Örneğin, Google Places API kitaplığıylaplace_idkullanarak yerel bir işletmenin telefon numarası, çalışma saatleri, kullanıcı yorumları ve diğer bilgileri gibi ayrıntılarını alabilirsiniz. Yer kimliğine genel bakış bölümünü inceleyin.postcode_localities[], bir posta kodunda bulunan tüm yerleşimleri gösteren bir dizidir ve yalnızca sonuç birden fazla yerleşim içeren bir posta kodu olduğunda gösterilir.geometryaşağıdaki bilgileri içerir:location, coğrafi kodlu enlem, boylam değerini içerir. Bu konumun biçimlendirilmiş bir dize olarak değil,LatLngnesnesi olarak döndürüldüğünü unutmayın.location_type, belirtilen konumla ilgili ek verileri depolar. Aşağıdaki değerler desteklenir:ROOFTOP, döndürülen sonucun tam bir coğrafi kodu yansıttığını gösterir.RANGE_INTERPOLATEDdöndürülen sonucun, iki kesin nokta (ör. kavşaklar) arasında enterpolasyonla hesaplanan bir yaklaşık değeri (genellikle bir yol üzerinde) yansıttığını gösterir. Ara değer hesaplamalı sonuçlar genellikle bir açık adres için çatı coğrafi kodları kullanılamadığında döndürülür.GEOMETRIC_CENTER, döndürülen sonucun, çoklu çizgi (ör. sokak) veya çokgen (bölge) gibi bir sonucun geometrik merkezi olduğunu gösterir.APPROXIMATE, döndürülen sonucun yaklaşık olduğunu gösterir.
viewport, döndürülen sonuç için önerilen görüntü alanını depolar.bounds(isteğe bağlı olarak döndürülür), döndürülen sonucu tam olarak içerebilenLatLngBoundsdeğerini depolar. Bu sınırların, önerilen görüntü alanıyla eşleşmeyebileceğini unutmayın. (Örneğin, San Francisco, teknik olarak şehrin bir parçası olan ancak görüntü alanında döndürülmemesi gereken Farallon Adaları'nı içerir.)
Adresler, tarayıcının tercih edilen dil ayarı veya API JavaScript'i language parametresi kullanılarak yüklenirken belirtilen dil kullanılarak Geocoder tarafından döndürülür. (Daha fazla bilgi için
Yerelleştirme bölümüne bakın.)
Adres türleri ve adres bileşeni türleri
Yanıttaki GeocoderResult içinde bulunan types[] dizisi, adres türünü gösterir. Adres türlerine örnek olarak açık adres, ülke veya siyasi bir varlık verilebilir. GeocoderAddressComponent'teki types dizisi, adresin her bir bölümünün türünü gösterir. Bina numarası veya ülke buna örnek olarak verilebilir.
Adreslerin birden fazla türü olabilir. Türler "etiket" olarak kabul edilebilir.
Örneğin, birçok şehir political ve locality türleriyle etiketlenir.
Aşağıdaki türler desteklenir ve hem adres türü hem de adres bileşeni türü dizilerinde döndürülür:
| Adres Türü | Açıklama |
|---|---|
street_address |
Tam açık adres. |
route |
Adlandırılmış bir rota (ör. "US 101"). |
intersection |
Genellikle iki ana yolun kesiştiği büyük bir kavşak. |
political |
Siyasi bir tüzel kişi. Genellikle bu tür, bir sivil idarenin poligonunu gösterir. |
country |
Ulusal siyasi varlık. Genellikle Coğrafi Kodlayıcı tarafından döndürülen en yüksek düzeydeki türdür. |
administrative_area_level_1 |
Ülke düzeyinin altındaki birinci dereceden idari bölge. Amerika Birleşik Devletleri'nde bu idari düzeyler eyaletlerdir. Bu idari düzeyler bazı ülkelerde kullanılmaz. Çoğu durumda administrative_area_level_1 kısa adları, ISO 3166-2 alt bölümleri ve yaygın olarak kullanılan diğer listelerle büyük ölçüde eşleşir. Ancak coğrafi kodlama sonuçlarımız çeşitli sinyallere ve konum verilerine dayandığından bu durum garanti edilmez. |
administrative_area_level_2 |
Ülke düzeyinin altındaki ikinci dereceden idari bölge. Amerika Birleşik Devletleri'nde bu idari düzeyler ilçelerdir. Bu idari düzeyler bazı ülkelerde kullanılmaz. |
administrative_area_level_3 |
Ülke düzeyinin altındaki üçüncü düzey idari bölge. Bu tür, küçük bir idari bölgeyi gösterir. Bu idari düzeyler bazı ülkelerde kullanılmaz. |
administrative_area_level_4 |
Ülke düzeyinin altındaki dördüncü düzey idari bölge. Bu tür, küçük bir idari bölgeyi gösterir. Bu idari düzeyler bazı ülkelerde kullanılmaz. |
administrative_area_level_5 |
Ülke düzeyinin altındaki beşinci düzey idari bölge. Bu tür, küçük bir idari bölgeyi gösterir. Bu idari düzeyler bazı ülkelerde kullanılmaz. |
administrative_area_level_6 |
Ülke düzeyinin altındaki altıncı düzey idari bölge. Bu tür, küçük bir idari bölgeyi gösterir. Bu idari düzeyler bazı ülkelerde kullanılmaz. |
administrative_area_level_7 |
Ülke düzeyinin altındaki yedinci dereceden idari bölge. Bu tür, küçük bir idari bölgeyi gösterir. Bu idari düzeyler bazı ülkelerde kullanılmaz. |
colloquial_area |
Varlığın yaygın olarak kullanılan alternatif adı. |
locality |
Anonim bir şehir veya kasaba siyasi kuruluşu. |
sublocality |
Bir yerleşim yerinin altındaki birinci dereceden idari bölge. Bazı konumlarda ek türlerden biri (sublocality_level_1 - sublocality_level_5) kullanılabilir. Her alt semt düzeyi bir sivil tüzel kişidir. Daha büyük sayılar daha küçük bir coğrafi alanı gösterir. |
neighborhood |
Adlandırılmış bir mahalle. |
premise |
Adlandırılmış bir konum. Genellikle bir bina veya ortak adı olan bir bina grubudur. |
subpremise |
Tesis düzeyinin altında, adreslenebilir bir varlık (ör. apartman dairesi, birim veya süit). |
plus_code |
Enlem ve boylamdan türetilen, kodlanmış bir konum referansı. Plus Code'lar, açık adreslerin bulunmadığı yerlerde (binaların numaralandırılmadığı veya sokakların adlandırılmadığı yerler) açık adreslerin yerine kullanılabilir. Ayrıntılar için https://plus.codes adresini ziyaret edin. |
postal_code |
Ülke içinde posta göndermek için kullanılan posta kodu. |
natural_feature |
Önemli bir doğal özellik. |
airport |
Havaalanı. |
park |
Adlandırılmış bir park. |
point_of_interest |
Adlandırılmış önemli yer. Genellikle bu "ÖY"ler, "Empire State Binası" veya "Eyfel Kulesi" gibi başka bir kategoriye kolayca uymayan, öne çıkan yerel öğelerdir. |
Boş bir tür listesi, belirli adres bileşeni için bilinen bir tür olmadığını gösterir (örneğin, Fransa'da Lieu-dit).
Yukarıdakilere ek olarak, adres bileşenleri aşağıdaki türleri içerebilir.
Not: Bu liste tam kapsamlı değildir ve değişebilir.
Yukarıdakilere ek olarak, adres bileşenleri aşağıda listelenen türleri içerebilir.
| Adres Bileşeni Türü | Açıklama |
|---|---|
floor |
Bina adresinin katı. |
establishment |
Genellikle henüz kategorize edilmemiş bir yerdir. |
landmark |
Navigasyona yardımcı olmak için referans olarak kullanılan yakındaki bir yer. |
point_of_interest |
Adlandırılmış önemli yer. |
parking |
Otopark veya katlı otopark. |
post_box |
Belirli bir posta kutusu. |
postal_town |
Bazı ülkelerde posta adresleri için kullanılan, locality ve sublocality gibi coğrafi alanların gruplandırılması. |
room |
Bina adresinin oda bilgisi. |
street_number |
Tam sokak numarası. |
bus_station, train_station ve transit_station |
Otobüs, tren veya toplu taşıma durağının konumu. |
Durum Kodları
status kodu aşağıdaki değerlerden birini döndürebilir:
"OK", hata oluşmadığını, adresin başarıyla ayrıştırıldığını ve en az bir coğrafi kodun döndürüldüğünü gösterir."ZERO_RESULTS", coğrafi kodun başarılı olduğunu ancak sonuç döndürmediğini gösterir. Coğrafi kodlayıcıya mevcut olmayan biraddressiletildiğinde bu durum ortaya çıkabilir."OVER_QUERY_LIMIT", kotanızı aştığınızı gösterir."REQUEST_DENIED", isteğinizin reddedildiğini gösterir. Web sayfasının coğrafi kodlayıcıyı kullanmasına izin verilmiyor."INVALID_REQUEST"genellikle sorgunun (address,componentsveyalatlng) eksik olduğunu gösterir."UNKNOWN_ERROR", isteğin bir sunucu hatası nedeniyle işlenemediğini gösterir. Tekrar denerseniz istek başarılı olabilir."ERROR", isteğin zaman aşımına uğradığını veya Google sunucularıyla bağlantı kurulurken bir sorun oluştuğunu gösterir. Tekrar denerseniz istek başarılı olabilir.
Coğrafi Kodlama Örneği
Aşağıdaki örnekte, bir adresin coğrafi kodlaması ve döndürülen enlem ve boylam değerlerine bir işaretçi yerleştirilmesi gösterilmektedir. Coğrafi kodlama sonucu, bir Promise kullanılarak işlenir. Haritada herhangi bir yeri tıklayarak o konumdaki adresi coğrafi olarak kodlayın.
TypeScript
async function geocode(request: google.maps.GeocoderRequest) { clear(); const { LatLng } = await google.maps.importLibrary('core'); try { const response = await geocoder.geocode(request); const { results } = response; innerMap.setCenter(results[0].geometry.location); marker.position = new LatLng(results[0].geometry.location); mapElement.append(marker); responseDiv.style.display = 'block'; responsePre.innerText = JSON.stringify(response, null, 2); return results; } catch (e) { alert( 'Geocode was not successful for the following reason: ' + String(e) ); } }
JavaScript
async function geocode(request) { clear(); const { LatLng } = await google.maps.importLibrary('core'); try { const response = await geocoder.geocode(request); const { results } = response; innerMap.setCenter(results[0].geometry.location); marker.position = new LatLng(results[0].geometry.location); mapElement.append(marker); responseDiv.style.display = 'block'; responsePre.innerText = JSON.stringify(response, null, 2); return results; } catch (e) { alert( 'Geocode was not successful for the following reason: ' + String(e) ); } }
Görüntü Alanı Tercihi
Coğrafi Kodlama Hizmeti'ne, belirli bir görüntü alanındaki (sınırlayıcı kutu olarak ifade edilir) sonuçları tercih etmesi talimatını verebilirsiniz. Bunu yapmak için GeocoderRequest nesne değişmez değeri içindeki bounds parametresini ayarlayarak bu görüntü alanının sınırlarını tanımlayın. Yönlendirmenin yalnızca sınırlar içindeki sonuçları tercih ettiğini unutmayın. Bu sınırların dışında daha alakalı sonuçlar varsa bunlar da dahil edilebilir.
Örneğin, "Winnetka" için bir coğrafi kod genellikle Chicago'nun şu banliyösünü döndürür:
{ "types":["locality","political"], "formatted_address":"Winnetka, IL, USA", "address_components":[{ "long_name":"Winnetka", "short_name":"Winnetka", "types":["locality","political"] },{ "long_name":"Illinois", "short_name":"IL", "types":["administrative_area_level_1","political"] },{ "long_name":"United States", "short_name":"US", "types":["country","political"] }], "geometry":{ "location":[ -87.7417070, 42.1083080], "location_type":"APPROXIMATE" }, "place_id": "ChIJW8Va5TnED4gRY91Ng47qy3Q" }
Ancak Los Angeles'ın San Fernando Vadisi için sınırlayıcı kutu tanımlayan bir bounds parametresi belirtildiğinde bu coğrafi kod, söz konusu konumdaki "Winnetka" adlı mahalleyi döndürür:
{ "types":["sublocality","political"], "formatted_address":"Winnetka, California, USA", "address_components":[{ "long_name":"Winnetka", "short_name":"Winnetka", "types":["sublocality","political"] },{ "long_name":"Los Angeles", "short_name":"Los Angeles", "types":["administrative_area_level_3","political"] },{ "long_name":"Los Angeles", "short_name":"Los Angeles", "types":["administrative_area_level_2","political"] },{ "long_name":"California", "short_name":"CA", "types":["administrative_area_level_1","political"] },{ "long_name":"United States", "short_name":"US", "types":["country","political"] }], "geometry":{ "location": [34.213171,-118.571022], "location_type":"APPROXIMATE" }, "place_id": "ChIJ0fd4S_KbwoAR2hRDrsr3HmQ" }
Bölge kodu ağırlığı
Coğrafi Kodlama Hizmeti'ni, region parametresini kullanarak belirli bir bölgeye yönelik sonuçlara ağırlık verecek şekilde ayarlayabilirsiniz. Bu parametre, iki karakterli (sayısal olmayan) bir Unicode bölge alt etiketi olarak belirtilen bir bölge kodu alır. Bu etiketler, doğrudan tanıdık ccTLD ("üst düzey alan") iki karakterli değerlerle (örneğin, "co.uk" içindeki "uk") eşlenir. Bazı durumlarda region etiketi, bazen ccTLD değerlerinden farklı olan ISO-3166-1 kodlarını da destekler (örneğin, "Büyük Britanya" için "GB").
region parametresini kullanırken:
- Yalnızca bir ülke veya bölge belirtin. Birden fazla değer yoksayılır ve isteğin başarısız olmasına neden olabilir.
- Yalnızca iki karakterli bölge alt etiketleri (Unicode CLDR biçimi) kullanın. Diğer tüm girişler hataya neden olur.
- Yalnızca Google Maps Platform Kapsam Ayrıntıları'nda listelenen ülkeler ve bölgeler desteklenir.
Coğrafi kodlama istekleri, ana Google Haritalar uygulamasının coğrafi kodlama sunduğu her alan için gönderilebilir. Yönlendirmenin yalnızca belirli bir alan için sonuçları tercih ettiğini unutmayın. Bu alanın dışında daha alakalı sonuçlar varsa bunlar dahil edilebilir.
Örneğin, Coğrafi Kodlama Hizmeti'nin varsayılan alanı ABD olarak ayarlandığından "Toledo" için bir coğrafi kod şu sonucu döndürür:
{ "types":["locality","political"], "formatted_address":"Toledo, OH, USA", "address_components":[{ "long_name":"Toledo", "short_name":"Toledo", "types":["locality","political"] },{ "long_name":"Ohio", "short_name":"OH", "types":["administrative_area_level_1","political"] },{ "long_name":"United States", "short_name":"US", "types":["country","political"] }], "place_id": "ChIJeU4e_C2HO4gRRcM6RZ_IPHw" }
region alanı 'es' (İspanya) olarak ayarlanmış "Toledo" için coğrafi kod, İspanya'daki şehri döndürür:
{ "types":["locality","political"], "formatted_address":"Toledo, España", "address_components":[{ "long_name":"Toledo", "short_name":"Toledo", "types":["locality","political"] },{ "long_name":"Toledo", "short_name":"TO", "types":["administrative_area_level_2","political"] },{ "long_name":"Castilla-La Mancha", "short_name":"CM", "types":["administrative_area_level_1","political"] },{ "long_name":"España", "short_name":"ES", "types":["country","political"] }], "place_id": "ChIJ8f21C60Lag0R_q11auhbf8Y" }
Bileşen Filtreleme
Geocoding Service'i, bileşen filtresi kullanarak adres sonuçlarını belirli bir alanla kısıtlayacak şekilde ayarlayabilirsiniz. Filtreyi
componentRestrictions parametresinde belirtin. Filtre değerleri, diğer coğrafi kodlama istekleriyle aynı yazım düzeltme ve kısmi eşleme yöntemlerini destekler.
Coğrafi kodlayıcı, yalnızca tüm bileşen filtreleriyle eşleşen sonuçları döndürür. Yani filtre spesifikasyonlarını VEYA olarak değil, VE olarak değerlendirir.
Bileşen filtresi, aşağıdaki öğelerden birini veya daha fazlasını içerir:
route, bir rotanın uzun veya kısa adıyla eşleşir.locality, yerleşim yeri ve alt yerleşim yeri türleriyle eşleşir.administrativeArea, tüm bağlı olduğu yer düzeyleriyle eşleşir.postalCode, posta kodları ve posta kodu önekleriyle eşleşir.country, bir ülke adıyla veya iki harfli ISO 3166-1 ülke koduyla eşleşir. Not: API, ülkeleri tanımlamak için ISO standardını kullanır ve filtreleme, ülkenin ilgili ISO kodu kullanıldığında en iyi şekilde çalışır.
Aşağıdaki örnekte, country ve postalCode ölçütlerine göre filtreleme yapmak için
componentRestrictions parametresinin kullanımı gösterilmektedir:
async function codeAddress(request: google.maps.GeocoderRequest) { clear(); geocoder.geocode({ componentRestrictions: { country: 'AU', postalCode: '2000' } }) .then((result) => { const { results } = result; innerMap.setCenter(results[0].geometry.location); let marker = new google.maps.marker.AdvancedMarkerElement({ map: innerMap, position: results[0].geometry.location }); }) .catch((e) => { alert('Geocode was not successful for the following reason: ' + e); }); };
Sıfır Sonuçta Karşılama
Tersine coğrafi kodlama için taahhüt varsayılan olarak status=ZERO_RESULTS tarihinde bozulur. Ancak bu durumda, plus_code ve address_descriptor ek yanıt düzeyi alanları doldurulabilir. fulfillOnZeroResults parametresi için true değeri sağlanırsa bu durumda doldurulur. fulfillOnZeroResults parametresi için true değeri sağlanırsa
promise bozulmaz ve varsa bu ek alanlara promise'den erişilebilir.
Aşağıda, Antarktika'daki bir enlem/boylam için bu davranışa dair bir örnek verilmiştir.
Tersine coğrafi kodlama sonucu olmasa bile fulfillOnZeroResults=true değerini ayarlarsak Plus Code'u yazdırabiliriz.
function addressDescriptorReverseGeocoding() { var latlng = new google.maps.LatLng(-75.290330, 38.653861); geocoder .geocode({ 'location': latlng, 'fulfillOnZeroResults': true, }) .then((response) => { console.log(response.plus_code); }) .catch((error) => { window.alert(`Error: ${error}`); }); }
Adres Tanımlayıcılar
Adres tanımlayıcılar, önemli noktaları ve alanları kullanarak bir konumu tanımlamaya yardımcı olan ek bilgiler içerir. Özelliği keşfetmek için adres tanımlayıcılar demosuna göz atın.
Adres tanımlayıcılar, extraComputations parametresi kullanılarak etkinleştirilebilir. Yanıtınızda adres tanımlayıcıları almak için coğrafi kodlama isteğine, tersine coğrafi kodlama isteğine veya yer coğrafi kodlama isteğine extra_computations=ADDRESS_DESCRIPTORS parametresini ekleyin.
Yerlerin coğrafi kodlamasıyla ilgili örnek
Aşağıdaki sorgu, Delhi'deki bir yerin adresini içeriyor.
function addressDescriptorPlaceIdLookup() { geocoder.geocode({ geocoder.geocode({ 'placeId': 'ChIJyxAX8Bj9DDkRgBfAnBYa66Q', 'extraComputations': ['ADDRESS_DESCRIPTORS'] }, function(results, status) { if (status == 'OK') { console.log(results[0].address_descriptor); } else { window.alert('Geocode was not successful for the following reason: ' + status); } }); }
Tersine coğrafi kodlama örneği
Aşağıdaki sorgu, Delhi'deki bir konumun enlem/boylam değerini içerir.
function addressDescriptorReverseGeocoding() { var latlng = new google.maps.LatLng(28.640964,77.235875); geocoder .geocode({ 'location': latlng, 'extraComputations': ["ADDRESS_DESCRIPTORS"], }) .then((response) => { console.log(response.address_descriptor); }) .catch((error) => { window.alert(`Error`); }); }
Adres Tanımlayıcı Örneği
Örnek bir address_descriptor aşağıda verilmiştir.
{ "address_descriptor" : { "areas" : [ { "containment" : "OUTSKIRTS", "display_name" : { "language_code" : "en", "text" : "Turkman Gate" }, "place_id" : "ChIJ_7LLvyb9DDkRMKKxP9YyXgs" }, { "containment" : "OUTSKIRTS", "display_name" : { "language_code" : "en", "text" : "Chandni Chowk" }, "place_id" : "ChIJWcXciBr9DDkRUb4dCDykTwI" }, { "containment" : "NEAR", "display_name" : { "language_code" : "en", "text" : "Katar Ganj" }, "place_id" : "ChIJH3cWUyH9DDkRaw-9CjvcRvY" } ], "landmarks" : [ { "display_name" : { "language_code" : "en", "text" : "Delite Cinema" }, "straight_line_distance_meters" : 29.9306755065918, "place_id" : "ChIJLfiYDCT9DDkROoEa7NdupUM", "travel_distance_meters" : 418.7794799804688, "spatial_relationship" : "ACROSS_THE_ROAD", "types" : [ "establishment", "movie_theater", "point_of_interest" ] }, { "display_name" : { "language_code" : "en", "text" : "YES Bank" }, "straight_line_distance_meters" : 66.83731079101562, "place_id" : "ChIJFYHM3yb9DDkRRKGkZl2mpSQ", "travel_distance_meters" : 489.0340270996094, "spatial_relationship" : "DOWN_THE_ROAD", "types" : [ "bank", "establishment", "finance", "point_of_interest" ] }, { "display_name" : { "language_code" : "en", "text" : "UCO Bank" }, "straight_line_distance_meters" : 25.38849639892578, "place_id" : "ChIJ-c6_wCb9DDkRjIk1LeqRtGM", "travel_distance_meters" : 403.2246398925781, "spatial_relationship" : "ACROSS_THE_ROAD", "types" : [ "atm", "bank", "establishment", "finance", "point_of_interest" ] }, { "display_name" : { "language_code" : "en", "text" : "Delhi By Cycle Meeting Point" }, "straight_line_distance_meters" : 44.02867126464844, "place_id" : "ChIJNxVfkSb9DDkRJD22l-eGFdM", "travel_distance_meters" : 97.41281890869141, "spatial_relationship" : "AROUND_THE_CORNER", "types" : [ "establishment", "point_of_interest", "tourist_attraction", "travel_agency" ] }, { "display_name" : { "language_code" : "en", "text" : "Axis Bank Branch" }, "straight_line_distance_meters" : 102.3495178222656, "place_id" : "ChIJr3uaDCT9DDkR8roHTVSn1x4", "travel_distance_meters" : 330.8566284179688, "spatial_relationship" : "DOWN_THE_ROAD", "types" : [ "bank", "establishment", "finance", "point_of_interest" ] } ] } }
Her address_descriptor nesnesinde iki dizi vardır: landmarks ve areas. landmarks dizisi, istenen koordinata yakınlık, önemli noktanın yaygınlığı ve görünürlüğü dikkate alınarak alaka düzeyine göre sıralanmış en fazla 5 sonuç içerir. Her önemli nokta sonucu aşağıdaki değerleri içerir:
place_id, önemli yerler sonucunun yer kimliğidir. Yer kimliğine genel bakış bölümünü inceleyin.display_name, önemli noktanın görünen adıdır velanguage_codeiletextdeğerlerini içerir.straight_line_distance_meters, giriş koordinatı ile önemli nokta sonucu arasındaki metre cinsinden noktadan noktaya mesafedir.travel_distance_meters, giriş koordinatı ile önemli nokta sonucu arasında yol ağı kullanılarak (yol kısıtlamaları dikkate alınmadan) kat edilen metre cinsinden mesafedir.spatial_relationship, giriş koordinatı ile önemli nokta sonucu arasındaki tahmini ilişkidir:- Aşağıdakilerden hiçbiri geçerli olmadığında varsayılan ilişki
"NEAR"olur. - Giriş koordinatı, önemli noktayla ilişkili yapının sınırları içinde olduğunda
"WITHIN". "BESIDE"(giriş koordinatı, önemli noktaya veya önemli noktanın erişim noktasına doğrudan bitişik olduğunda)."ACROSS_THE_ROAD", giriş koordinatı rotanın diğer tarafındaki önemli noktanın tam karşısındaysa."DOWN_THE_ROAD", giriş koordinatı önemli yerle aynı rota üzerindeyse kullanılır."BESIDES"veya"ACROSS_THE_ROAD"kullanılmaz.- Giriş koordinatı, önemli nokta ile dikey bir rota üzerindeyse (tek bir dönüşle sınırlı)
"AROUND_THE_CORNER". "BEHIND", giriş koordinatı önemli noktaya mekansal olarak yakın ancak erişim noktasına uzak olduğunda.types, önemli noktanın yer türleridir.
areas nesnesi en fazla 3 yanıt içerir ve mahalleler, alt idari bölgeler ve büyük kompleksler gibi küçük bölgeleri temsil eden yerlerle sınırlıdır. İstenen koordinatı içeren alanlar ilk olarak listelenir ve en küçükten en büyüğe doğru sıralanır. Her areas sonucu aşağıdaki değerleri içerir:
place_id, alanlar sonucunun yer kimliğidir. Yer kimliğine genel bakış bölümünü inceleyin.display_name, alanın görünen adıdır velanguage_codeiletextdeğerlerini içerir.containment, giriş koordinatı ile alan sonucu arasındaki tahmini kapsama ilişkisidir:- Aşağıdakilerden hiçbiri geçerli olmadığında varsayılan ilişki
"NEAR"olur. - Giriş koordinatı alanın merkezine yakın olduğunda
"WITHIN". "OUTSKIRTS", giriş koordinatı alanın kenarına yakın olduğunda.
Adres Tanımlayıcı Kapsamı
Adres tanımlayıcılar Hindistan'da genel kullanıma sunuldu. Hindistan'da adres tanımlayıcıların kullanımı ek ücrete tabi değildir ve kullanım, mevcut Geocoding (India) Essentials SKU'su kapsamındadır.
Geri bildirim
Bu özellik tüm bölgelerde kullanılabilir. Hindistan'da GKST aşamasındadır. Diğer tüm bölgelerde ise GKST öncesi deneysel lansman aşamasındadır. Geri bildirimlerinizi bekliyoruz:
- Yalnızca Hindistan bölgesiyle ilgili sorunlar için destek ekibiyle iletişime geçin.
- Deneysel sürümle ilgili geri bildirimlerinizi address-descriptors-feedback@google.com adresine e-posta göndererek iletebilirsiniz.
- Daha fazla bilgi için Adres tanımlayıcıların kapsam ayrıntıları başlıklı makaleyi inceleyin.
Tersine Coğrafi Kodlama (Adres Arama)
Coğrafi kodlama terimi genellikle, okunabilir bir adresin haritadaki bir konuma dönüştürülmesini ifade eder. Bunun tersini yapma, yani haritadaki bir konumu okunabilir bir adrese dönüştürme işlemi tersine coğrafi kodlama olarak bilinir.
Metin biçiminde bir address sağlamak yerine, location parametresinde virgülle ayrılmış bir enlem/boylam çifti sağlayın.
Aşağıdaki örnekte, bir enlem/boylam değeri coğrafi olarak kodlanır ve harita bu konumda ortalanarak biçimlendirilmiş adresi içeren bir bilgi penceresi açılır. Konumu coğrafi olarak kodlamak için haritada herhangi bir yeri tıklayın veya kendi koordinatlarınızı girin.
TypeScript
let marker: google.maps.marker.AdvancedMarkerElement; async function init() { // Request the needed libraries. const [{ InfoWindow }, { Geocoder }, { AdvancedMarkerElement }] = await Promise.all([ google.maps.importLibrary('maps'), google.maps.importLibrary('geocoding'), google.maps.importLibrary('marker'), ]); // Get the gmp-map element. const mapElement = document.querySelector('gmp-map')!; // Get the inner map. const innerMap = mapElement.innerMap; // Get the latlng input box. const latLngQuery = document.getElementById('latlng') as HTMLInputElement; // Get the submit button. const submitButton = document.getElementById('submit')!; // Set the cursor to crosshair. innerMap.setOptions({ draggableCursor: 'crosshair', zoom: 13, mapTypeControl: false, }); // Create a marker for re-use. marker = new AdvancedMarkerElement({ map: innerMap, }); marker.anchorTop = '40px'; const geocoder = new Geocoder(); const infoWindow = new InfoWindow(); // Add a click event listener to the submit button. submitButton.addEventListener('click', () => { void geocodeLatLng(geocoder, innerMap, infoWindow); }); // Add a click event listener to the map. innerMap.addListener('click', (event: google.maps.MapMouseEvent) => { if (event.latLng) { latLngQuery.value = `${event.latLng.lat()}, ${event.latLng.lng()}`; void geocodeLatLng(geocoder, innerMap, infoWindow); } }); // Make an initial request upon loading. void geocodeLatLng(geocoder, innerMap, infoWindow); } async function geocodeLatLng( geocoder: google.maps.Geocoder, map: google.maps.Map, infoWindow: google.maps.InfoWindow ) { const input = (document.getElementById('latlng') as HTMLInputElement).value; const latlngStr = input.split(',', 2); const latlng = { lat: parseFloat(latlngStr[0]), lng: parseFloat(latlngStr[1]), }; try { const { results } = await geocoder.geocode({ location: latlng }); if (results[0]) { marker.position = latlng; map.setCenter(latlng); infoWindow.setContent(results[0].formatted_address); infoWindow.open(map, marker); } else { window.alert('No results found'); } } catch (e) { window.alert('Geocoder failed due to: ' + String(e)); } } void init();
JavaScript
let marker; async function init() { // Request the needed libraries. const [{ InfoWindow }, { Geocoder }, { AdvancedMarkerElement }] = await Promise.all([ google.maps.importLibrary('maps'), google.maps.importLibrary('geocoding'), google.maps.importLibrary('marker'), ]); // Get the gmp-map element. const mapElement = document.querySelector('gmp-map'); // Get the inner map. const innerMap = mapElement.innerMap; // Get the latlng input box. const latLngQuery = document.getElementById('latlng'); // Get the submit button. const submitButton = document.getElementById('submit'); // Set the cursor to crosshair. innerMap.setOptions({ draggableCursor: 'crosshair', zoom: 13, mapTypeControl: false, }); // Create a marker for re-use. marker = new AdvancedMarkerElement({ map: innerMap, }); marker.anchorTop = '40px'; const geocoder = new Geocoder(); const infoWindow = new InfoWindow(); // Add a click event listener to the submit button. submitButton.addEventListener('click', () => { void geocodeLatLng(geocoder, innerMap, infoWindow); }); // Add a click event listener to the map. innerMap.addListener('click', (event) => { if (event.latLng) { latLngQuery.value = `${event.latLng.lat()}, ${event.latLng.lng()}`; void geocodeLatLng(geocoder, innerMap, infoWindow); } }); // Make an initial request upon loading. void geocodeLatLng(geocoder, innerMap, infoWindow); } async function geocodeLatLng(geocoder, map, infoWindow) { const input = document.getElementById('latlng').value; const latlngStr = input.split(',', 2); const latlng = { lat: parseFloat(latlngStr[0]), lng: parseFloat(latlngStr[1]), }; try { const { results } = await geocoder.geocode({ location: latlng }); if (results[0]) { marker.position = latlng; map.setCenter(latlng); infoWindow.setContent(results[0].formatted_address); infoWindow.open(map, marker); } else { window.alert('No results found'); } } catch (e) { window.alert('Geocoder failed due to: ' + String(e)); } } void init();
CSS
/* * Always set the map height explicitly to define the size of the div element * that contains the map. */ gmp-map { height: 100%; } /* * Optional: Makes the sample page fill the window. */ html, body { height: 100%; margin: 0; padding: 0; font-family: Roboto, sans-serif; } #floating-panel { background-color: #fff; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px; margin: 10px; padding: 10px; font-family: Roboto, sans-serif; font-size: 1rem; } #latlng { width: 100%; font-family: Roboto, sans-serif; font-size: 1rem; margin-bottom: 4px; } #submit { font-size: 1rem; }
HTML
<html>
<head>
<title>Reverse Geocoding</title>
<link rel="stylesheet" type="text/css" href="./style.css" />
<script type="module" src="./index.js"></script>
<script>
// prettier-ignore
(g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({
key: "GOOGLE_MAPS_API_KEY"
});
</script>
</head>
<body>
<gmp-map center="0.714224, -73.961452" zoom="8" map-id="DEMO_MAP_ID">
<div id="floating-panel" slot="control-block-start-inline-start">
<p>
Click the map to reverse geocode, or add your own
coordinates.
</p>
<input
id="latlng"
type="text"
value="40.714224, -73.961452" /><br />
<input id="submit" type="button" value="Reverse Geocode" />
</div>
</gmp-map>
</body>
</html>Önceki örnekte, results[0] seçeneğini belirleyerek ilk sonucu gösterdiğimizi unutmayın. Tersine coğrafi kodlayıcı genellikle birden fazla sonuç döndürür. Coğrafi kodlu adresler yalnızca posta adresleri değil, bir konumu coğrafi olarak adlandırmanın her yoludur. Örneğin, Chicago şehrindeki bir noktayı coğrafi olarak kodlarken coğrafi olarak kodlanmış nokta açık adres, şehir (Chicago), eyalet (Illinois) veya ülke (ABD) olarak etiketlenebilir. Tümü coğrafi kodlayıcıya gönderilen adreslerdir. Tersine coğrafi kodlayıcı bu sonuçların tümünü döndürür.
Tersine coğrafi kodlayıcı; idari birimleri (ülkeler, iller, şehirler ve mahalleler), açık adresleri ve posta kodlarını eşleştirir.
Yukarıdaki sorgunun döndürebileceği adres listesine bir örnek:
results[0].formatted_address: "277 Bedford Ave, Brooklyn, NY 11211, USA" results[1].formatted_address: "Grand St/Bedford Av, Brooklyn, NY 11211, USA" results[2].formatted_address: "Williamsburg, Brooklyn, NY, USA" results[3].formatted_address: "Brooklyn, NY, USA" results[4].formatted_address: "New York, NY, USA" results[5].formatted_address: "Brooklyn, NY 11211, USA" results[6].formatted_address: "Kings County, NY, USA" results[7].formatted_address: "New York-Northern New Jersey-Long Island, NY-NJ-PA, USA" results[8].formatted_address: "New York Metropolitan Area, USA" results[9].formatted_address: "New York, USA"
Adresler, en iyi eşleşmeden en az eşleşmeye doğru sıralanır. Genel olarak, bu örnekte olduğu gibi en belirgin sonuç daha kesin olan adrestir.
En spesifik açık adresten mahalle, şehir, ilçe, eyalet gibi daha az spesifik idari birimlere kadar farklı adres türleri döndürdüğümüzü unutmayın. Daha genel bir adresi eşleştirmek istiyorsanız results[].types alanını inceleyebilirsiniz.
Not: Tersine coğrafi kodlama, kesin sonuçlar veren bir bilim değildir. Coğrafi kodlayıcı, belirli bir tolerans dahilinde en yakın adreslenebilir konumu bulmaya çalışır.
Yer Kimliği için Adres Alma
Belirli bir yer kimliğinin adresini bulmak için placeId sağlayın. Yer kimliği, diğer Google API'leriyle kullanılabilen benzersiz bir tanımlayıcıdır. Örneğin, yakalanan bir noktanın adresini almak için Roads API tarafından döndürülen placeId değerini sağlayabilirsiniz. Yer kimlikleri hakkında daha fazla bilgi için yer kimliğine genel bakış bölümünü inceleyin.
placeId sağladığınızda istek aşağıdaki alanlardan hiçbirini içeremez:
addresslatLnglocationcomponentRestrictions
Aşağıdaki örnekte bir yer kimliği kabul edilir, ilgili adres bulunur ve harita bu konumda ortalanır. Ayrıca, ilgili yerin biçimlendirilmiş adresini gösteren bir bilgi penceresi de açılır:
TypeScript
// Initialize the map. async function init(): Promise<void> { const [{ Geocoder }, { InfoWindow }] = await Promise.all([ google.maps.importLibrary('geocoding'), google.maps.importLibrary('maps'), google.maps.importLibrary('marker'), ]); const mapElement = document.querySelector('gmp-map')!; const innerMap = mapElement.innerMap; const geocoder = new Geocoder(); const infoWindow = new InfoWindow(); document.getElementById('submit')!.addEventListener('click', () => { void geocodePlaceId(geocoder, innerMap, infoWindow); }); } // This function is called when the user clicks the UI button. async function geocodePlaceId( geocoder: google.maps.Geocoder, map: google.maps.Map, infoWindow: google.maps.InfoWindow ) { const placeId = (document.getElementById('place-id') as HTMLInputElement) .value; const { AdvancedMarkerElement } = await google.maps.importLibrary('marker'); const { results } = await geocoder.geocode({ placeId }); if (results[0]) { map.setZoom(11); map.setCenter(results[0].geometry.location); const marker = new AdvancedMarkerElement({ map, position: results[0].geometry.location, }); infoWindow.setContent(results[0].formatted_address); infoWindow.open(map, marker); } else { window.alert('No results found'); } } void init();
JavaScript
// Initialize the map. async function init() { const [{ Geocoder }, { InfoWindow }] = await Promise.all([ google.maps.importLibrary('geocoding'), google.maps.importLibrary('maps'), google.maps.importLibrary('marker'), ]); const mapElement = document.querySelector('gmp-map'); const innerMap = mapElement.innerMap; const geocoder = new Geocoder(); const infoWindow = new InfoWindow(); document.getElementById('submit').addEventListener('click', () => { void geocodePlaceId(geocoder, innerMap, infoWindow); }); } // This function is called when the user clicks the UI button. async function geocodePlaceId(geocoder, map, infoWindow) { const placeId = document.getElementById('place-id').value; const { AdvancedMarkerElement } = await google.maps.importLibrary('marker'); const { results } = await geocoder.geocode({ placeId }); if (results[0]) { map.setZoom(11); map.setCenter(results[0].geometry.location); const marker = new AdvancedMarkerElement({ map, position: results[0].geometry.location, }); infoWindow.setContent(results[0].formatted_address); infoWindow.open(map, marker); } else { window.alert('No results found'); } } void init();
Doğru adres veya koordinat API'sini seçme
Yaygın adres ve koordinat görevleri için google.maps.Geocoder'i diğer Google Haritalar Platformu API'leriyle karşılaştırmak üzere aşağıdaki bölümü genişletin:
Coğrafi Kodlayıcıyı diğer Google Haritalar Platformu API'leriyle karşılaştırma
| Geliştirici hedefi | Önerilen API veya yöntem | Ne zaman kullanılır? |
|---|---|---|
Tam bir açık adresi LatLng koordinatlarına dönüştürme (ileri coğrafi kodlama)
|
geocoder.geocode({ address })
(google.maps.Geocoder)
|
Elinizde tam ve net bir adres dizesi varsa ve harita koordinatlarına ihtiyacınız varsa kullanın. |
GPS veya tıklanan harita koordinatlarını ({ lat, lng }) okunabilir bir açık adrese dönüştürme (tersine coğrafi kodlama)
|
geocoder.geocode({ location })
(google.maps.Geocoder)
|
Saha raporlaması, teslimat raptiyeleri bırakma veya bir koordinat için en yakın açık adresi görüntüleme amacıyla kullanın. |
| Kullanıcı bir giriş alanına yazarken otomatik tamamlama adres araması |
<gmp-place-autocomplete>
(PlaceAutocompleteElement)
|
Kullanıcı her tuşa bastığında Geocoder yöntemini çağırmak yerine, kullanıcı yazarken etkileşimli arama kutuları için kullanın.
|
| Ödeme veya kargo adresini doğrulama, posta bileşenlerini standartlaştırma ya da alt tesis ve birim teslim edilebilirliğini kontrol etme |
Address Validation API
(POST https://addressvalidation.googleapis.com/v1:validateAddress)
|
E-ticaret ödeme işlemleri, kargo formları ve posta adresinin ya da apartman dairesi/birim numarasının teslimat için uygun olup olmadığını (Geocoder tarafından doğrulanmaz) onaylaması gereken iş akışları için kullanın.
|
Bir koordinatı (lat, lng) ve zaman damgasını UTC farkına (rawOffset, dstOffset) ve IANA timeZoneId değerine dönüştürün.
|
Time Zone API
(GET https://maps.googleapis.com/maps/api/timezone/json)
|
Bir koordinat ve zaman damgası için IANA saat dilimi kimliği, UTC farkı veya yaz saati farkı gerektiğinde kullanın (Geocoder bunları döndürmez).
|