При выполнении запроса на геокодирование можно использовать маску поля , чтобы указать список полей, возвращаемых в ответе. Для конечных точек «Геокодирование адреса» , «Геокодирование местоположения» и «Геокодирование места» все поля в объекте ответа возвращаются по умолчанию. Для конечной точки «Поиск пунктов назначения» необходимо указать маску поля в запросе API.
Используйте маску поля, чтобы убедиться, что вы не запрашиваете ненужные данные, что, в свою очередь, помогает сократить задержку ответа.
Определить маску поля ответа
Маска поля ответа представляет собой список путей, разделённых запятыми без пробелов, где каждый путь указывает уникальное поле в объекте ответа. Путь начинается с поля ответа верхнего уровня и использует путь к указанному полю, разделённый точками.
Передайте маску поля ответа в запрос, используя параметр URL $fields
или fields
, или используя заголовок HTTP или gRPC X-Goog-FieldMask
.
Примеры масок полей
Ниже показан полный ответ на прямой запрос геокодирования:
{ "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", ... }
Создайте маски полей, используя иерархию полей ответа, в форме:
topLevelField[.secondLevelField][.thirdLevelField][...]
Например, чтобы вернуть в ответе только поле placeId
, используйте маску поля:
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/v4beta/"geocode/address/1600+Amphitheatre+Parkway,+Mountain+View,+CA"
Ответ теперь такой:
{ "results": [ { "placeId": "ChIJF4Yf2Ry7j4AR__1AkytDyAE" } ] }
Чтобы вернуть поле viewport
, маска поля будет следующей:
-H 'X-Goog-FieldMask: results.viewport'
Ответ теперь такой:
{ "results": [ { "viewport": { "low": { "latitude": 37.420654569708496, "longitude": -122.08547618029148 }, "high": { "latitude": 37.423352530291496, "longitude": -122.0827782197085 } } } ] }
Чтобы вернуть оба:
-H 'X-Goog-FieldMask: results.placeId,results.viewport'
Ответ теперь такой:
{ "results": [ { "placeId": "ChIJF4Yf2Ry7j4AR__1AkytDyAE", "viewport": { "low": { "latitude": 37.420654569708496, "longitude": -122.08547618029148 }, "high": { "latitude": 37.423352530291496, "longitude": -122.0827782197085 } } } ] }
маски полей gRPC
Для gRPC задайте переменную, содержащую маску поля ответа. Затем вы сможете передать эту переменную в запрос.
const ( fieldMask = "results.placeId,results.viewport" )
Соображения относительно траектории поля
Включите в ответ только те поля, которые вам необходимы, чтобы вернуть только те поля, которые вам нужны:
- Сокращает время обработки , поэтому ваши результаты возвращаются с меньшей задержкой.
- Обеспечивает стабильную задержку . Если выбрать все поля или все поля на верхнем уровне, производительность может снизиться при добавлении новых полей и их автоматическом включении в ответ.
- В результате размер ответа уменьшается , что приводит к повышению пропускной способности сети.
Более подробную информацию о построении маски поля см. в field_mask.proto .