利用MBTiles格式存储离线瓦片,下面为加载方式:
- /**
- * 离线地图
- * 来自离线文件 mbtiles_db.mbtiles
- *
- *
- */
- public class OfflineMBTilesDemo extends Activity {
- private MapView mapView;
- public RelativeLayout rl;
- public MapTileProviderArray mProvider;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setOfflineForMBTiles();// 离线数据
- ScaleBarOverlay scaleBar = new ScaleBarOverlay(getApplicationContext());//比例尺
- mapView.getOverlays().add(scaleBar);
- }
- public void setOfflineForMBTiles() {
- {//离线数据设置
- DefaultResourceProxyImpl mResourceProxy = new DefaultResourceProxyImpl(
- this.getApplicationContext());
- SimpleRegisterReceiver simpleReceiver = new SimpleRegisterReceiver(
- this.getApplicationContext());
- File f = new File("SD/map/MBTiles" , "mbtiles_db.mbtiles");
- IArchiveFile[] files = { MBTilesFileArchive.getDatabaseFileArchive(f) };
- OfflineTileSource offlineSource = new OfflineTileSource("ehl_mbtiles_db", ResourceProxy.string.offline_mode, 7, 15, 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(29.35, 106.33));// 设置中心点
- 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);
- }
- }
- }