gpt4 book ai didi

android - 下载 osmdroid map

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:06:58 26 4
gpt4 key购买 nike

我正在开发一个需要离线使用 map 的应用程序。我正在使用 osmdroid 和 osmbonuspack

要下载我试过的 map :

对我来说,理想的做法是从应用程序本身下载 map ,而我只想下载您所在轨道上的 map ,而不是完整的部分。

我该如何解决?

有什么方法可以通过我的应用程序从手机下载 map 吗?

最佳答案

工作解决方案 MobileAtlasCreator / MOBAC :

有一个osmdroid documentation ,但它非常薄弱,有时甚至已经过时。

我在连续的问题上挣扎了一段时间。以下是 osmdroid v4.1 的工作解决方案的详细信息。

1) 使用 MOBAC 构建离线 map 时:

  • 由于 Mapnik map 已有效锁定,因此选择“OpenStreetMap MapQuest”作为来源。
  • 图集格式:选择“Osmdroid ZIP”
  • 注意勾选您需要的所有缩放级别。默认情况下,没有被选中。

选择您的区域,创建您的“ map 集”。这会生成一个 zip 文件。

在您的设备上上传 zip 文件,位于/sdcard/osmdroid/(具体路径可能因设备而异。如果您已经使用过 osmdroid,则此目录必须已经存在)

文件名无关紧要。扩展名必须是“.zip”

2) 现在,在您的 osmdroid 应用程序中,您的 onCreate 方法应该是这样的:

@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
map = (MapView) findViewById(R.id.map);
map.setTileSource(new XYTileSource("MapQuest",
ResourceProxy.string.mapquest_osm, 0, 18, 256, ".jpg", new String[] {
"http://otile1.mqcdn.com/tiles/1.0.0/map/",
"http://otile2.mqcdn.com/tiles/1.0.0/map/",
"http://otile3.mqcdn.com/tiles/1.0.0/map/",
"http://otile4.mqcdn.com/tiles/1.0.0/map/"}));
map.setBuiltInZoomControls(true);
map.setMultiTouchControls(true);
map.setUseDataConnection(false); //optional, but a good way to prevent loading from the network and test your zip loading.
IMapController mapController = map.getController();
mapController.setZoom(_A ZOOM LEVEL YOU HAVE IN YOUR ZIP_);
GeoPoint startPoint = new GeoPoint(_POSITION SOMEWHERE INSIDE YOUR MAP_);
mapController.setCenter(startPoint);
}

在这段代码中,2个参数值非常重要:

“MapQuest”名称(具有此精确拼写)是强制性的 => 这用作 zip 文件内的内部路径。如果打开 zip 文件,您将看到 MOBAC 创建了这个“MapQuest”目录。

.jpg"扩展名也是强制性的 => 因为 MOBAC 在 .jpg 扩展名的 zip 中创建 MapQuest 瓦片(重要的是要注意,因为 osmdroid 中的标准瓦片源都使用 ".png"扩展名)。

在这个阶段,它应该没问题 - 只要您确实将 map View 定位在属于 map 集(缩放级别和位置)的区域上。

3) 返回 MOBAC... 您还可以选择以下图集格式:“Osmdroid SQLite”或“MBTiles SQLite”。在/sdcard/osmdroid/中传输文件(Layer.sqlite 或 Layer.mbtiles)

同样,在您的 XYTileSource 构造函数中,扩展名必须是“.jpg”。名字并不重要。

两者都运行良好。

4) 选择“Osmdroid GEMF”格式将不起作用:它是 known bug在 GEMF 中处理 jpg tiles。编辑 > 在 MOBAC 中,您可以使用“自定义图 block 处理”功能将 JPG 图 block 转换为 PNG 格式。然后“Osmdroid GEMF”就可以了。

关于android - 下载 osmdroid map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22862534/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com