【问题标题】:"No data" error while loading custom .mbtiles file加载自定义 .mbtiles 文件时出现“无数据”错误
【发布时间】:2013-10-01 21:20:41
【问题描述】:

我正在使用 Nutiteq SDK 开发一个 Android 地图应用程序,该应用程序需要离线工作并显示一个小城市的地图,所以我使用 .mbtiles 文件。到目前为止,使用 TileMill 下载的 .mbtile 文件效果很好,或者更确切地说是他们的演示项目之一,因为互联网访问有时对我来说是个大问题,出于同样的原因,当我的一个朋友告诉我他写了一个Python 脚本,用于从tiles .png 文件夹创建一个.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

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

我希望使用过地图的人,最好是使用 MBTiles 和/或 Nutiteq 的人可以提供一些见解。

谢谢。

【问题讨论】:

    标签: android mapbox nutiteq


    【解决方案1】:

    从日志看来,请求的地图图块似乎只是从数据库中丢失了。你可以检查一下

    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。

    【讨论】:

    • 嘿@JaakL,我确实试图获取一些丢失的瓷砖,但我想问你一些事情,我在模拟器上运行了 nutiteq 演示应用程序,带有来自 TileMill 的 .mbtiles,但是在我的 HTC One V 上试用时,完全相同的项目崩溃了,有什么想法吗?
    • 崩溃期间的堆栈跟踪是什么?
    猜你喜欢
    • 1970-01-01
    • 2023-03-03
    • 2017-09-19
    • 2016-03-29
    • 2022-01-22
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多