Android osmdroid 离线地图

1、获取移动设备的访问读取文件权限

2、下载离线地图瓦片到移动设备指定位置(注意:地图瓦片zip压缩包中要有跟压缩包名称一样的文件夹,比如:osmMapOffline.zip解压出来第一层需要是osmMapOffline,然后里面才是0,1,2...的地图瓦片文件夹)

3、访问指定位置的离线地图瓦片,以下:

implementation 'org.osmdroid:osmdroid-android:6.1.11'
<org.osmdroid.views.MapView
        android:id="@+id/offlineMapView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
private void initMap(){
	Configuration.getInstance().setUserAgentValue(BuildConfig.APPLICATION_ID);
	//built in zoom controls
	mMapView.setBuiltInZoomControls(true);
	//needed for pinch zooms
	mMapView.setMultiTouchControls(true);
	//scales tiles to the current screen's DPI, helps with readability of labels
	mMapView.setTilesScaledToDpi(true);
	//初始化离线地图
	mapViewOffline();
	mMapView.setMaxZoomLevel(19.0);
	mMapView.setMinZoomLevel(3.0);
	//设置地图级别
	mMapView.getController().setZoom(6.0);
}

 myMapView为组件

public void mapViewOffline() {
	//在线source
	OnlineTileSourceBase tianDiTuImgTileSource = new OnlineTileSourceBase("Tian Di Tu Img", 1, 22, 256, "",
				new String[]{"https://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8"}) {
			@Override
			public String getTileURLString(final long pMapTileIndex) {
				return getBaseUrl() + "&X=" + MapTileIndex.getX(pMapTileIndex) + "&Y=" + MapTileIndex.getY(pMapTileIndex)
						+ "&Z=" + MapTileIndex.getZoom(pMapTileIndex);
			}
		};
	String filePath = "";//离线地图瓦片包位置
	File zipFile = new File(filePath);
	try {
		OfflineTileProvider tileProvider = new OfflineTileProvider(new SimpleRegisterReceiver(getContext()), new File[]{zipFile });
		myMapView.setTileProvider(tileProvider);

		String source = "";
		IArchiveFile[] archives = tileProvider.getArchives();
		if (archives.length > 0) {
			Set<String> tileSources = archives[0].getTileSources();
			if (!tileSources.isEmpty()) {
				source = tileSources.iterator().next();
				myMapView.setTileSource(FileBasedTileSource.getSource(source));
			} else {
				//离线设置失败,则设置在线
				myMapView.setTileSource(tianDiTuImgTileSource);
			}
		} else {
			//离线设置失败,则设置在线
			myMapView.setTileSource(tianDiTuImgTileSource);
		}
		myMapView.invalidate();
	} catch (Exception ex) {
		ex.printStackTrace();
	}
}

参考链接:安卓使用osmdroid显示谷歌地图、高德地图及离线地图详解_android 加载谷歌地图瓦片-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值