Застрял с обратным геокодированием при использовании карт API в Java - PullRequest
0 голосов
/ 15 мая 2018

Итак, у меня есть проблема, когда я пытаюсь найти код региона / состояние координат.Я (предположим) правильно реализовал обратное геокодирование из карт API.Однако сейчас я застрял на самом деле что-то делать с данными.Мой код

 String API_KEY = "AIzaSyABXoV5ktBurLqodVntX6ImhNHOjDBgciQ";

 GeoApiContext apiContext = new GeoApiContext.Builder()
   .apiKey(API_KEY)
   .build();

 LatLng test = new LatLng( -8.96238,-40.68703);
 GeocodingApiRequest geocodingApi = GmapsController.reverseGeocode(apiContext, test);

Так что теперь у меня есть этот запрос geocodingApiRequest, как я могу получить строку RegionCode или даже адрес JSON

1 Ответ

0 голосов
/ 15 мая 2018

Учитывая спецификацию API, я ожидаю, что следующие два будут работать, в зависимости от того, хотите ли вы синхронный режим:

GeocodingResult[] results = geocodingApi.await();
for (GeocodingResult result: results) {
  String address = result.formattedAddress;
  // use it or check other fields on `result`
}

или асинхронное поведение

class FutureCompletingCallback implements PendingResult.Callback<GeocodingResult[]> {
    final CompletableFuture<GeocodingResult[]> resultsFuture;

    FutureCompletingCallback(CompletableFuture<GeocodingResult[]> resultsFuture) {
         this.resultsFuture = resultsFuture;
    }

    public void onResult(GeocodingResult[] results) {
        resultsFuture.complete(results);
    }

    public void onFailure(Throwable t) {
        resultsFuture.compleExceptionally(t);
    }
}

CompletableFuture<GeocodingResult[]> resultsFuture = new CompletableFuture<>();
geocodingApi.setCallback(new FutureCompletingCallback(resultsFuture));
// collect result synchronously
GeocodingResult[] results = resultsFuture.get()
// OR act asynchronously
resultsFuture.whenComplete(...some action...);
...