2013-10-01 54 views
2

我正在使用Nutiteq SDK开发Android地图应用程序,该应用程序需要脱机工作并显示小城市的地图,因此我正在使用.mbtiles文件。到目前为止,使用TileMill下载的.mbtile文件效果很好,或者说是他们的演示项目之一,因为Internet访问对我来说有时是一个大问题,出于同样的原因,当我的一位朋友告诉我他写了一个Python脚本从tiles.png文件夹中创建.mbtiles文件,并使用.mbtiles格式。我试图用一个文件通过这种方式获得并加载文件时,我收到以下错误:加载自定义.mbtiles文件时出现“无数据”错误

10-02 00:11:41.976: DEBUG/hellomap(404): DbMapLayer: Start loading zoom=10 x=277 y=444 
10-02 00:11:41.976: DEBUG/hellomap(404): DbMapLayer: Start loading zoom=10 x=278 y=444 
10-02 00:11:41.976: DEBUG/hellomap(404): DbMapLayer: Start loading zoom=10 x=277 y=443 
10-02 00:11:41.976: DEBUG/hellomap(404): DbMapLayer: Start loading zoom=10 x=278 y=443 
10-02 00:11:41.976: DEBUG/hellomap(404): DbMapLayer: Start loading zoom=10 x=277 y=445 
10-02 00:11:41.976: DEBUG/hellomap(404): DbMapLayer: Start loading zoom=10 x=278 y=445 
10-02 00:11:41.976: DEBUG/hellomap(404): DbMapLayer task: Start loading zoom=10 x=277  y=444 
10-02 00:11:42.340: DEBUG/TileDatabaseHelper(404): not found z=10 x=277 y=579 
10-02 00:11:42.340: ERROR/hellomap(404):  com.nutiteq.layers.raster.MBTilesMapLayer$DbFetchTileTask: No data. 
10-02 00:11:42.536: DEBUG/hellomap(404): DbMapLayer task: Start loading zoom=10 x=278 y=444 
10-02 00:11:42.636: DEBUG/TileDatabaseHelper(404): not found z=10 x=278 y=579 
10-02 00:11:42.636: ERROR/hellomap(404):  com.nutiteq.layers.raster.MBTilesMapLayer$DbFetchTileTask: No data. 
10-02 00:11:42.746: DEBUG/hellomap(404): DbMapLayer task: Start loading zoom=10 x=277 y=443 
10-02 00:11:42.746: DEBUG/TileDatabaseHelper(404): not found z=10 x=277 y=580 
10-02 00:11:42.746: ERROR/hellomap(404): com.nutiteq.layers.raster.MBTilesMapLayer$DbFetchTileTask: No data. 
10-02 00:11:42.947: DEBUG/hellomap(404): DbMapLayer task: Start loading zoom=10 x=278 y=443 
10-02 00:11:43.186: DEBUG/hellomap(404): onDrawFrame: Last frame time 325ms 
10-02 00:11:43.346: DEBUG/TileDatabaseHelper(404): not found z=10 x=278 y=580 
10-02 00:11:43.360: ERROR/hellomap(404): com.nutiteq.layers.raster.MBTilesMapLayer$DbFetchTileTask: No data. 
10-02 00:11:43.360: DEBUG/hellomap(404): DbMapLayer task: Start loading zoom=10 x=277 y=445 
10-02 00:11:43.596: DEBUG/hellomap(404): onDrawFrame: Last frame time 230ms 
10-02 00:11:43.706: DEBUG/TileDatabaseHelper(404): not found z=10 x=277 y=578 
10-02 00:11:43.706: ERROR/hellomap(404): com.nutiteq.layers.raster.MBTilesMapLayer$DbFetchTileTask: No data. 
10-02 00:11:43.706: DEBUG/hellomap(404): DbMapLayer task: Start loading zoom=10 x=278 y=445 
10-02 00:11:43.706: DEBUG/TileDatabaseHelper(404): not found z=10 x=278 y=578 
10-02 00:11:43.706: ERROR/hellomap(404): com.nutiteq.layers.raster.MBTilesMapLayer$DbFetchTileTask: No data. 
10-02 00:11:43.966: DEBUG/hellomap(404): onDrawFrame: Last frame time 249ms 

我猜一些错误的脚本,但事实是,他正在使用相同的.mbtiles与MapBox文件iOS SDK没有问题。

我希望有人曾与地图,最好与MBTiles和/或Nutiteq的工作可以给一些见解。

谢谢。

回答

3

从日志看来,请求的地图图块只是从数据库中丢失。你可以用

sqlite3 <file>.mbtiles 
sqlite> select * from tiles where zoom_level=10 and tile_column=277 and tile_row=579; 

如果这个返回空数据,那么数据就不存在了。如果它返回一行,请检查文件是否已正确打开。

也有可能翻转y,因为TMS与普通web地图块(如OSM)有不同的起源。您可以在应用程序中更改此设置,MBTilesLayer具有setTmsY(),尝试将其设置为true。

+0

嘿@JaakL,我的确在尝试取得一些遗失的瓷砖,但我想问你一些事情,我在仿真器上运行nutiteq演示应用程序,使用TileMill中的.mbtiles,但是完全相同的项目崩溃同时在我的HTC One V上试用它,有什么想法? – maxandonuts

+0

崩溃期间的堆栈跟踪是什么? – JaakL

相关问题