来自 sqlite tiles 的 OSMDroid 灰色区域

OSMDroid grey area from sqlite tiles

我尝试使用 assets 中的 sqlite tiles 制作离线地图。 我将 sqlite 文件移动到 osmdroid 文件夹,但它只加载了地图的几个部分。

我使用 MOBAC 创建了我的 sqlite 文件,我尝试使用相同或不同的层 select 不同的缩放级别,并强制将正方形重绘为 PNG。

地图是使用以下代码创建的:

    map = (MapView) findViewById(R.id.mapview);
    map.setTileSource(TileSourceFactory.MAPNIK);
    MyLocationNewOverlay mLocationOverlay = new MyLocationNewOverlay(new GpsMyLocationProvider(StepActivity.this), map);
    mLocationOverlay.enableMyLocation();
    map.getOverlays().add(mLocationOverlay);
    map.setBuiltInZoomControls(true);
    map.getController().setZoom(15);
    map.setClickable(false);
    map.setUseDataConnection(false);
    map.setMinZoomLevel(15);
    map.setMaxZoomLevel(18);

但是在加载地图的时候(需要一些时间不知道是否正常)。 大部分地图都是灰色的,我必须放大in/out几次才能加载一些部分。

我不明白如何加载我所有可见的地图。

在您的示例中,MOBAC 中使用的图块源的 "name" 必须匹配 "MAPNIK"。您可以使用 sqlite3 命令行工具或使用 firefox 的 sqlite 管理器插件来验证它的设置。

select * from tiles应该做

您的示例代码还将缩放级别设置为 15。您确定在 mobac 中选择了缩放级别 15 吗?当应用程序启动到您知道在数据库中的位置时,设置默认值 lat/lon 可能会有所帮助。包含 0-9 左右的缩放级别也很有帮助,因为这些缩放级别的内容不会太大,它会帮助您找出位置。

延迟可能是在启动时从资产复制到 /sdcard。在创建地图视图 (setContentView) 之前,您还需要确保数据库存在于 osmdroid 可以找到它的地方。如果这不是一个选项,您还可以在 mapView.setTileProvider(new MapTileProviderBasic(context));

完成复制操作后 reset 地图图块提供程序