发布于 2014-09-13 03:24:06
使用Skobbler开发工具包,您可以使用离线地图和(反向)地理编码。
发布于 2020-11-13 05:19:16
这里有一个答案,https://stackoverflow.com/a/64811929/13794189
并如下所示:
要在离线模式下使用Open Street Maps (OSM),您需要首先实现一个下载管理器,就像下面的帖子所示。它具有恢复功能,这对于非常大的文件是很好的:
https://stackoverflow.com/a/64811752/13794189
接下来,您可以将下载的OSM映射文件加载到mapView中,如下所示:
org.osmdroid.config.IConfigurationProvider osmConf = org.osmdroid.config.Configuration.getInstance();
File basePath = new File(SessionData.offlineMapsDirectoryPath, "osmdroid");
osmConf.setOsmdroidBasePath(basePath);
File tileCache = new File(SessionData.offlineMapsDirectoryPath, "tile");
osmConf.setOsmdroidTileCache(tileCache);
map = (MapView) getActivity().findViewById(R.id.map); // create basic map
//map.setTileSource(TileSourceFactory.DEFAULT_TILE_SOURCE);
map.setTilesScaledToDpi(true);
map.setMultiTouchControls(true);
map.setUseDataConnection(false);
// add compass to map
//CompassOverlay compassOverlay = new CompassOverlay(getActivity(), new InternalCompassOrientationProvider(getActivity()), map);
//compassOverlay.enableCompass();
//map.getOverlays().add(compassOverlay);
//attach listeners
MapEventsOverlay mapEventsOverlay = new MapEventsOverlay(this);
map.getOverlays().add(0, mapEventsOverlay);
在上面的代码中,SessionData.offlineMapsDirectoryPath是保存下载文件的路径。
不要忘记在gradle文件中添加以下实现:
implementation 'org.osmdroid:osmdroid-android:6.1.0'
implementation 'com.github.MKergall:osmbonuspack:6.6.0'
https://stackoverflow.com/questions/8849870
复制相似问题