百度离线地图加载

编程入门 行业动态 更新时间:2024-10-28 20:26:28

百度<a href=https://www.elefans.com/category/jswz/34/1767604.html style=离线地图加载"/>

百度离线地图加载

参照:.html

.htm



1.离线地图简介

百度地图SDK自2.0.0版本起,采用的是矢量版离线地图,请开发者在下载时注意选择。 使用离线地图,请下载。

2.初始化

在使用offline map之前需先创建MapView。MapView的创建详见Hello World部分的相关介绍。

初始化离线地图的核心代码如下:

源码 复制 打印 关于
  1. MKOfflineMap mOffline = null; //申明变量  
  2. MapController mMapController  = mMapView.getController();  
  3.    
  4.    
  5. //写在onCreate函数里  
  6. mOffline = new MKOfflineMap();  
  7. //offline 实始化方法用更改。  
  8. mOffline.init(mMapController, new MKOfflineMapListener() {  
  9.     @Override  
  10.     public void onGetOfflineMapState(int type, int state) {  
  11.         switch (type) {  
  12.         case MKOfflineMap.TYPE_DOWNLOAD_UPDATE:  
  13.             {  
  14.                 MKOLUpdateElement update = mOffline.getUpdateInfo(state);  
  15.                 //mText.setText(String.format("%s : %d%%", update.cityName, update.ratio));  
  16.             }  
  17.             break;  
  18.         case MKOfflineMap.TYPE_NEW_OFFLINE:  
  19.             Log.d("OfflineDemo", String.format("add offlinemap num:%d", state));  
  20.             break;  
  21.         case MKOfflineMap.TYPE_VER_UPDATE:  
  22.             Log.d("OfflineDemo", String.format("new offlinemap ver"));  
  23.             break;  
  24.         }      
  25.           }  
  26. }  
  27. );  

3.导入离线包

SDK支持导入离线包,将从官方渠道下载的离线包解压后,把其中的vmp文件夹拷入SD卡根目录下的BaiduMapSdk文件夹内。 使用离线地图,请下载。

源码 复制 打印 关于
  1. int num = mOffline.scan();  
  2. //if (num != 0)  
  3.     //mText.setText(String.format("已安装%d个离线包", num));  

4.下载离线包

SDK支持下载离线包。提供如下功能:

1. 返回热门城市列表。

2. 城市名搜索离线地图信息。

3. 启动下载。

4. 暂停下载。

5. 删除离线地图。

6. 多个APP共享一份离线地图数据。


--------------------------------------------------------------------项目应用---------------------------------------------------------------------------------

1.说明:

在应用开始启动时,会检查sd卡的相应目录是否存在离线地图文件,不存在时会进行异步拷贝操作,进入主界面即地图页面。

2.发现的问题:

在清空系统设置中的数据后,第一次进入,离线地图一直显示不了,退出后再次进入才能正常显示离线地图。

3.方案:

多次调试后发现,需要在地图文件存在的情况下,初始化mapview并进行离线scan操作


离线扫描方法

		mOffline = new MKOfflineMap();mOffline.init(mMapController, new MKOfflineMapListener() {public void onGetOfflineMapState(int type, int state) {switch (type) {case MKOfflineMap.TYPE_DOWNLOAD_UPDATE:MKOLUpdateElement update = mOffline.getUpdateInfo(state);Log.v("OfflineDemo",String.format("update") + update.toString());break;case MKOfflineMap.TYPE_NEW_OFFLINE:mHandler.sendEmptyMessage(MAP_REFRESH);Log.v("OfflineDemo",String.format("add offlinemap num:%d", state));break;case MKOfflineMap.TYPE_VER_UPDATE:Log.v("OfflineDemo", String.format("new offlinemap ver"));break;}}});int num = mOffline.scan();



修改后,在启动应用的启动activity中,直到离线地图拷贝完成后,再进行跳转操作

	@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);this.setContentView(R.layout.activity_welcome);copyOfflineMap();}private void copyOfflineMap() {new Thread() {public void run() {if (FileUtils.isExist(FileUtils.SDCARD_ROOT_PATH)&& !FileUtils.isExist(FileUtils.SDCARD_OFFLINE_MAP+ "beijing_131.dat")) {boolean res = FileUtils.copyFileToLocal(getApplicationContext(), R.raw.beijing_131,FileUtils.SDCARD_OFFLINE_MAP, "beijing_131.dat");Log.v("OfflineDemo", "0App.res=" + res);}if (FileUtils.isExist(FileUtils.SDCARD_ROOT_PATH)&& !FileUtils.isExist(FileUtils.SDCARD_OFFLINE_MAP_L+ "beijing_131.dat")) {boolean res = FileUtils.copyFileToLocal(getApplicationContext(), R.raw.beijing_131_l,FileUtils.SDCARD_OFFLINE_MAP_L, "beijing_131.dat");Log.v("OfflineDemo", "1App.res=" + res);}mHandler.sendEmptyMessageDelayed(0, 800);}}.start();}



更多推荐

百度离线地图加载

本文发布于:2023-06-16 17:40:35,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/747852.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:离线   加载   地图

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!