В официальной документации клиентской библиотеки Places API (для GetPlace) приведен пример использования клиентской библиотеки, как показано ниже.
import com.google.api.core.ApiFuture;
import com.google.maps.places.v1.GetPlaceRequest;
import com.google.maps.places.v1.Place;
import com.google.maps.places.v1.PlaceName;
import com.google.maps.places.v1.PlacesClient;
public class AsyncGetPlace {
public static void main(String[] args) throws Exception {
asyncGetPlace();
}
public static void asyncGetPlace() throws Exception {
// This snippet has been automatically generated and should be regarded as a code template only.
// It will require modifications to work:
// - It may require correct/in-range values for request initialization.
// - It may require specifying regional endpoints when creating the service client as shown in
// https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
try (PlacesClient placesClient = PlacesClient.create()) {
GetPlaceRequest request =
GetPlaceRequest.newBuilder()
.setName(PlaceName.of("[PLACE_ID]").toString())
.setLanguageCode("languageCode-2092349083")
.setRegionCode("regionCode-1991004415")
.setSessionToken("sessionToken-696552189")
.build();
ApiFuture<Place> future = placesClient.getPlaceCallable().futureCall(request);
// Do something.
Place response = future.get();
}
}
}
Где я могу указать поля для возврата?
Что такое .setLanguageCode, .setRegionCode, .setSessionToken?
Я предполагаю, что .setSessionToken предназначен для функции автозаполнения, но я не уверен, что такое первые два. Я не видел их в использовании HTTP-запросов GET.
Я пару дней просматривал их документацию на Github, случайно реализовал старый API Places и исправляю свои коды для использования новых API. Однако структура их библиотек довольно обширна и найти то, что я хочу, было сложно.
Мне также не удалось получить доступ к их странице Документация по клиентской библиотеке, поэтому, если кто-то смог посетить эту страницу, сообщите мне об этом.
Вам также потребуется использовать FieldMask
, чтобы указать поля, которые будут возвращаться в клиентской библиотеке Places API для Java. Класс FieldMask
можно импортировать из com.google.protobuf
, а дополнительную информацию о том, как создавать маски полей, см. в файле field_mask.proto , который также упоминается в документации API Places.
После импорта класса FieldMask
import com.google.protobuf.FieldMask
Добавьте его в свой GetPlaceRequest
. Вы можете использовать метод setFieldMask
, чтобы указать поля, которые вы хотите вернуть. Вот так:
GetPlaceRequest request =
GetPlaceRequest.newBuilder()
.setName(PlaceName.of("[PLACE_ID]").toString())
.setLanguageCode("languageCode-2092349083")
.setRegionCode("regionCode-1991004415")
.setSessionToken("sessionToken-696552189")
.setFieldMask(FieldMask.newBuilder().addPaths("formattedAddress").build())
.build();
Что касается вашего другого вопроса относительно setLanguageCode, .setRegionCode, and .setSessionToken
, то последний действительно заключается в установке токена сеанса, который используется в сеансе автозаполнения. Для двух других,
setLanguageCode
— указывает язык, на котором должен быть возвращен результат. Например, "en"
для английского языка.setRegionCode
— Устанавливает код региона, который влияет на результаты в пользу указанного региона. Например, "US"
для США.Стоит отметить: значения внутри круглых скобок для каждого метода, например "languageCode-2092349083"
, являются произвольными значениями-заполнителями, поскольку пример фрагмента кода был сгенерирован автоматически и предназначен для замены фактическими значениями.
Привет, Кэт, спасибо за ответ. Я уже реализовал свое приложение с помощью простых HTTP-запросов, но в будущем обновлю их клиентскими библиотеками. Кстати, где вы нашли документацию по настройке
FieldMask
s?