android osmdroid 加载常用离线地图格式(开源的在线地图)
来源:互联网 发布:理肤泉和雅漾喷雾 知乎 编辑:程序博客网 时间:2024/09/21 08:18
osmdroid是(几乎)完整/免费更换为Android MapView(v1 API)类。它还包括一个模块化的瓷砖供应商系统支持众多的在线和离线瓷砖来源和覆盖支持内置覆盖绘制图标,跟踪位置和形状。如果想在你项目中使用osmdroid,绝对是灵活度最高,不用申请百度,高德等的key。还有一堆规则要遵循。osmdroid可以支持多图层叠加,绘制自已的图层。离线加载常用地图格式zip,sqlite,.mbtiles,gemf。也可以在线加载地图等。
github官网:https://github.com/osmdroid/osmdroid
osmdroid api解释:http://osmdroid.github.io/osmdroid/
维基解释:https://github.com/osmdroid/osmdroid/wiki
这篇博客代码的下载地址:http://download.csdn.net/detail/qq_16064871/9728127
1,图片展示
在线地图:
网格形式:还没加载出来
加载sd卡下面一个离线地图
2,部分离线地图参考代码
package com.example.osmdroiddemo;import java.io.File;import java.util.Set;import org.osmdroid.tileprovider.IRegisterReceiver;import org.osmdroid.tileprovider.modules.ArchiveFileFactory;import org.osmdroid.tileprovider.modules.IArchiveFile;import org.osmdroid.tileprovider.modules.OfflineTileProvider;import org.osmdroid.tileprovider.tilesource.FileBasedTileSource;import org.osmdroid.tileprovider.tilesource.TileSourceFactory;import org.osmdroid.tileprovider.util.SimpleRegisterReceiver;import org.osmdroid.util.GeoPoint;import org.osmdroid.views.MapView;import android.os.Bundle;import android.os.Environment;import android.app.Activity;import android.view.Menu;import android.widget.Toast;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);MapView mapView = (MapView)findViewById(R.id.MapView);initMapOverlays(mapView);}public void initMapOverlays(MapView mapView) {if (mapView.getOverlays().size()<=0) {mapViewOtherData(mapView);//mapView.setTileSource(TileSourceFactory.MAPNIK);mapView.setDrawingCacheEnabled(true);mapView.setMaxZoomLevel(20);mapView.setMinZoomLevel(6);mapView.getController().setZoom(12);mapView.getController().setCenter(new GeoPoint(23.12655, 113.366575));mapView.setUseDataConnection(true);mapView.setMultiTouchControls(true);// 触控放大缩小 mapView.getOverlayManager().getTilesOverlay().setEnabled(true);//自己图层//mapView.getOverlays().add();//".zip"".sqlite"".mbtiles"".gemf"}}public void mapViewOtherData(MapView mapView){String strFilepath = Environment.getExternalStorageDirectory().getPath() + "/test.mbtiles";File exitFile = new File(strFilepath);String fileName = "test.mbtiles";if (!exitFile.exists()) {mapView.setTileSource(TileSourceFactory.MAPNIK);}else {fileName = fileName.substring(fileName.lastIndexOf(".") + 1);if (fileName.length() == 0)return;if (ArchiveFileFactory.isFileExtensionRegistered(fileName)) {try {OfflineTileProvider tileProvider = new OfflineTileProvider((IRegisterReceiver) new SimpleRegisterReceiver(this), new File[] { exitFile });mapView.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();mapView.setTileSource(FileBasedTileSource.getSource(source));} else {mapView.setTileSource(TileSourceFactory.DEFAULT_TILE_SOURCE);}} elsemapView.setTileSource(TileSourceFactory.DEFAULT_TILE_SOURCE);Toast.makeText(this,"Using " + exitFile.getAbsolutePath() + " "+ source, Toast.LENGTH_LONG).show();mapView.invalidate();return;} catch (Exception ex) {ex.printStackTrace();} Toast.makeText(this, " did not have any files I can open! Try using MOBAC", Toast.LENGTH_LONG).show(); } else{ Toast.makeText(this, " dir not found!", Toast.LENGTH_LONG).show(); }}}}
离线地图的格式支持:".zip"".sqlite"".mbtiles"".gemf"
3,权限
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
4,在线地图数据源
可以加载不同的在线数据源
mapView.setTileSource(TileSourceFactory.MAPNIK);
5,xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <org.osmdroid.views.MapView android:id="@+id/MapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="2.00" /></RelativeLayout>
1 0
- android osmdroid 加载常用离线地图格式(开源的在线地图)
- osmdroid 离线地图加载
- android osmdroid 加载离线地图map格式以及地图网格绘制
- osmdroid 在线加载谷歌瓦片(谷歌地图瓦片地址解释)
- Osmdroid 离线地图存放位置的研究和详细分析
- GIS的学习(二十九)Osmdroid 离线地图存放位置的研究和详细分析
- 四、关于osmdroid地图源的疑问
- 三、osmdroid离线地图瓦片使用
- 地图开源项目OSMDroid简介
- osmdroid地图
- osmdroid 加载gpkg格式的离线底图
- Android上的一个离线地图开源项目
- Arcgis For Android加载离线地图
- 百度离线地图加载
- arcgis离线地图加载
- 地图引擎 - OSMDroid
- 二、osmdroid地图资源
- 加载离线的谷歌地图
- javascript的入门概要
- 关于c语言三位八进制数越界的探讨
- jQuery join 与 split的区别 以及 地图用法
- 端口号、IP、网关的作用
- Linux安装VMware Tools笔记
- android osmdroid 加载常用离线地图格式(开源的在线地图)
- Hadoop学习路线
- Linux 同步机制:读写锁
- 硬链接与软连接的区别
- 【caffe源码研究】第三章:源码篇(5) :Net
- Java序列化(Serializable)与反序列化
- ZCMU-巴什博弈
- HTTP学习笔记:Web与网络基础
- 关于Python的 求解答Bunch Pattern