在OSMdroid中,使用ZIP格式离线文件来加载地图瓦片。
设置方式如下:
/** * 离线地图 * 来自ZIP压缩文件 * * @author fazhen.zheng * */ public class OfflineZipTilesDemo extends Activity { private MapView mapView; public RelativeLayout rl; public MapTileProviderArray mProvider; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setOfflineForZip();// 离线数据 ScaleBarOverlay scaleBar = new ScaleBarOverlay(getApplicationContext());//比例尺 mapView.getOverlays().add(scaleBar); } public void setOfflineForZip() { {//离线数据设置 DefaultResourceProxyImpl mResourceProxy = new DefaultResourceProxyImpl( this.getApplicationContext()); SimpleRegisterReceiver simpleReceiver = new SimpleRegisterReceiver( this.getApplicationContext()); File f = new File(TileProviderConstants.EHLMAP_PATH+"/zip" , "china.zip"); IArchiveFile[] files = { ArchiveFileFactory.getArchiveFile(f) }; OfflineTileSource offlineSource = new OfflineTileSource("china", ResourceProxy.string.offline_mode, 6, 13, 256, ".png"); MapTileModuleProviderBase moduleProvider = new MapTileFileArchiveProvider( simpleReceiver, offlineSource, files); MapTileProviderArray mProvider = new MapTileProviderArray( offlineSource, null, new MapTileModuleProviderBase[] { moduleProvider }); this.mapView = new MapView(this, 256, mResourceProxy, mProvider); } {//地图初始化设置 this.mapView.setBuiltInZoomControls(true);// 最下方出现放大缩小按钮 this.mapView.setMultiTouchControls(true);// 触控放大缩小 this.mapView.setUseDataConnection(false); mapView.getController().setCenter( new GeoPoint(36.5447278702, 104.1347919517));// 设置中心点 mapView.getController().setZoom(9); } {//布局 final RelativeLayout rl = new RelativeLayout(this); rl.addView(this.mapView, new RelativeLayout.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); this.setContentView(rl); } } }