【移動GIS】MBTiles離線地圖設置

使用Osmdroid,利用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);
		}
	}
}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章