2015-09-08 1 views
0

Как плитка, я использую Here-map.Android: Здесь карта, как загрузить изображение async для черепицы?

Вместо этого я пытаюсь настроить растровые фрагменты с сервера S3. В документации есть два класса, которые поддерживают меня: UrlMapRasterTileSourceBase и MapRasterTileSource.

В моем случае я попытался создать экземпляр MapRasterTileSource, а затем переопределить функцию getTileWithError (int x, int y, int zoomLevel), чтобы загрузить изображение моей плитки с сервера S3.

Проблема заключается в том, что время загрузки изображения слишком велико, и пользовательский интерфейс кажется отстающим.

В документе, здесь является частью:

Примечание: Убедитесь, что getTileWithError() возвращает в пределах разумного количество времени. Если ваша операция занимает более длительный период времени, запускает асинхронную операцию и возвращает код ошибки TileResult.Error.NOT_READY, пока операция находится в прогрессе.

Но, я не знаю, как это применить. Я попытался загрузить изображение с обратным вызовом, но не знаю, что делать после результата.

Не могли бы вы дать мне руку на это, пожалуйста !?

ответ

1

Как вы загружаете растровые плитки из S3? Это синхронный HTTP-запрос, который вы вызываете из getTileWithError?

Правильный поток должен быть: -getTileWithError() // для конкретного х, у, г -Execute выборки плитка из вашего S3 слоя асинхронно с помощью нити или AsyncTask. -Meanwhile, getTileWithError() будет вызываться непрерывно, и вы можете вернуть «TileResult.NOT_READY» -Когда изображение будет полностью загружено, верните образ обратно во время выполнения.

Если количество времени, затраченного на getTileWithError, занимает слишком много времени, источник фрагмента будет автоматически отключен.

+0

-Когда изображение будет полностью загружено, верните изображение обратно во время выполнения. => Значит, это значит, что мы должны кэшировать результат, правильно? В это время я делаю то же самое с тем, что вы предлагаете, загружая async, возвращая NOT_READY, и когда данные, готовые в обратном вызове, -> сохраняют его в кеш-файле, в следующий раз, когда getTileWithError() снова вызовет проверку, есть ли файл кеша для эта плитка затем загружается. Или у вас есть другое решение для возврата образа во время выполнения? –

Смежные вопросы