2015-04-29 6 views
0

У меня есть базовое приложение для Android, которое загружает и отображает локальный файл .mbtiles с помощью SDK Mapbox (версия 0.7.3), но при первой загрузке приложения существует значительная задержка (в результате получается черный экран), пока он загружает плитки. Похоже, что он может загружать ВСЕ плитки (а не только видимые плитки при запуске). Есть ли способ изменить это. Файл .mbtiles имеет размер около 257 МБ, и приложение занимает примерно 40 секунд, чтобы отобразить карту после запуска.Уменьшение времени загрузки автономного слоя mbtiles в Mapbox Android SDK

Любая помощь была бы принята с благодарностью.

Вот где плитка загружены:

protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    this.findViewById(R.id.mapview); 

    MapView mapView = (MapView) findViewById(R.id.mapview); 
    mapView.setZoom(9); 
    mapView.setMinZoomLevel(8); 
    mapView.setMaxZoomLevel(15); 
    mapView.setCenter(new LatLng(55.676111, 12.568333)); 
    mapView.setTileSource(new MBTilesLayer(this, "DK_underlay_1_0_4.mbtiles")); 

} 

и вот являются журналы, показывающий второй зазор ~ 40 при загрузке приложения:

04-29 11:07:54.173 23590-23590/com.example.stugrey.testapp D/MapboxMapView﹕ centerLatLng is not specified in XML. 
04-29 11:07:54.173 23590-23590/com.example.stugrey.testapp D/Mapbox MapView﹕ zoomLevel is not specified in XML. 
04-29 11:08:34.236 23590-23590/com.example.stugrey.testapp D/AppUtils﹕ Device density is 320, and result of @2x check is true 
04-29 11:08:34.236 23590-23590/com.example.stugrey.testapp D/MapTileDownloader﹕ Going to use @2x tiles? 'true' 
04-29 11:08:34.308 23590-23590/com.example.stugrey.testapp I/Adreno-EGL﹕ <qeglDrvAPI_eglInitialize:410>: EGL 1.4 QUALCOMM build: AU_LINUX_ANDROID_LNX.LA.3.5.1_RB1.04.04.02.048.018_msm8226_LNX.LA.3.5.1_RB1__release_AU() 
OpenGL ES Shader Compiler Version: E031.24.00.08 
Build Date: 03/07/14 Fri 
Local Branch: 
Remote Branch: quic/LNX.LA.3.5.1_RB1.1 
Local Patches: NONE 
Reconstruct Branch: AU_LINUX_ANDROID_LNX.LA.3.5.1_RB1.04.04.02.048.018 + f2fd134 + NOTHING 

ответ

2

Медленная часть вашего кода создание MBTilesLayer. Все остальное должно быть плавным. Таким образом, одна вещь, которую вы можете сделать, это переместить медленный код new MBTilesLayer(this, "DK_underlay_1_0_4.mbtiles") в AsyncTask, чтобы ваш пользовательский интерфейс не был заблокирован во время медленной загрузки. Это не уменьшает время загрузки, но обеспечивает не заблокированный пользовательский интерфейс.

Таким образом, вы можете отображать индикатор прогресса (или заполнитель) вместо черного экрана.

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