Mapbox API для геокодирования вызывает исключение нехватки памяти при запуске нескольких записей - PullRequest
0 голосов
/ 26 февраля 2019

При реализации API Mapbox в Java-программу я получаю следующую ошибку.

enter image description here

Эта программа прекрасно работает при отправке одной или нескольких записей, но при отправке всей таблицы Excel из (приблизительно 11 000) местоположений,он отправит эту ошибку примерно на полпути.Прикрепленный код о том, как я пытаюсь геолокации.

for(int i = 0; i < LocationAddresses.size();i++) {
            GeoCodeObject(LocationAddresses.get(i));    
        }

Этот метод является методом геолокации.

private static void GeoCodeObject(String LocationAddress){

            MapboxGeocoding mapboxGeocoding = MapboxGeocoding.builder()
                    .accessToken(MAPBOX_API_TOKEN)
                    .query(LocationAddress)
                    .build();

            mapboxGeocoding.enqueueCall(new Callback<GeocodingResponse>() {
                @Override
                public void onResponse(Call<GeocodingResponse> call, Response<GeocodingResponse> response) {

                    List<CarmenFeature> results = response.body().features();

                    if (results.size() > 0) {
                      Point firstResultPoint = results.get(0).center();
                      geocodedLocations.add(firstResultPoint);
                      return;

                    } else {    
                        UndefinedLocation.add(mapboxGeocoding);
                        return;
                    }
                }

                @Override
                public void onFailure(Call<GeocodingResponse> call, Throwable throwable) {
                    throwable.printStackTrace();
                }
            });
    }

(Расположение адресов - это просто список адресов в массиве). Эта проблема может быть решена с помощью программирования илиэто аппаратное ограничение?Если это можно решить с помощью другой стратегии программирования, как это можно сделать?Заранее спасибо!

1 Ответ

0 голосов
/ 01 марта 2019

Вы почти наверняка столкнетесь с пределом скорости API геокодирования, равным 600 запросов в минуту : https://docs.mapbox.com/api/search/#geocoding-restrictions-and-limits

Я бы порекомендовал добавить механизм ожидания к вашемуGeoCodeObject функция, которая не позволяет вашему приложению выполнять все запросы к API настолько быстро, насколько это возможно.


⚠️ Отказ от ответственности: в настоящее время я работаю в Mapbox ⚠️

...