Saat membuat permintaan geocoding, Anda dapat menggunakan mask kolom untuk menentukan daftar kolom yang akan ditampilkan dalam respons. Masker kolom membantu mengurangi latensi respons dengan memastikan Anda tidak meminta data yang tidak diperlukan.
Untuk metode geocoding dasar (Geocode an address, Geocode a location, dan Place geocoding), semua kolom dalam objek respons ditampilkan secara default, tidak seperti Search for destinations yang mengharuskan penentuan mask kolom. Meskipun mask kolom tidak diperlukan untuk metode dasar, sebaiknya gunakan mask kolom untuk mengurangi latensi respons.
Menentukan mask kolom respons
Masker kolom respons adalah daftar jalur yang dipisahkan koma tanpa spasi, dengan setiap jalur menentukan kolom unik dalam objek respons. Jalur dimulai dari kolom respons tingkat teratas dan menggunakan jalur yang dipisahkan titik ke kolom yang ditentukan.
Teruskan mask kolom respons ke permintaan menggunakan parameter URL $fields
atau fields, atau menggunakan header HTTP atau gRPC X-Goog-FieldMask.
Contoh mask kolom
Berikut adalah respons lengkap dari permintaan geocoding maju:
{ "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", ... }
Buat mask kolom menggunakan hierarki kolom respons, dalam bentuk:
topLevelField[.secondLevelField][.thirdLevelField][...]
Menelusuri mask kolom tujuan
Saat memanggil SearchDestinations,
tentukan atribut tujuan yang tepat yang Anda perlukan, seperti detail tempat
utama, pintu masuk, titik navigasi, garis batas bangunan (displayPolygon), dan
tempat terkenal:
curl -X POST -d '{"addressQuery": {"addressQuery": "1600 Amphitheatre Pkwy, Mountain View, CA"}}' \
-H 'Content-Type: application/json' \
-H 'X-Goog-FieldMask: destinations.primary.displayName,destinations.primary.displayPolygon,destinations.entrances,destinations.navigationPoints,destinations.landmarks' \
-H "X-Goog-Api-Key: API_KEY" \
https://geocode.googleapis.com/v4/geocode/destinations
Masker kolom geocoding inti
Misalnya, untuk hanya menampilkan kolom placeId dalam respons GeocodeAddress, gunakan mask kolom:
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
Responsnya sekarang adalah:
{ "results": [ { "placeId": "ChIJF4Yf2Ry7j4AR__1AkytDyAE" } ] }
Untuk menampilkan kolom viewport, mask kolom Anda adalah:
-H 'X-Goog-FieldMask: results.viewport'
Responsnya sekarang adalah:
{ "results": [ { "viewport": { "low": { "latitude": 37.420654569708496, "longitude": -122.08547618029148 }, "high": { "latitude": 37.423352530291496, "longitude": -122.0827782197085 } } } ] }
Untuk menampilkan keduanya:
-H 'X-Goog-FieldMask: results.placeId,results.viewport'
Responsnya sekarang adalah:
{ "results": [ { "placeId": "ChIJF4Yf2Ry7j4AR__1AkytDyAE", "viewport": { "low": { "latitude": 37.420654569708496, "longitude": -122.08547618029148 }, "high": { "latitude": 37.423352530291496, "longitude": -122.0827782197085 } } } ] }
Mask kolom gRPC
Untuk gRPC, tetapkan variabel yang berisi mask kolom respons. Kemudian, Anda dapat meneruskan variabel tersebut ke permintaan.
const ( fieldMask = "results.placeId,results.viewport" )
Pertimbangan jalur kolom
Sertakan hanya kolom yang Anda perlukan dalam respons untuk menampilkan hanya kolom yang Anda perlukan:
- Mengurangi waktu pemrosesan, sehingga hasil Anda ditampilkan dengan latensi yang lebih rendah.
- Memastikan performa latensi yang stabil. Jika Anda memilih semua kolom, atau jika Anda memilih semua kolom di tingkat teratas, Anda mungkin mengalami penurunan performa saat kolom baru ditambahkan, lalu otomatis disertakan dalam respons Anda.
- Menghasilkan ukuran respons yang lebih kecil, yang berarti throughput jaringan yang lebih tinggi.
Untuk mengetahui detail selengkapnya tentang cara membuat mask kolom, lihat field_mask.proto.