Geocoding menerjemahkan alamat menjadi lokasi di peta. Saat Anda melakukan geocoding alamat, responsnya berisi:
- ID tempat dari lokasi
- Koordinat lintang dan bujur lokasi
- Plus Code lokasi
- Detail alamat yang diperluas
Permintaan geocode
Permintaan geocode adalah permintaan HTTP GET. Anda dapat menentukan alamat sebagai string tidak terstruktur:
https://geocode.googleapis.com/v4/geocode/address/ADDRESS_STRING
Atau sebagai kumpulan komponen alamat terstruktur yang diwakili oleh parameter kueri:
https://geocode.googleapis.com/v4/geocode/address?STRUCTURED_ADDRESS
Anda biasanya menggunakan format terstruktur saat memproses komponen alamat yang diambil dalam formulir HTML.
Teruskan semua parameter lainnya sebagai parameter URL atau, untuk parameter seperti kunci API dan mask kolom, di header sebagai bagian dari permintaan GET.
Meneruskan string alamat yang tidak terstruktur
Alamat tidak terstruktur adalah alamat yang diformat sebagai string atau Plus Code. Geocoding alamat tidak menyelesaikan koordinat garis lintang dan garis bujur, atau string tidak terstruktur lainnya yang tidak merepresentasikan alamat atau Kode Plus. Permintaan yang menggunakan string tersebut tidak didukung dan dapat menyebabkan respons error atau perilaku yang tidak ditentukan. Contoh kueri yang tidak didukung mencakup berikut ini:
| Jenis kueri | Contoh |
|---|---|
| Koordinat lintang dan bujur. Gunakan geocoding terbalik sebagai gantinya. | "37.422131,-122.084801" |
| Terlalu banyak konsep atau batasan, seperti nama beberapa tempat, jalan, atau kota dalam satu kueri | "Market Street San Francisco San Jose Airport" |
| Elemen alamat pos tidak ditampilkan di Google Maps |
"C/O John Smith 123 Main Street" "P.O. Box 13 San Francisco" |
| Nama bisnis, jaringan, atau kategori yang digabungkan dengan lokasi tempat entitas ini tidak tersedia | "Tesco di dekat Dallas, Texas" |
| Kueri ambigu dengan beberapa interpretasi | "Pengantaran pengisi daya" |
| Nama lama yang tidak lagi digunakan | "Middlesex United Kingdom" |
| Elemen atau maksud non-geospatial | "Berapa banyak perahu yang ada di Ventura Harbor?" |
| Nama tidak resmi atau nama vanity |
"The Jenga" "The Helter Skelter" |
Misalnya, contoh berikut meneruskan string alamat yang dienkode URL "1600 Amphitheatre Parkway, Mountain View, CA":
https://geocode.googleapis.com/v4/geocode/address/1600+Amphitheatre+Parkway,+Mountain+View,+CA?key=API_KEY
Perhatikan bahwa karakter "+" dalam URL dikonversi menjadi spasi.
Anda juga dapat membuat permintaan menggunakan perintah curl:
curl -H "X-Goog-Api-Key: API_KEY" \ "https://geocode.googleapis.com/v4/geocode/address/1600+Amphitheatre+Parkway,+Mountain+View,+CA"
Alamat dapat berisi banyak jenis karakter khusus. Misalnya, "/" seperti dalam
"7/1 King St, Concord West". Encode URL "/" sebagai %2F:
https://geocode.googleapis.com/v4/geocode/address/7%2F1+King+St,+Concord+West?key=API_KEY
Contoh umum lainnya adalah karakter "#", seperti dalam
"9500 W Bryn Mawr Ave #650, Rosemont". Encode URL "#" sebagai %2FE:
https://geocode.googleapis.com/v4/geocode/address/9500+W+Bryn+Mawr+Ave+%23650,+Rosemont?key=API_KEY
Pada contoh berikutnya, Anda menentukan string alamat tidak terstruktur sebagai
Kode Plus 849VCWC8+R4. Pastikan Anda mengenkode URL karakter "+" sebagai %2B:
https://geocode.googleapis.com/v4/geocode/address/849VCWC8%2BR4?key=API_KEY
Meneruskan alamat terstruktur
Tentukan alamat terstruktur menggunakan parameter kueri address, dengan jenis
PostalAddress.
Objek PostalAddress memungkinkan Anda menentukan beberapa atau semua komponen alamat dalam permintaan sebagai parameter kueri individual.
Misalnya, untuk menentukan hanya kode pos alamat yang Anda gunakan
PostalAddress.postalCode:
https://geocode.googleapis.com/v4/geocode/address?address.postalCode=01062&key=API_KEY
Untuk menentukan beberapa komponen alamat, seperti untuk komponen alamat yang diambil dalam formulir HTML, gunakan beberapa parameter kueri:
https://geocode.googleapis.com/v4/geocode/address?address.addressLines=1600+Amphithreater+Pkwy&address.locality=Mountain+View &address.administrativeArea=CA &key=API_KEY
Menggunakan OAuth untuk membuat permintaan
Geocoding API v4 mendukung OAuth 2.0 untuk autentikasi. Untuk menggunakan OAuth dengan Geocoding API, token OAuth harus diberi cakupan yang benar. Geocoding API mendukung cakupan berikut untuk digunakan dengan geocoding maju:
https://www.googleapis.com/auth/maps-platform.geocode— Gunakan dengan semua metode Geocoding API.https://www.googleapis.com/auth/maps-platform.geocode.address— Hanya gunakan denganGeocodeAddressuntuk geocoding penerusan.
Selain itu, Anda dapat menggunakan cakupan https://www.googleapis.com/auth/cloud-platform
umum untuk semua metode Geocoding API. Cakupan tersebut berguna selama
pengembangan, tetapi tidak untuk produksi, karena merupakan cakupan umum yang memungkinkan
akses ke semua metode.
Untuk informasi dan contoh selengkapnya, lihat Menggunakan OAuth.
Respons geocode
Geocoding menampilkan objek
GeocodeAddressResponse
yang berisi array results dari objek
GeocodeResult. Setiap objek GeocodeResult mewakili satu tempat.
Respons Geocoding API mencakup array types di dua tempat utama dalam
GeocodeResult:
GeocodeResult.types: Array ini menunjukkan jenis hasil secara keseluruhan. Kemungkinan nilai diambil dari Tabel A dan Tabel B di halaman Jenis Tempat (Baru).GeocodeResult.addressComponents[].types: Setiap komponen alamat memiliki arraytypesyang menunjukkan jenis bagian alamat tertentu tersebut. Nilai ini diambil dari tabel Jenis alamat dan jenis komponen alamat di halaman Jenis Tempat (Baru).
Objek JSON lengkapnya berbentuk:
{ "results": [ { "place": "//places.googleapis.com/places/ChIJF4Yf2Ry7j4AR__1AkytDyAE", "placeId": "ChIJF4Yf2Ry7j4AR__1AkytDyAE", "location": { "latitude": 37.422010799999995, "longitude": -122.08474779999999 }, "granularity": "ROOFTOP", "viewport": { "low": { "latitude": 37.420656719708511, "longitude": -122.08547523029148 }, "high": { "latitude": 37.4233546802915, "longitude": -122.0827772697085 } }, "formattedAddress": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA", "postalAddress": { "regionCode": "US", "languageCode": "en", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1600 Amphitheatre Pkwy" ] }, "addressComponents": [ { "longText": "1600", "shortText": "1600", "types": [ "street_number" ] }, { "longText": "Amphitheatre Parkway", "shortText": "Amphitheatre Pkwy", "types": [ "route" ], "languageCode": "en" }, ... ], "types": [ "street_address" ], "plusCode": { "globalCode": "849VCWC8+R4", "compoundCode": "CWC8+R4 Mountain View, CA, USA" } } ] }
Parameter yang diperlukan
address— Alamat jalan atau Plus Code yang ingin Anda geocode. Catatan: Geocoding alamat tidak menyelesaikan koordinat garis lintang dan garis bujur, atau string tidak terstruktur lainnya yang tidak merepresentasikan alamat atau Kode Plus. Lihat Meneruskan string alamat yang tidak terstruktur untuk mengetahui detail dan contoh kueri yang tidak didukung selengkapnya. Tentukan alamat sesuai dengan format yang digunakan oleh layanan pos nasional di negara terkait. Elemen alamat tambahan seperti nama bisnis dan nomor unit, suite, atau lantai harus dihindari. Elemen alamat jalan harus dibatasi dengan spasi berenkode URL menjadi%20. Misalnya, teruskan alamat "24 Sussex Drive Ottawa ON" sebagai: Format Plus Codes seperti yang ditunjukkan di bawah. Tanda plus dienkode URL menjadi24%20Sussex%20Drive%20Ottawa%20ON
%2Bdan spasi dienkode URL menjadi%20:- Kode global adalah kode area berisi 4 karakter dan kode lokal
berisi 6 karakter atau lebih. Misalnya, encode "849VCWC8+R9" sebagai
849VCWC8%2BR9. - Kode majemuk adalah kode lokal berisi 6 karakter atau lebih dengan
lokasi yang eksplisit. Misalnya, encode "CWC8+R9 Mountain View, CA, USA"
sebagai
CWC8%2BR9%20Mountain%20View%20CA%20USA.
- Kode global adalah kode area berisi 4 karakter dan kode lokal
berisi 6 karakter atau lebih. Misalnya, encode "849VCWC8+R9" sebagai
Parameter opsional
locationBias
Menentukan area yang akan ditelusuri sebagai
Viewport. Lokasi ini berfungsi sebagai bias yang berarti hasil di sekitar lokasi yang ditentukan dapat ditampilkan, termasuk hasil di dekat tetapi di luar area.Tentukan wilayah sebagai Viewport persegi panjang. Persegi panjang adalah area tampilan lintang-bujur, yang ditampilkan sebagai dua titik rendah dan tinggi yang berlawanan secara diagonal. Titik rendah menandai sudut barat daya persegi panjang, dan titik tinggi merepresentasikan sudut timur laut persegi panjang.
Area pandang dianggap sebagai wilayah tertutup, yang berarti mencakup batasnya. Batas lintang harus berada dalam rentang -90 hingga 90 derajat inklusif, dan batas bujur harus berada dalam rentang -180 hingga 180 derajat inklusif:
- Jika
low=high, area tampilan terdiri dari satu titik tersebut. - Jika
low.longitude>high.longitude, rentang bujur dibalik (area pandang melintasi garis bujur 180 derajat). - Jika
low.longitude= -180 derajat danhigh.longitude= 180 derajat, area pandang mencakup semua bujur. - Jika
low.longitude= 180 derajat danhigh.longitude= -180 derajat, rentang bujur kosong. - Jika
low.latitude>high.latitude, rentang lintang kosong.
Nilai rendah dan tinggi harus diisi, dan kotak yang ditampilkan tidak boleh kosong. Viewport kosong akan menyebabkan error.
Misalnya, string kueri ini menentukan area tampilan yang sepenuhnya mencakup New York City:
?locationBias.rectangle.low.latitude=40.477398
&locationBias.rectangle.low.longitude=-74.259087 &locationBias.rectangle.high.latitude=40.91618 &locationBias.rectangle.high.longitude=-73.70018 - Jika
languageCode
Bahasa yang digunakan untuk menampilkan hasil.
- Lihat daftar bahasa yang didukung. Google sering memperbarui bahasa yang didukung, sehingga daftar ini mungkin tidak lengkap.
-
Jika
languageCodetidak diberikan, API akan menggunakan nilai defaulten. Jika Anda menentukan kode bahasa yang tidak valid, API akan menampilkan errorINVALID_ARGUMENT. - API ini berupaya sebaik mungkin untuk memberikan alamat jalan yang dapat dibaca oleh pengguna dan penduduk setempat. Untuk mencapai tujuan tersebut, API ini menampilkan alamat jalan dalam bahasa lokal, yang ditransliterasi ke skrip yang dapat dibaca oleh pengguna jika perlu, dengan memperhatikan bahasa pilihan. Semua alamat lainnya ditampilkan dalam bahasa pilihan. Komponen alamat semuanya ditampilkan dalam bahasa yang sama, yang dipilih dari komponen pertama.
- Jika nama tidak tersedia dalam bahasa pilihan, API akan menggunakan kecocokan terdekat.
- Bahasa pilihan memiliki sedikit pengaruh pada kumpulan hasil yang dipilih API untuk ditampilkan, dan urutan penampilannya. Geocoder menafsirkan singkatan secara berbeda bergantung pada bahasa, seperti singkatan untuk jenis jalan, atau sinonim yang mungkin valid dalam satu bahasa, tetapi tidak dalam bahasa lain.
regionCode
Kode wilayah sebagai nilai kode CLDR dua karakter. Tidak ada nilai default. Sebagian besar kode CLDR identik dengan kode ISO 3166-1.
Saat melakukan geocoding alamat, geocoding maju, parameter ini dapat memengaruhi, tetapi tidak sepenuhnya membatasi, hasil dari layanan ke wilayah yang ditentukan. Saat melakukan geocoding lokasi atau tempat, geocoding terbalik atau geocoding tempat, parameter ini dapat digunakan untuk memformat alamat. Dalam semua kasus, parameter ini dapat memengaruhi hasil berdasarkan hukum yang berlaku.
-
FieldMask
Buat mask kolom respons untuk menentukan kolom yang akan ditampilkan dalam respons. Teruskan mask kolom respons ke metode menggunakan parameter URL
$fieldsataufields, atau menggunakan header HTTPX-Goog-FieldMask. Misalnya, permintaan di bawah hanya akan menampilkan kolomplaceIDdari respons. Responsnya adalah:curl -X GET -H 'Content-Type: application/json' \ -H 'X-Goog-FieldMask: results.placeId' \ -H "X-Goog-Api-Key: API_KEY" \ https://geocode.googleapis.com/v4/geocode/address/1600+Amphitheatre+Parkway,+Mountain+View,+CA
{ "results": [ { "placeId": "ChIJiSSC8QK6j4AR98Thup8mqTc" } ] }
Lihat Memilih kolom yang akan ditampilkan untuk mengetahui detail selengkapnya.
Penyesuaian lokasi
Gunakan parameter locationBias untuk menginstruksikan layanan Geocoding agar lebih memilih hasil dalam area pandang tertentu (dinyatakan dalam bentuk kotak pembatas).
Parameter locationBias menentukan koordinat garis lintang/bujur
sudut barat daya dan timur laut kotak pembatas ini.
Misalnya, permintaan geocode untuk alamat "Washington" dapat menampilkan hasil untuk Washington, D.C. dan untuk negara bagian Washington di Amerika Serikat:
https://geocode.googleapis.com/v4/geocode/address/Washington?key=API_KEY
Responsnya dalam bentuk:
{ "results": [ { "place": "//places.googleapis.com/places/ChIJW-T2Wt7Gt4kRKl2I1CJFUsI", "placeId": "ChIJW-T2Wt7Gt4kRKl2I1CJFUsI", "location": { "latitude": 38.9071923, "longitude": -77.0368707 }, "granularity": "APPROXIMATE", "viewport": { "low": { "latitude": 38.7916449, "longitude": -77.119759 }, "high": { "latitude": 38.9958641, "longitude": -76.909393 } }, "bounds": { "low": { "latitude": 38.7916449, "longitude": -77.119759 }, "high": { "latitude": 38.9958641, "longitude": -76.909393 } }, "formattedAddress": "Washington, DC, USA", "addressComponents": [ { "longText": "Washington", "shortText": "Washington", "types": [ "locality", "political" ], "languageCode": "en" }, ... ], "types": [ "locality", "political" ] }, { "place": "//places.googleapis.com/places/ChIJ-bDD5__lhVQRuvNfbGh4QpQ", "placeId": "ChIJ-bDD5__lhVQRuvNfbGh4QpQ", "location": { "latitude": 47.7510741, "longitude": -120.7401386 }, "granularity": "APPROXIMATE", "viewport": { "low": { "latitude": 45.543541, "longitude": -124.84897389999999 }, "high": { "latitude": 49.0024945, "longitude": -116.91607109999998 } }, "bounds": { "low": { "latitude": 45.543541, "longitude": -124.84897389999999 }, "high": { "latitude": 49.0024442, "longitude": -116.91607109999998 } }, "formattedAddress": "Washington, USA", "addressComponents": [ { "longText": "Washington", "shortText": "WA", "types": [ "administrative_area_level_1", "political" ], "languageCode": "en" }, ... ], "types": [ "administrative_area_level_1", "political" ] } ] }
Namun, menambahkan parameter locationBias yang menentukan kotak pembatas di sekitar
bagian timur laut AS akan menghasilkan geocode ini hanya menampilkan kota
Washington, D.C.:
https://geocode.googleapis.com/v4/geocode/address/Washington?locationBias.rectangle.low.latitude=36.47&locationBias.rectangle.low.longitude=-84.72 &locationBias.rectangle.high.latitude=43.39 &locationBias.rectangle.high.longitude=-65.90 &key=API_KEY
Pembiasan wilayah
Dalam permintaan geocoding, Anda dapat menginstruksikan layanan Geocoding untuk menampilkan hasil yang dibiaskan ke wilayah tertentu menggunakan parameter regionCode. Parameter ini menggunakan nilai
kode CLDR dua karakter yang menentukan bias wilayah. Sebagian besar kode CLDR sama dengan kode ISO 3166-1.
Tidak ada nilai default untuk regionCode. Misalnya, geocode untuk "Toledo"
menampilkan hasil untuk AS dan Spanyol:
https://geocode.googleapis.com/v4/geocode/address/Toledo?key=API_KEY
Respons:
{ "results": [ { "place": "//places.googleapis.com/places/ChIJeU4e_C2HO4gRRcM6RZ_IPHw", "placeId": "ChIJeU4e_C2HO4gRRcM6RZ_IPHw", "location": { "latitude": 41.652805199999996, "longitude": -83.5378674 }, "granularity": "APPROXIMATE", "viewport": { "low": { "latitude": 41.579513, "longitude": -83.6944089 }, "high": { "latitude": 41.733036, "longitude": -83.4493851 } }, "bounds": { "low": { "latitude": 41.579513, "longitude": -83.6944089 }, "high": { "latitude": 41.733036, "longitude": -83.4493851 } }, "formattedAddress": "Toledo, OH, USA", "addressComponents": [ { "longText": "Toledo", "shortText": "Toledo", "types": [ "locality", "political" ], "languageCode": "en" }, ... ], "types": [ "locality", "political" ] }, { "place": "//places.googleapis.com/places/ChIJkwyrlqwLag0RiQIn2fdIshM", "placeId": "ChIJkwyrlqwLag0RiQIn2fdIshM", "location": { "latitude": 39.8628296, "longitude": -4.0273067 }, "granularity": "APPROXIMATE", "viewport": { "low": { "latitude": 39.8116682, "longitude": -4.179933 }, "high": { "latitude": 39.9251319, "longitude": -3.8148935 } }, "bounds": { "low": { "latitude": 39.8116682, "longitude": -4.179933 }, "high": { "latitude": 39.9251319, "longitude": -3.8148935 } }, "formattedAddress": "Toledo, España", "addressComponents": [ { "longText": "Toledo", "shortText": "Toledo", "types": [ "administrative_area_level_4", "political" ], "languageCode": "es" }, ... ], "types": [ "administrative_area_level_4", "political" ] }, ... ] }
Permintaan geocoding untuk "Toledo" dengan regionCode=es (Spanyol) hanya menampilkan
hasil dari Spanyol:
https://geocode.googleapis.com/v4/geocode/address/Toledo?regionCode=es&key=API_KEY