【发布时间】:2016-06-18 21:28:15
【问题描述】:
有没有一种方法可以在不需要第一次网络连接的情况下使用离线地图来缓存一些地图数据?
首先我使用了谷歌地图,但它似乎只缓存了一些图块,如果你没有互联网连接,它在第一次启动时不会加载任何东西
之后我尝试了 osmdroid,它与谷歌地图逻辑足够接近,但我找不到将它与 assets 文件夹一起使用的方法,而不是与 sdk 文件夹预安装的图块一起使用。如果用户平板电脑没有 SD 卡怎么办? 我确实需要一个适用于任何平板电脑的全局解决方案。
我只需要一个国家而不是整个世界的瓷砖!
这是我目前的代码
MapView mapView = new MapView(this, 256); //constructor
mapView.setClickable(true);
mapView.setBuiltInZoomControls(true);
mapView.setTileSource(TileSourceFactory.DEFAULT_TILE_SOURCE);
setContentView(mapView); //displaying the MapView
mapView.getController().setZoom(6); //set initial zoom-level, depends on your need
mapView.getController().setCenter(new GeoPoint(37.9513589,23.6474895)); //This point is in Enschede, Netherlands. You should select a point in your map or get it from user's location.
mapView.setUseDataConnection(false);
我在 assets/MapQuest/z/x/y.jpg 上有我的图块
奇怪的是,在那个链接中:https://github.com/osmdroid/osmdroid/wiki/Map-Sources 它说:
Tile Source 决定了显示的图像集,例如 Bing、Mapquest、Mapnik 等。默认的 Tile Provider 会在以下内容中搜索您的 Tile Source、Assets、离线 zip/sqlite/etc 在 (/sdcard/osmdroid )、下载的切片缓存 (/sdcard/osmdroid/tiles),最后是下载器。
【问题讨论】:
-
无需下载地图的全球解决方案?因此,您想将整个世界与您的应用程序捆绑在一起吗?该应用程序将非常庞大...如果您使用 OsmAnd 数据库,则需要 10-20 GB...
-
我编辑了我的问题。很抱歉之前没有定义它
-
否,但所有指令都会导致以下“将输出文件复制到 /sdcard/osmdroid/”。如果用户没有 SD 卡怎么办?
标签: android maps offline osmdroid