【移动GIS】MBTiles离线地图设置

来源:互联网 发布:淘宝卖的最奇葩的东西 编辑:程序博客网 时间:2024/05/01 08:29

使用Osmdroid,利用MBTiles格式存储离线瓦片,下面为加载方式:

/** * 离线地图 * 来自离线文件 mbtiles_db.mbtiles *  *  */public class OfflineMBTilesDemo extends Activity {private MapView mapView;public  RelativeLayout rl;public  MapTileProviderArray mProvider;@Overridepublic 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);}}}