我正在开发一个应用程序,需要离线使用地图。我正在使用osmdroid和osmbonuspack。
为了下载地图,我已经尝试过:
- MobileAtlasCreator但Mapnik地图被锁定。
- osmdroid-packager。它可以工作,但只能下载9个缩放级别。
对我来说,理想的情况是从应用程序本身下载地图,而且我只想下载沿着路径所在的地图,而不是完整的区域。
我该如何解决这个问题?
是否有办法通过我的应用程序从手机上下载地图?
我正在开发一个应用程序,需要离线使用地图。我正在使用osmdroid和osmbonuspack。
为了下载地图,我已经尝试过:
对我来说,理想的情况是从应用程序本身下载地图,而且我只想下载沿着路径所在的地图,而不是完整的区域。
我该如何解决这个问题?
是否有办法通过我的应用程序从手机上下载地图?
使用MobileAtlasCreator / MOBAC的解决方案:
虽然有osmdroid文档,但很薄弱,有时也过时了。
我曾在连续问题上挣扎了一段时间。下面是使用osmdroid v4.1的工作解决方案的详细信息:
1) 在使用MOBAC构建离线地图时:
选择您的区域,创建您的“图集”。这将生成一个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);
}
4) 选择“Osmdroid GEMF”格式不起作用:这是GEMF中处理jpg瓦片的已知错误。编辑> 在MOBAC中,您可以使用“自定义瓷砖处理”功能将JPG瓦片转换为PNG格式。然后,“Osmdroid GEMF”将正常工作。
首先感谢MKer以及其他帖子中的Tom Kincaid,将两者结合起来。以下方法适用于我:
与MKer不同,我需要完成以下步骤:
String[] urls = {"http://127.0.0.1"};
mapView.setTileSource(new XYTileSource("MapQuest", // name of the main file that has been zipped
ResourceProxy.string.mapquest_osm,
2, // min map zoom level
14, // max map zoom level
256, // tile size pixels
".jpg", // extension of the tiles (can be ".png" as well)
urls));
使用移动地图创建器创建地图后
今天只有OSM地图瓷砖打包器适用于地图瓷砖mapnik,并且它可以生成PNG格式的地图。
if(ConexaoInternet.verificaConexao(getActivity())) { //<-- here i am Checking if has conection with internet
mapView.setTileSource(TileSourceFactory.DEFAULT_TILE_SOURCE);
}else{
String[] urls = {"http://127.0.0.1"};
mapView.setTileSource(new XYTileSource("Mapnik", // name of the main file that has been zipped
ResourceProxy.string.mapquest_osm,
9, // min map zoom level
15, // max map zoom level
256, // tile size pixels
".png",
new String[]{"http://a.tile.openstreetmap.org/", "http://b.tile.openstreetmap.org/", "http://c.tile.openstreetmap.org/"}));
}
我更喜欢放一些具体的URL。
map.setUseDataConnection(true)
,它不会下载地图。如果地图不存在,我该怎么办才能下载地图? - user3292741http://otile1.mqcdn.com/tiles/1.0.0/map/
这是一个网络调用,需要互联网。我没有看到任何用于从内部/外部存储读取地图的代码? - Muhammad Babar