2017-02-03 79 views
1

我试图使用资产中的sqlite瓷砖离线地图。 我将sqlite文件移动到osmdroid文件夹,但它只加载地图的几个部分。从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

在您的示例中,MOBAC中使用的图块源的“名称”必须与“MAPNIK”匹配。您可以通过使用sqlite3命令行工具或使用适用于Firefox的sqlite管理器插件来验证它的设置。

select * from tiles应该这样做

你的示例代码也将缩放级别设置为15。你确定你的选择MOBAC缩放级别15?当应用程序启动到您知道位于数据库中的位置时,可能会帮助您设置默认经纬度。包含缩放级别0-9左右也是有帮助的,因为这些缩放级别的内容并不太大,它可以帮助您找出在哪里。

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

+1

复制动作完成后的地图磁贴供应商reset'mapView.setTileProvider(new MapTileProviderBasic(context));'做这个工作!非常感谢你。 setTileProvider到底是什么?我没有找到很多关于它的信息。 – Wiicolas

+0

图块提供程序执行所有图块加载并聚合用于查找显示(在线,离线,缓存等)的不同机制。当它初始化时,它会扫描离线的瓷砖档案。因此反弹会导致扫描发射 – spy