来自sqlite tiles的OSMDroid灰色区域

时间:2017-02-03 16:58:54

标签: android osmdroid

我试图在资产中使用sqlite磁贴创建一个离线地图。 我将sqlite文件移动到osmdroid文件夹,但它只加载了地图的几个部分。

我使用MOBAC创建了我的sqlite文件,我尝试使用相同或不同的图层选择不同的缩放级别,并将重绘方式强制为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);

但是当地图被加载时(花一些时间我不知道它是否正常)。 大部分地图都是灰色的,我必须多次放大/缩小以加载一些部分。

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

1 个答案:

答案 0 :(得分:1)

"名称"在您的示例中,MOBAC中使用的tile源代码必须匹配" MAPNIK"。您可以使用sqlite3命令行工具或使用firefox的sqlite manager插件来验证它的设置。

select * from tiles应该这样做

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

延迟可能是在启动时从资产复制到/ sdcard。您还需要确保数据库存在,osmdroid可以在创建地图视图(setContentView)之前找到它。如果这不是一个选项,您也可以reset完成复制操作后mapView.setTileProvider(new MapTileProviderBasic(context));地图图块提供程序