Android集成百度地图

前言

现在基本上每个人手机都有地图这一APP把,常用的就属谷歌地图,百度地图,高德地图等等,它带来了我们意想不到的方便,比如IT程序员去面试,都遇到过找不到路的囧境把,如果面试的途中,手机突然没电,那么没有地图的指引是很少能找到正确地点的,害羞的人连问路都不好意思问~~2333333

百度地图开放平台
百度地图SDK文档中心

简介

百度地图 Android SDK是一套基于Android 4.0及以上版本设备的应用程序接口。 您可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,您可以轻松访问百度地图服务和数据,构建功能丰富、交互性强的地图类应用程序。


(一)申请密钥,百度API控制台页面

创建应用,该套地图SDK免费对外开放,接口使用无次数限制。在使用前,您需先申请密钥(ak)才可使用 
这里写图片描述

将应用类型选择为“Android SDK”,要填写应用名称、发布版本SHA1、开发版本SHA1,所以我建议现在就创建好你的应用项目,也好查看所需要填写的信息。在这里我的应用名称为“Baidu Map”,包名为”com.zk.baidumap”

发布、开发版本的SHA1的查看方式:

  1. 获取开发版SHA1: 
    输入命令 :cd .android 回车,cd keytool -list -v -keystore debug.keystore 回车。 
    这里写图片描述

  2. 获取发布版SHA1: 
    创建自己的签名文件,Android Studio软件中选择Build->Generate Signed APK。点击Next按钮 
    这里写图片描述 
    这里可以选择Create New Key Store或者Choose Existing Key Store,选择存在的KeyStore文件也是可以的,直接选择即可,这里,我介 绍一下创建新的KeyStore的步骤,点击Create new Key Store按钮 
    这里写图片描述 
    Key store path:选择KeyStore的文件路径与名称。 
    Password:密码 
    Confirms:再次输入密码 
    Alias:别名 
    Password:key的密码 
    Confirms:再次输入密码 
    Validity(years):密钥的有效期 
    First and Last Name:你的名字 
    Organizational Unit:单位 
    Organization:组织 
    City or Locality:城市或者所在地 
    State or Province:省份 
    Country Code (XX):国家 
    填写完成之后点击”ok”按钮,返回到了Generate Signed APK的界面,这个时候发现界面的Key store password、Key alias、Key Password已经自动填写好了,点击”Next”按钮,出现了Enter Master Password界面(有的可能不会出现这个界面) 
    这里写图片描述 
    填写密码即可,点击“OK”按钮 
    这里写图片描述 
    Build Type的选项是release,还要记得勾选Signature Versions的选项。点击Finish按钮,到这里开发版本的keystore文件就创建好了。 
    输入命令:cd “Jdk bin 目录地址” 回车, cd keytool -list -v -keystore “创建的发布版的keystore文件的地址”,回车。 
    输入密钥库口令:输入你生成.jks文件中 自己填写的密码。 
    这里写图片描述

(二)AS工程配置
  1. 开发包复制到工程中 
    百度SDK下载连接 
    这里写图片描述

  2. 根据项目需求选择对应的功能包,点击开发包下载,是一个解压包,解压完之后,是这样的 
    这里写图片描述

  3. 官方指出,有两种导入功能包的方式。常用的是在src/main/目录下新建jniLibs目录,工程会自动加载src目录下的so动态库;libs包放jar文件,导入所依赖的对应的jar文件即可 
    这里写图片描述

  4. 应用混淆

    -keep class com.baidu.** {*;}
    -keep class vi.com.** {*;}    
    -dontwarn com.baidu.**
    • 1
    • 2
    • 3

    至此,配置工程大部分已经完结。


使用

1.在AndroidManifest中添加开发密钥AK值、所需权限等信息

添加访问应用AK

    <application>  
    <meta-data  
        android:name="com.baidu.lbsapi.API_KEY"  
        android:value="开发者 key" />  
        </application>
  • 1
  • 2
  • 3
  • 4
  • 5
2.添加权限(6.0另配置)
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
//获取设备网络状态,禁用后无法获取网络状态
<uses-permission android:name="android.permission.INTERNET"/> 
//网络权限,当禁用后,无法进行检索等相关业务
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
//读取设备硬件信息,统计数据
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> 
//读取系统信息,包含系统版本等信息,用作统计
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
//获取设备的网络状态,鉴权所需网络代理
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
//允许sd卡写权限,需写入地图数据,禁用后无法显示地图
<uses-permission android:name="android.permission.WRITE_SETTINGS" /> 
//获取统计数据
<uses-permission android:name="android.permission.GET_TASKS" /> 
//鉴权所需该权限获取进程列表
<uses-permission android:name="android.permission.CAMERA" />  
//使用步行AR导航,配置Camera权限
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
3.在布局xml文件中添加地图控件
<com.baidu.mapapi.map.MapView  
    android:id="@+id/bmapView"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    android:clickable="true" />
  • 1
  • 2
  • 3
  • 4
  • 5
4.在应用程序创建时初始化 SDK引用的Context 全局变量,建议在Application的初始化方法
public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        initBaiduMap();
    }
    private void initBaiduMap() {
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext
        //注意该方法要再setContentView方法之前实现
        SDKInitializer.initialize(getApplicationContext());
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
5.创建地图Activity,管理地图生命周期
public class MainActivity extends AppCompatActivity{  
    private MapView mMapView = null;  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);   
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext  
        //注意该方法要再setContentView方法之前实现  
        SDKInitializer.initialize(getApplicationContext());  
        setContentView(R.layout.activity_main);  
        //获取地图控件引用  
        mMapView = (MapView) findViewById(R.id.bmapView);  
    }  
    @Override  
    protected void onDestroy() {  
        super.onDestroy();  
        //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理  
        mMapView.onDestroy();  
    }  
    @Override  
    protected void onResume() {  
        super.onResume();  
        //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理  
        mMapView.onResume();  
        }  
    @Override  
    protected void onPause() {  
        super.onPause();  
        //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理  
        mMapView.onPause();  
        }  
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

完成以上步骤后,运行程序,即可在您的应用中显示地图

效果图:

这里写图片描述


Gtihub地址,添加了定位功能,待优化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值