Похоже, у вас есть собственный источник тайлов, и вы выполняете рендеринг на лету. Если это так, вам следует взглянуть на поставщика MapsForge, который был адаптирован для osmdroid.
Секретный соус, который поможет, находится в следующем классе: .java#L109" rel="nofollow noreferrer">MapsForgeTileModuleProvider
Этот класс выполняет аналогичную функцию, он отображает тайлы на лету. После рендеринга тайлов они записываются в IFileSystemCache
, что может быть на несколько порядков быстрее с помощью SQL, чем рендеринг/производство изображения каждый раз.
Итак, в основном, после того, как вы создали рассматриваемую плитку, сохраните ее в IFileSystemCache#.saveFile(tileSource, pTile, new ByteArrayInputStream(bitmapdata));
или что-то в этом роде (обязательно закройте поток)
После того, как у вас появится возможность генерировать плитки, соедините все вместе с помощью класса, расширяющего MapTileProviderArray
. Вот пример для кузницы: https://github.com/osmdroid/osmdroid/blob/master/osmdroid-mapsforge/src/main/java/org/osmdroid/mapsforge/MapsForgeTileProvider.java
Обратите внимание, что он создает MapTileFilesystemProvider, который сначала загружает кэшированный тайл, затем модуль записи тайлов, затем поставщик тайлов (который генерирует тайлы на лету). Затем этот пользовательский массив поставщика плиток карты можно прикрепить к карте с помощью mapView.setTileProvider().
Таким образом, это не ускорит рендеринг тайлов (ну, может, поскольку модуль поддерживает несколько потоков, см. this), но наибольшее влияние на производительность оказывает хранение обработанных листов в кэше файловой системы.
person
spy
schedule
13.01.2018