我试图在资产中使用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);
但是当地图被加载时(花一些时间我不知道它是否正常)。 大部分地图都是灰色的,我必须多次放大/缩小以加载一些部分。
我不明白如何加载我所有可见的地图。
答案 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));
地图图块提供程序