【问题标题】:OSMDroid grey area from sqlite tiles来自 sqlite 瓷砖的 OSMDroid 灰色区域
【发布时间】:2017-02-04 21:05:43
【问题描述】:

我尝试使用资产中的 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);

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

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

【问题讨论】:

    标签: android osmdroid


    【解决方案1】:

    在您的示例中,MOBAC 中使用的磁贴源的“名称”必须与“MAPNIK”匹配。您可以使用 sqlite3 命令行工具或使用 Firefox 的 sqlite manager 插件来验证它的设置。

    select * from tiles 应该这样做

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

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

    【讨论】:

    • mapView.setTileProvider(new MapTileProviderBasic(context)); 完成这项工作!非常感谢。 setTileProvider 到底是什么?我没有找到很多关于它的信息。
    • 磁贴提供者完成所有磁贴加载并聚合不同的机制来查找显示(在线、离线、缓存等)。当它初始化时,它会扫描离线平铺档案。因此反弹它会导致扫描触发
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多