博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【“零起点”--百度地图手机SDK】如何使用离线地图?
阅读量:6377 次
发布时间:2019-06-23

本文共 6006 字,大约阅读时间需要 20 分钟。

摘要:用户使用地图的时候,希望不联网就能展示地图。这时,就需要使用到离线地图了。如何在百度地图SDK里引入离线地图呢?

-------------------------------------------------------------------------------------------------------------------

相关阅读:

1、【百度地图-安卓SDK】从头开始写android程序

 

2、【“零起点”--百度地图手机SDK】如何创建一张地图

-------------------------------------------------------------------------------------------------------------------

一、下载离线地图包

到官网下载离线地图包,网址:

首先选择了手机品牌和手机型号:

 

 

 

选择好手机后,系统会出来提示。请选择旧版本地图进行下载。

因为目前SDK只能使用栅格图,所以我们必须下载旧版本的地图。后期SDK将支持矢量图,到时候北京市的离线地图就从114M降低到14M了。

预计6月份就能使用新版离线地图了~~~

 

比如,我选择下载了北京市的离线地图:

 

 

解压后,有两个文件。一个是BaiduMap,一个是安装说明。

 

不要管安装说明,把BaiduMap打开,能看到Mapdata文件夹。拷贝这个文件夹。

 

将Mapdata文件夹拷贝到手机SD卡的BaiduMapSdk文件夹根目录下。

 

二、编写离线地图代码

找到主java文件,并在activity里申明变量。

MKOfflineMap mOffline = null;   //离线地图变量

 

然后在onCreate函数里写离线地图初始化的代码:

    /** 离线地图初始化  **/        mOffline = new MKOfflineMap();        mOffline.init(mBMapMan, new MKOfflineMapListener() {            public void onGetOfflineMapState(int type, int state) {                switch (type) {                case MKOfflineMap.TYPE_DOWNLOAD_UPDATE:                    {                        MKOLUpdateElement update = mOffline.getUpdateInfo(state);                        //mText.setText(String.format("%s : %d%%", update.cityName, update.ratio));                    }                    break;                case MKOfflineMap.TYPE_NEW_OFFLINE:                    Log.d("OfflineDemo", String.format("add offlinemap num:%d", state));                    break;                case MKOfflineMap.TYPE_VER_UPDATE:                    Log.d("OfflineDemo", String.format("new offlinemap ver"));                    break;                }                      }        }        );        /** 离线地图导入离线包 **/        int num = mOffline.scan();        //if (num != 0)   mText.setText(String.format("已安装%d个离线包", num));

 

三、连真机,看运行看结果。

看,这是没有联网,展示地图的效果。

 

四、java文件全部源代码

package com.baidu.searchpoi;import android.app.Activity;import android.os.Bundle;/** 引入类 **/import java.util.ArrayList;import java.util.List; import android.content.Context;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.Point;import android.graphics.drawable.Drawable;import android.location.Location;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Toast; import com.baidu.mapapi.BMapManager;import com.baidu.mapapi.GeoPoint;import com.baidu.mapapi.ItemizedOverlay;import com.baidu.mapapi.LocationListener;import com.baidu.mapapi.MKAddrInfo;import com.baidu.mapapi.MKDrivingRouteResult;import com.baidu.mapapi.MKGeneralListener;import com.baidu.mapapi.MKLocationManager;import com.baidu.mapapi.MKOLUpdateElement;import com.baidu.mapapi.MKOfflineMap;import com.baidu.mapapi.MKOfflineMapListener;import com.baidu.mapapi.MKPlanNode;import com.baidu.mapapi.MKPoiResult;import com.baidu.mapapi.MKSearch;import com.baidu.mapapi.MKSearchListener;import com.baidu.mapapi.MKTransitRouteResult;import com.baidu.mapapi.MKWalkingRouteResult;import com.baidu.mapapi.MapActivity;import com.baidu.mapapi.MapController;import com.baidu.mapapi.MapView;import com.baidu.mapapi.MyLocationOverlay;import com.baidu.mapapi.Overlay;import com.baidu.mapapi.OverlayItem;import com.baidu.mapapi.PoiOverlay;import com.baidu.mapapi.RouteOverlay;import com.baidu.mapapi.TransitOverlay;/** activity **/public class SearchPOIActivity extends MapActivity {    //申明变量    BMapManager mBMapMan = null;      MapView mMapView = null;     MKOfflineMap mOffline = null;   //离线地图变量        @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                mBMapMan = new BMapManager(getApplication());        mBMapMan.init("4AA2949E616E069C37CDC3152E8C401A05A0035D", null);        super.initMapActivity(mBMapMan);                 mMapView = (MapView) findViewById(R.id.bmapsView);        mMapView.setBuiltInZoomControls(true);  //设置启用内置的缩放控件                 MapController mMapController = mMapView.getController();  // 得到mMapView的控制权,可以用它控制和驱动平移和缩放        GeoPoint point = new GeoPoint((int) (39.93 * 1E6),                (int) (116.42 * 1E6));  //用给定的经纬度构造一个GeoPoint,单位是微度 (度 * 1E6)        mMapController.setCenter(point);  //设置地图中心点        mMapController.setZoom(13);    //设置地图zoom级别        //mMapView.setSatellite(true); //卫星图        //mMapView.setTraffic(true); //交通流量                /** 离线地图初始化  **/        mOffline = new MKOfflineMap();        mOffline.init(mBMapMan, new MKOfflineMapListener() {            public void onGetOfflineMapState(int type, int state) {                switch (type) {                case MKOfflineMap.TYPE_DOWNLOAD_UPDATE:                    {                        MKOLUpdateElement update = mOffline.getUpdateInfo(state);                        //mText.setText(String.format("%s : %d%%", update.cityName, update.ratio));                    }                    break;                case MKOfflineMap.TYPE_NEW_OFFLINE:                    Log.d("OfflineDemo", String.format("add offlinemap num:%d", state));                    break;                case MKOfflineMap.TYPE_VER_UPDATE:                    Log.d("OfflineDemo", String.format("new offlinemap ver"));                    break;                }                      }        }        );        /** 离线地图导入离线包 **/        int num = mOffline.scan();        //if (num != 0)   mText.setText(String.format("已安装%d个离线包", num));    }     @Override    protected boolean isRouteDisplayed() {        return false;    }        @Override    protected void onDestroy() {        if (mBMapMan != null) {            mBMapMan.destroy();            mBMapMan = null;        }        super.onDestroy();    }        @Override    protected void onPause() {        if (mBMapMan != null) {            mBMapMan.stop();        }        super.onPause();    }        @Override    protected void onResume() {        if (mBMapMan != null) {            mBMapMan.start();        }        super.onResume();    }}

转载于:https://www.cnblogs.com/milkmap/archive/2012/05/21/2511928.html

你可能感兴趣的文章
PYTHON1.面向对象_day02
查看>>
类与反射
查看>>
C#使用Xamarin开发可移植移动应用(2.Xamarin.Forms布局,本篇很长,注意)附源码
查看>>
AMD的学习笔记
查看>>
爬取爱笔智能招聘职位
查看>>
【语法】协议
查看>>
c#关于ref与out,params传参
查看>>
【转】以过来人的身份聊聊实习招聘、秋招、春招(给应届毕业生)
查看>>
英文论文润色的问题
查看>>
myeclipse异常关闭导致tomcat无法启动如何解决
查看>>
LeetCode 265: Paint House II
查看>>
matlab-调用摄像头人脸识别
查看>>
Proud Merchants详细解答
查看>>
笔记本建立wifi热点的实用详细步骤
查看>>
matlab使用常犯的错误
查看>>
Go语言的big包实现大整数运算
查看>>
Graphviz样例之无向图
查看>>
CCF201609试题
查看>>
CCF201403-1 相反数(解法二)(100分)
查看>>
Python软件目录结构
查看>>