Layanan Geocoding

Catatan: Library sisi server
Developer Wilayah Ekonomi Eropa (EEA)

Ringkasan

Geocoding adalah proses konversi alamat (seperti "1600 Amphitheatre Parkway, Mountain View, CA") menjadi koordinat geografis (seperti lintang 37.423021 dan bujur -122.083739), yang dapat Anda gunakan untuk menempatkan penanda atau memosisikan peta.

Geocoding terbalik adalah proses konversi koordinat geografis menjadi alamat yang dapat dibaca manusia (lihat Geocoding terbalik (Pencarian Alamat)).

Anda juga dapat menggunakan geocoder untuk menemukan alamat untuk ID tempat yang diberikan.

Maps JavaScript API menyediakan class Geocoder untuk geocoding dan geocoding terbalik dari input pengguna secara dinamis. Jika Anda ingin melakukan geocoding terhadap alamat statis yang diketahui, lihat layanan web Geocoding. Untuk membandingkan Geocoder dengan API Google Maps Platform lainnya untuk penelusuran typeahead, verifikasi alamat pos, atau pencarian zona waktu, lihat Memilih API alamat atau koordinat yang tepat.

Mulai

Sebelum menggunakan layanan Geocoding di Maps JavaScript API, pastikan lebih dahulu bahwa Geocoding API diaktifkan di Konsol Google Cloud, dalam project yang sama dengan yang Anda siapkan untuk Maps JavaScript API.

Untuk menampilkan daftar API yang telah diaktifkan:

  1. Buka Konsol Google Cloud.
  2. Klik tombol Select a project, lalu pilih project yang sama dengan yang Anda siapkan untuk Maps JavaScript API dan klik Open.
  3. Dari daftar API di Dashboard, cari Geocoding API.
  4. Jika sudah melihat API di dalam daftar, artinya Anda sudah siap. Jika API tidak tercantum, aktifkan API tersebut:
    1. Di bagian atas halaman, pilih ENABLE API untuk menampilkan tab Library. Atau, dari menu samping kiri, pilih Library.
    2. Telusuri Geocoding API, lalu pilih dari daftar hasil.
    3. Pilih ENABLE. Setelah proses selesai, Geocoding API akan muncul dalam daftar API di Dashboard.

Jika peta Anda tidak ditampilkan atau konsol browser mencatat error kunci API atau aktivasi, lihat Pemecahan Masalah dan Pesan Error.

Harga dan kebijakan

Harga

Untuk mempelajari kebijakan harga dan penggunaan layanan Geocoding JavaScript, lihat Penggunaan dan Penagihan untuk Geocoding API.

Kebijakan

Penggunaan layanan Geocoding harus sesuai dengan Kebijakan untuk Geocoding API.

Permintaan Geocoding

Mengakses layanan Geocoding bersifat asinkron, sehingga memerlukan panggilan ke server eksternal. Oleh karena itu, metode geocode menampilkan promise yang di-resolve setelah permintaan selesai. Setelah diselesaikan, Anda dapat menggunakan .then() atau await untuk menangani respons.

re

Anda mengakses layanan geocoding Google Maps API dalam kode Anda menggunakan objek konstruktor google.maps.Geocoder. Metode Geocoder.geocode() membuat permintaan ke layanan geocoding, meneruskan literal objek GeocoderRequest yang berisi istilah yang dimasukkan dan metode callback yang akan dieksekusi setelah menerima respons.

Literal objek GeocoderRequest berisi kolom berikut:

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

Parameter yang diperlukan: Anda harus menyediakan salah satu, dan hanya satu, dari kolom berikut:

  • address — Alamat yang ingin Anda geocode.
         atau
    location — LatLng (atau LatLngLiteral) yang ingin Anda dapatkan alamat terdekatnya yang dapat dibaca manusia. Geocoder akan melakukan geocoding terbalik. Lihat Geocoding Terbalik untuk informasi selengkapnya.
         atau
    placeId — ID Tempat dari tempat yang Anda ingin dapatkan alamat terdekatnya yang dapat dibaca manusia. Lihat selengkapnya tentang cara mengambil alamat untuk ID tempat.

Parameter opsional:

  • bounds — LatLngBounds yang akan digunakan untuk membiaskan hasil geocode secara lebih jelas. Parameter bounds ini hanya akan memengaruhi, tidak sepenuhnya membatasi, hasil dari geocoder. Lihat informasi selengkapnya tentang pembiasan area pandang di bawah ini.
  • componentRestrictions — Digunakan untuk membatasi hasil ke area tertentu. Lihat informasi selengkapnya tentang pemfilteran komponen di bawah.
  • region — Kode wilayah, yang ditentukan sebagai subtag wilayah Unicode dua karakter (non-numerik) yang telah ditetapkan. Umumnya, tag ini dipetakan langsung ke nilai dua karakter ccTLD ("domain level teratas") yang sudah dikenal. Parameter region ini hanya akan memengaruhi, tidak sepenuhnya membatasi, hasil dari geocoder. Lihat informasi selengkapnya tentang pembiasan kode wilayah di bawah.
  • extraComputations — Satu-satunya nilai yang diizinkan untuk parameter ini adalah ADDRESS_DESCRIPTORS. Lihat deskripsi alamat untuk mengetahui detail selengkapnya.
  • fulfillOnZeroResults — Memenuhi promise pada status ZERO_RESULT dalam respons. Hal ini mungkin diinginkan karena meskipun tidak ada hasil geocoding, mungkin masih ada kolom tingkat respons tambahan yang ditampilkan. Lihat Memenuhi Tanpa Hasil untuk mengetahui detail selengkapnya.

Respons Geocoding

Layanan Geocoding memerlukan metode callback yang akan dieksekusi saat pengambilan hasil geocoder. Callback ini harus meneruskan dua parameter untuk menyimpan kode results dan status, dalam urutan tersebut.

Hasil Geocoding

Objek GeocoderResult mewakili satu hasil geocoding. Permintaan geocode mungkin menampilkan beberapa objek hasil:

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
 }
}

Kolom-kolom ini dijelaskan di bawah:

  • types[] adalah array yang menunjukkan jenis alamat dari hasil yang ditampilkan. Array ini berisi nol atau beberapa tag yang mengidentifikasi jenis fitur yang ditampilkan dalam hasil. Misalnya, geocode "Chicago" akan menampilkan "lokalitas" yang menunjukkan bahwa "Chicago" adalah kota, dan juga menampilkan "politik" yang menunjukkan bahwa itu adalah entitas politik. Lihat informasi selengkapnya tentang jenis alamat dan jenis komponen alamat di bawah.
  • formatted_address adalah string yang berisi alamat lokasi saat ini yang dapat dibaca manusia.

    Sering kali alamat ini sama dengan alamat pos. Harap ingat bahwa beberapa negara, seperti Inggris Raya, tidak mengizinkan distribusi alamat pos sebenarnya karena adanya pembatasan pemberian lisensi.

    Alamat yang diformat secara logis terdiri dari satu atau beberapa komponen alamat. Misalnya, alamat "111 8th Avenue, New York, NY" terdiri atas komponen berikut: "111" (nomor jalan), "8th Avenue" (rute), "New York" (kota), dan "NY" (negara bagian AS).

    Jangan mengurai alamat berformat secara terprogram. Sebagai gantinya, Anda harus menggunakan komponen alamat individual, yang disertakan oleh respons API selain kolom alamat yang diformat.

  • address_components[] adalah array yang berisi komponen terpisah yang berlaku untuk alamat ini.

    Setiap komponen alamat biasanya berisi kolom berikut:

    • types[] adalah array yang menunjukkan jenis komponen alamat. Komponen alamat mungkin memiliki array jenis kosong jika tidak ada jenis yang diketahui untuk komponen alamat tersebut. API dapat menambahkan nilai jenis baru sesuai kebutuhan. Untuk mengetahui informasi selengkapnya, lihat Jenis alamat dan jenis komponen alamat.
    • long_name adalah deskripsi teks lengkap atau nama komponen alamat seperti yang ditampilkan oleh Geocoder.
    • short_name adalah nama tekstual yang disingkat untuk komponen alamat, jika tersedia. Misalnya, komponen alamat untuk negara bagian Alaska dapat memiliki long_name "Alaska" dan short_name "AK" menggunakan 2 huruf singkatan istilah pos.

    Perhatikan fakta berikut tentang array address_components[] :

    • Array komponen alamat dapat berisi lebih banyak komponen daripada formatted_address.
    • Array tidak harus selalu menyertakan semua entitas politik yang berisi alamat, selain dari yang disertakan dalam formatted_address. Untuk mengambil semua entitas politik yang berisi alamat tertentu, Anda harus menggunakan geocoding terbalik, yang meneruskan garis lintang/bujur alamat sebagai parameter ke permintaan tersebut.
    • Format respons tidak dijamin tetap sama di antara permintaan. Secara khusus, jumlah address_components bervariasi berdasarkan alamat yang diminta dan dapat berubah dari waktu ke waktu untuk alamat yang sama. Komponen dapat mengubah posisi dalam array. Jenis komponen dapat berubah. Komponen tertentu mungkin tidak ada dalam respons berikutnya.

    Lihat informasi selengkapnya tentang jenis alamat dan jenis komponen alamat di bawah.

  • partial_match menunjukkan bahwa geocoder tidak menampilkan kecocokan persis untuk permintaan asli, meskipun jika geocoder dapat menampilkan kecocokan parsial dengan alamat yang diminta. Sebaiknya Anda memeriksa permintaan asal untuk mengetahui keberadaan salah eja dan/atau alamat yang tidak lengkap.

    Kecocokan parsial paling sering terjadi untuk alamat jalan yang tidak ditemukan di lokasi yang Anda teruskan dalam permintaan. Kecocokan parsial juga mungkin ditampilkan jika sebuah permintaan memiliki kecocokan terhadap dua atau beberapa lokasi di daerah yang sama. Misalnya, "Hillpar St, Bristol, UK" akan menampilkan kecocokan sebagian untuk Henry Street dan Henrietta Street. Perhatikan, jika permintaan menyertakan komponen alamat yang salah eja, layanan geocoding mungkin akan menyarankan alamat alternatif. Saran yang terpicu melalui cara ini juga akan dinilai sebagai kecocokan parsial.

  • place_id adalah ID unik suatu tempat, yang bisa digunakan bersama Google API lainnya. Misalnya, Anda dapat menggunakan place_id dengan library Google Places API untuk mendapatkan detail bisnis lokal, seperti nomor telepon, jam buka, ulasan pengguna, dan banyak lagi. Lihat ringkasan ID tempat.
  • postcode_localities[] adalah array yang menunjukkan semua lokalitas yang dimuat dalam kode pos, dan hanya ada jika hasilnya adalah kode pos yang berisi beberapa lokalitas.
  • geometry berisi informasi berikut:

    • location berisi nilai geocode dari garis lintang dan bujur. Perhatikan bahwa kita menampilkan lokasi ini sebagai objek LatLng, bukan sebagai string yang diformat.
    • location_type menyimpan data tambahan tentang lokasi yang ditentukan. Nilai berikut ini didukung:
      • ROOFTOP menunjukkan bahwa hasil yang ditampilkan mencerminkan geocode yang akurat.
      • RANGE_INTERPOLATED menunjukkan bahwa hasil yang ditampilkan mencerminkan perkiraan (biasanya pada jalan) interpolasi antara dua titik tepat (seperti persimpangan). Hasil interpolasi umumnya ditampilkan jika rooftop-geocode tidak tersedia untuk alamat jalan.
      • GEOMETRIC_CENTER menunjukkan bahwa hasil yang ditampilkan adalah pusat geometris dari hasil seperti polyline (misalnya, jalan) atau poligon (wilayah).
      • APPROXIMATE menunjukkan bahwa hasil yang ditunjukkan adalah perkiraan.

    • viewport menyimpan area pandang yang direkomendasikan untuk hasil yang ditampilkan.
    • bounds (ditampilkan secara opsional) menyimpan LatLngBounds yang dapat sepenuhnya berisi hasil yang ditampilkan. Perhatikan, batas-batas ini mungkin tidak cocok dengan area pandang yang direkomendasikan. (Misalnya, San Francisco menyertakan Farallon Islands, yang secara teknis merupakan bagian dari kota, tetapi tidak boleh ditampilkan dalam area pandang.)

Alamat ditampilkan oleh Geocoder menggunakan setelan bahasa pilihan browser, atau bahasa yang ditetapkan saat memuat JavaScript API menggunakan parameter language. (Untuk informasi selengkapnya, lihat Pelokalan.)

Jenis alamat dan jenis komponen alamat

Array types[] dalam GeocoderResult dalam respons menunjukkan jenis alamat. Contoh jenis alamat mencakup alamat, negara, atau entitas politik. Array types dalam GeocoderAddressComponent menunjukkan jenis setiap bagian alamat. Contohnya antara lain nomor rumah atau negara.

Alamat mungkin memiliki beberapa tipe. Jenisnya dapat dianggap sebagai 'tag'. Misalnya, banyak kota diberi tag dengan jenis political dan locality.

Jenis berikut didukung dan ditampilkan dalam array jenis alamat dan jenis komponen alamat:

Jenis Alamat Deskripsi
street_address Alamat yang akurat.
route Rute yang telah diberi nama (seperti "US 101").
intersection Persimpangan utama, biasanya persimpangan dua jalan utama.
political Entitas politik. Biasanya, tipe ini menunjukkan poligon dari beberapa pemerintahan sipil.
country Entitas politik nasional, dan biasanya merupakan jenis urutan tertinggi yang ditampilkan oleh Geocoder.
administrative_area_level_1 Entitas sipil urutan pertama di bawah tingkat negara. Di Amerika Serikat, tingkat administratif ini adalah negara bagian. Tidak semua negara memiliki tingkat administratif ini. Di hampir semua kasus, nama pendek administrative_area_level_1 akan hampir cocok dengan subdivisi ISO 3166-2 dan daftar lainnya yang beredar luas; akan tetapi, hal ini bukan jaminan karena hasil geocoding kami didasarkan pada aneka macam sinyal dan data lokasi.
administrative_area_level_2 Entitas sipil urutan kedua di bawah tingkat negara. Di Amerika Serikat, tingkat administratif ini adalah county. Tidak semua negara memiliki tingkat administratif ini.
administrative_area_level_3 Entitas sipil urutan ketiga di bawah tingkat negara. Jenis ini menunjukkan divisi sipil kecil. Tidak semua negara memiliki tingkat administratif ini.
administrative_area_level_4 Entitas sipil urutan keempat di bawah tingkat negara. Jenis ini menunjukkan divisi sipil kecil. Tidak semua negara memiliki tingkat administratif ini.
administrative_area_level_5 Entitas sipil urutan kelima di bawah tingkat negara. Jenis ini menunjukkan divisi sipil kecil. Tidak semua negara memiliki tingkat administratif ini.
administrative_area_level_6 Entitas sipil urutan keenam di bawah tingkat negara. Jenis ini menunjukkan divisi sipil kecil. Tidak semua negara memiliki tingkat administratif ini.
administrative_area_level_7 Entitas sipil urutan ketujuh di bawah tingkat negara. Jenis ini menunjukkan divisi sipil kecil. Tidak semua negara memiliki tingkat administratif ini.
colloquial_area Nama alternatif yang biasa digunakan untuk entitas.
locality Gabungan entitas politik kota besar dan kota kecil.
sublocality Entitas sipil urutan pertama di bawah lokalitas. Beberapa lokasi dapat menerima salah satu dari jenis tambahan: sublocality_level_1 hingga sublocality_level_5. Setiap tingkat subdaerah adalah entitas sipil. Angka yang lebih besar menunjukkan area geografis yang lebih kecil.
neighborhood Lingkungan yang telah diberi nama.
premise Lokasi yang telah diberi nama, biasanya bangunan atau sekumpulan bangunan dengan nama umum.
subpremise Entitas yang dapat diidentifikasi di bawah tingkat bangunan, seperti apartemen, unit, atau suite.
plus_code Referensi lokasi yang dienkode, yang berasal dari lintang dan bujur. Plus Codes dapat digunakan sebagai pengganti alamat di tempat tanpa alamat jelas (jika bangunan tidak diberi nomor atau jalan tidak diberi nama). Lihat https://plus.codes untuk mengetahui detailnya.
postal_code Kode pos seperti yang biasa digunakan untuk penulisan alamat pos dalam negara tersebut.
natural_feature Fitur alam terkemuka.
airport Bandara.
park Taman yang telah diberi nama.
point_of_interest Lokasi menarik yang telah diberi nama. Biasanya, "POI" ini adalah entitas lokal terkenal yang tidak mudah dimasukkan ke dalam kategori lain, seperti "Empire State Building" atau "Eiffel Tower".

Daftar kosong dari jenis menunjukkan tidak ada jenis yang diketahui untuk komponen alamat tertentu (misalnya Lieu-dit di Prancis).

Selain yang disebutkan di atas, komponen alamat mungkin menyertakan jenis-jenis di bawah ini.

Catatan: Daftar ini tidak lengkap dan dapat berubah.

Selain yang disebutkan di atas, komponen alamat mungkin menyertakan jenis-jenis yang tercantum di bawah ini.

Jenis Komponen Alamat Deskripsi
floor Lantai alamat gedung.
establishment Biasanya tempat yang belum dikategorikan.
landmark Tempat terdekat yang digunakan sebagai referensi, untuk membantu navigasi.
point_of_interest Lokasi menarik yang telah diberi nama.
parking Tempat parkir atau gedung parkir.
post_box Kotak pos tertentu.
postal_town Pengelompokan area geografis, seperti locality dan sublocality, yang digunakan untuk alamat surat di beberapa negara.
room Ruang pada alamat gedung.
street_number Nomor jalan yang akurat.
bus_station, train_station, dan transit_station Lokasi halte bus, stasiun kereta, atau perhentian transportasi umum.

Kode Status

Kode status mungkin menampilkan salah satu nilai berikut:

  • "OK" menunjukkan bahwa tidak terjadi error; alamat berhasil diuraikan dan setidaknya satu geocode ditampilkan.
  • "ZERO_RESULTS" menunjukkan bahwa geocoding berhasil, tetapi ditampilkan tanpa hasil. Hal ini dapat terjadi jika address yang tidak ada diteruskan ke geocoder.
  • "OVER_QUERY_LIMIT" menunjukkan bahwa Anda melebihi kuota.
  • "REQUEST_DENIED" menunjukkan permintaan Anda ditolak. Halaman web tidak diizinkan untuk menggunakan geocoder.
  • "INVALID_REQUEST" secara umum menunjukkan bahwa kueri (address, components, atau latlng) tidak ada.
  • "UNKNOWN_ERROR" menunjukkan bahwa permintaan tidak dapat diproses karena error server. Permintaan mungkin berhasil jika Anda mencoba lagi.
  • "ERROR" menunjukkan bahwa waktu permintaan habis atau terjadi masalah saat menghubungi server Google. Permintaan mungkin berhasil jika Anda mencoba lagi.

Contoh Geocoding

Contoh berikut menunjukkan geocoding alamat dan penempatan penanda pada nilai lintang dan bujur yang ditampilkan. Hasil geocoding ditangani menggunakan promise. Klik di mana saja pada peta untuk melakukan geocoding alamat di lokasi tersebut.

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)
        );
    }
}

Lihat contoh lengkapnya.

Pembiasan Area Pandang

Anda dapat menginstruksikan Layanan Geocoding agar lebih memilih hasil dalam area pandang tertentu (dinyatakan dalam bentuk kotak pembatas). Anda melakukannya dengan menetapkan parameter bounds dalam literal objek GeocoderRequest untuk menentukan batas area pandang ini. Perhatikan bahwa pembiasan hanya mengutamakan hasil dalam batas-batas tersebut; Jika hasil yang lebih relevan berada di luar batas tersebut, hasil tersebut mungkin akan disertakan.

Misalnya, geocode untuk "Winnetka" biasanya akan menampilkan daerah pinggiran kota Chicago ini:

{
  "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"
}

Namun, menetapkan parameter bounds yang mendefinisikan kotak pembatas untuk hasil San Fernando Valley, Los Angeles dalam geocode ini akan menampilkan daerah sekitar bernama "Winnetka" di lokasi tersebut:

{
  "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"
}

Pembiasan Kode Wilayah

Anda dapat menetapkan Layanan Geocoding agar menampilkan hasil yang dibiaskan ke wilayah tertentu secara eksplisit menggunakan parameter region. Parameter ini mengambil kode wilayah, yang ditetapkan sebagai subtag wilayah Unicode dua karakter (non-numerik). Tag ini dipetakan langsung ke nilai yang berisi dua karakter ccTLD ("domain level teratas") yang sudah dikenal, seperti "uk" dalam "co.uk" sebagai contohnya. Dalam beberapa kasus, tag region juga mendukung kode ISO-3166-1, yang terkadang berbeda dari nilai ccTLD (misalnya "GB" untuk "Great Britain").

Saat menggunakan parameter region:

  • Tentukan satu negara atau wilayah saja. Beberapa nilai akan diabaikan, dan dapat menyebabkan permintaan gagal.
  • Hanya gunakan subtag wilayah dua karakter (format Unicode CLDR). Semua input lainnya akan menghasilkan error.
  • Hanya negara dan wilayah yang tercantum dalam Detail Cakupan Google Maps Platform yang didukung.

Permintaan geocoding dapat dikirim untuk setiap domain yang menjadi tempat aplikasi utama Google Maps menawarkan geocoding. Perhatikan bahwa pembiasan hanya mengutamakan hasil untuk domain tertentu; jika ada hasil yang lebih relevan di luar domain ini, hasil tersebut mungkin disertakan.

Misalnya, geocode untuk "Toledo" menampilkan hasil ini, karena domain default untuk Layanan Geocoding ditetapkan ke United States:

{
  "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"
}

Geocode untuk "Toledo" dengan kolom region yang ditetapkan ke 'es' (Spanyol) akan menampilkan kota Spanyol:

{
  "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"
}

Pemfilteran Komponen

Anda dapat menetapkan Layanan Geocoding agar menampilkan hasil alamat yang dibatasi pada area tertentu, menggunakan filter komponen. Tentukan filter dalam parameter componentRestrictions. Nilai-nilai filter mendukung metode yang sama untuk koreksi ejaan dan kecocokan parsial seperti permintaan geocoding lainnya.

Geocoder hanya menampilkan hasil yang cocok dengan semua filter komponen. Artinya, geocoder mengevaluasi spesifikasi filter sebagai AND, bukan OR.

Filter komponen terdiri dari satu atau beberapa item berikut:

  • route cocok dengan nama panjang atau nama pendek rute.
  • locality cocok dengan jenis lokalitas dan sublokalitas.
  • administrativeArea cocok dengan semua tingkat wilayah administratif.
  • postalCode cocok dengan kode pos dan awalan kode pos.
  • country cocok dengan nama negara atau kode negara ISO 3166-1 dua huruf. Catatan: API mengikuti standar ISO untuk mendefinisikan negara, dan pemfilteran akan berfungsi maksimal jika menggunakan kode ISO negara yang sesuai.

Contoh berikut menunjukkan penggunaan parameter componentRestrictions untuk memfilter menurut country dan postalCode:

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);
    });
};

Pemenuhan pada Hasil Nol

Untuk geocoding terbalik, secara default promise akan dihentikan pada status=ZERO_RESULTS. Namun, kolom tingkat respons tambahan plus_code dan address_descriptor mungkin masih diisi dalam kasus ini. Jika true diberikan untuk parameter fulfillOnZeroResults, diisi dalam kasus ini. Jika true diberikan untuk parameter fulfillOnZeroResults, promise tidak akan rusak dan kolom tambahan ini dapat diakses dari promise jika ada.

Berikut adalah contoh perilaku ini untuk lintang/bujur di Antartika. Meskipun tidak ada hasil geocoding terbalik, kita masih dapat mencetak Plus Code dalam promise jika kita menetapkan fulfillOnZeroResults=true.

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}`);
    });
}

Deskripsi Alamat

Deskripsi alamat mencakup informasi tambahan yang membantu mendeskripsikan lokasi menggunakan tempat terkenal dan area. Lihat demo deskripsi alamat untuk mempelajari fitur ini.

Deskripsi alamat dapat diaktifkan melalui penggunaan parameter extraComputations. Sertakan extra_computations=ADDRESS_DESCRIPTORS dalam permintaan geocoding , permintaan geocoding terbalik , atau permintaan geocoding tempat untuk menerima deskriptor alamat dalam respons Anda.

Contoh dalam geocoding tempat

Kueri berikut berisi alamat tempat di Delhi.

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);
    }
  });
}

Contoh dalam geocoding terbalik

Kueri berikut berisi nilai lintang/bujur untuk lokasi di 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`);
        });
    }
  

Contoh Deskripsi Alamat

Contoh address_descriptor adalah sebagai berikut.

  {
    "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" ]
          }
       ]
    }
  }

Ada dua array di setiap objek address_descriptor: landmarks dan areas. Array landmarks berisi hingga 5 hasil yang diberi peringkat berdasarkan relevansi dengan mempertimbangkan kedekatan dengan koordinat yang diminta, prevalensi tempat terkenal, dan visibilitasnya. Setiap hasil tempat terkenal berisi nilai berikut:

  • place_id adalah ID tempat dari hasil tempat terkenal. Lihat ringkasan ID tempat.
  • display_name adalah nama tampilan tempat terkenal dan berisi language_code serta text.
  • straight_line_distance_meters adalah jarak titik ke titik dalam meter antara koordinat input dan hasil tempat terkenal.
  • travel_distance_meters adalah jarak dalam meter yang ditempuh menggunakan jaringan jalan (mengabaikan pembatasan jalan) antara koordinat input dan hasil tempat terkenal.
  • spatial_relationship adalah perkiraan hubungan antara koordinat input dan hasil tempat terkenal:
    • "NEAR" adalah hubungan default jika tidak ada hal berikut yang berlaku.
    • "WITHIN" jika koordinat input berada dalam batas struktur yang terkait dengan tempat terkenal.
    • "BESIDE" jika koordinat input berada tepat di samping tempat terkenal atau titik akses tempat terkenal.
    • "ACROSS_THE_ROAD" jika koordinat input berada tepat di seberang tempat terkenal di sisi lain rute.
    • "DOWN_THE_ROAD" jika koordinat input berada di sepanjang rute yang sama dengan tempat terkenal, tetapi bukan "BESIDES" atau "ACROSS_THE_ROAD".
    • "AROUND_THE_CORNER" jika koordinat input berada di sepanjang rute tegak lurus sebagai tempat terkenal (dibatasi untuk satu belokan).
    • "BEHIND" jika koordinat input secara spasial dekat dengan tempat terkenal, tetapi jauh dari titik aksesnya.
  • types adalah Jenis tempat bangunan terkenal.

Objek areas berisi hingga 3 respons dan membatasi dirinya pada tempat yang mewakili wilayah kecil, seperti lingkungan, sublokalitas, dan kompleks besar. Area yang berisi koordinat yang diminta akan dicantumkan terlebih dahulu dan diurutkan dari yang terkecil hingga terbesar. Setiap hasil areas berisi nilai berikut:

  • place_id adalah ID tempat dari hasil area. Lihat ringkasan ID tempat.
  • display_name adalah nama tampilan area dan berisi language_code serta text.
  • containment adalah perkiraan hubungan cakupan antara koordinat input dan hasil area:
    • "NEAR" adalah hubungan default jika tidak ada hal berikut yang berlaku.
    • "WITHIN" saat koordinat input dekat dengan pusat area.
    • "OUTSKIRTS" saat koordinat input dekat dengan tepi area.

Cakupan Deskriptor Alamat

Deskripsi alamat tersedia di GA untuk India. Penggunaan deskripsi alamat di India tidak dikenai biaya tambahan dan penggunaan tercakup dalam SKU Geocoding (India) Essentials yang ada.

Masukan

Fitur ini tersedia di semua wilayah. Fitur ini tersedia dalam versi GA untuk India dan dalam tahap peluncuran Eksperimental pra-GA untuk semua wilayah lainnya. Kami menghargai masukan Anda:

Geocoding Terbalik (Pencarian Alamat)

Istilah geocoding umumnya mengacu pada proses menerjemahkan alamat yang dapat dibaca manusia menjadi suatu lokasi pada peta. Proses menerjemahkan terbalik suatu lokasi peta menjadi alamat yang dapat dibaca manusia dikenal sebagai geocoding terbalik.

Sebagai ganti memberikan address tekstual, berikan sepasang garis lintang/bujur yang dipisahkan koma dalam parameter location.

Contoh berikut melakukan geocoding terhadap nilai lintang/bujur dan memusatkan peta di lokasi tersebut, yang memunculkan jendela info berisi alamat yang telah diformat. Klik di mana saja pada peta untuk melakukan geocoding lokasi atau masukkan koordinat Anda sendiri.

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>
Lihat contoh

Perhatikan bahwa dalam contoh sebelumnya kita menampilkan hasil pertama dengan memilih results[0]. Geocoder terbalik sering kali menampilkan lebih dari satu hasil. Alamat yang telah dibuat geocode-nya tidak hanya alamat pos, melainkan cara apa saja untuk menamai lokasi secara geografis. Misalnya, saat melakukan geocoding terhadap suatu titik di kota Chicago, titik yang diberi geocode mungkin akan diberi label sebagai alamat jalan, sebagai kota (Chicago), sebagai negara bagian (Illinois), atau sebagai negara (Amerika Serikat). Semua adalah alamat untuk geocoder tersebut. Geocoder terbalik akan menampilkan semua hasil ini.

Geocoder terbalik akan mencocokkan entitas politik (negara, provinsi, kota dan lingkungan), alamat jalan, dan kode pos.

Berikut adalah contoh daftar alamat yang mungkin dikembalikan oleh kueri di atas:

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"

Alamat akan ditampilkan dengan urutan dari yang paling cocok hingga yang paling tidak cocok. Biasanya, alamat yang lebih akurat akan menjadi hasil yang paling terlihat, seperti dalam kasus ini. Perhatikan bahwa kami menampilkan berbagai jenis alamat, dari alamat yang paling spesifik hingga entitas politik yang kurang spesifik seperti lingkungan, kota, wilayah, negara bagian, dsb. Jika Anda ingin mencocokkan dengan alamat yang lebih umum, sebaiknya Anda memeriksa kolom results[].types.

Catatan: Geocoding terbalik bukanlah ilmu pasti. Geocoder akan mencoba untuk menemukan lokasi alamat yang paling dekat dalam toleransi tertentu.

Mengambil Alamat untuk ID Tempat

Sediakan placeId guna menemukan alamat untuk ID tempat yang diberikan. ID tempat adalah sebuah ID unik yang dapat digunakan bersama Google API lainnya. Misalnya, Anda dapat menyediakan placeId yang ditampilkan oleh Roads API untuk mendapatkan alamat titik yang telah diikat. Untuk informasi selengkapnya tentang ID tempat, lihat ringkasan ID tempat.

Jika Anda menyediakan placeId, permintaan tidak boleh berisi salah satu kolom berikut:

  • address
  • latLng
  • location
  • componentRestrictions

Contoh berikut menerima ID tempat, menemukan alamat yang sesuai, dan memusatkan peta di lokasi tersebut. Contoh ini juga akan memunculkan jendela info yang menampilkan alamat terformat untuk tempat yang relevan:

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();
Lihat contoh

Memilih API alamat atau koordinat yang tepat

Luaskan bagian berikut untuk membandingkan google.maps.Geocoder dengan API Google Maps Platform lainnya untuk tugas alamat dan koordinat umum:

Membandingkan Geocoder dengan API Google Maps Platform lainnya

Sasaran developer API atau metode yang direkomendasikan Kapan digunakan
Mengonversi alamat lengkap menjadi koordinat LatLng (geocoding maju) geocoder.geocode({ address }) (google.maps.Geocoder) Gunakan jika Anda sudah memiliki string alamat yang lengkap dan tidak ambigu serta memerlukan koordinat peta.
Mengonversi koordinat GPS atau koordinat peta yang diklik ({ lat, lng }) menjadi alamat yang dapat dibaca manusia (geocoding terbalik) geocoder.geocode({ location }) (google.maps.Geocoder) Gunakan untuk pelaporan lapangan, penempatan pin pengiriman, atau menampilkan alamat jalan terdekat untuk koordinat.
Penelusuran alamat typeahead saat pengguna mengetik di kolom input <gmp-place-autocomplete> (PlaceAutocompleteElement) Gunakan untuk kotak penelusuran interaktif saat pengguna mengetik, daripada memanggil Geocoder pada setiap penekanan tombol.
Memverifikasi alamat checkout atau pengiriman, menstandarkan komponen pos, atau memeriksa kemampuan pengiriman sub-premis dan unit Address Validation API (POST https://addressvalidation.googleapis.com/v1:validateAddress) Gunakan untuk checkout e-commerce, formulir pengiriman, dan alur kerja yang harus mengonfirmasi apakah alamat pos atau nomor apartemen/unit dapat dikirimi paket (yang tidak diverifikasi oleh Geocoder).
Selesaikan koordinat (lat, lng) dan stempel waktu ke selisih UTC (rawOffset, dstOffset) dan timeZoneId IANA Time Zone API (GET https://maps.googleapis.com/maps/api/timezone/json) Gunakan saat Anda memerlukan ID zona waktu IANA, selisih UTC, atau selisih waktu musim panas untuk koordinat dan stempel waktu (yang tidak ditampilkan oleh Geocoder).