Android 使用百度地图API来显示地图

http://lbsyun.baidu.com/

进入百度地图开放平台,登录百度账号

8fe9917dc3ebc572b502cee76dba2532d90.jpg

05595e29738a8f70662423d97d6b8ebc01c.jpg

2145767a66ebfc79edb4ffa992c247b228e.jpg

选择应用类型为Android SDK

8b1c5d6ae7d094e73e2fda5f1318232c99a.jpg

发布版SHA1,和开发板SHA1的获取方法为:

找到电脑上的.android路径,一般都在C盘用户目录下,

有的配置Android环境变量的话可能在SDK的目录下

然后打开Android Studio,打开Terminal

进入到.android目录下

输入 keytool -list -v -keystore debug.keystore

848e72f3f621044eebf56fb7526d74db1e7.jpg

密钥库口令不用输入,直接回车

会显示证书指纹,里面有SHA1,直接复制就可以

输入SHA1和包名后,会自动生成安全码

然后点击提交,这样我们就生成了一个密钥

bbb3f199f72c8cbddfe43de5d8920b9d088.jpg

然后在百度地图首页

5848c092a4623e8fc83c60ee4ce776b1d6d.jpg

736f14de47944e8bfc151d4c3739ab2a926.jpg

接下来根据自己的项目需求来勾选相应的功能

edcddd28dd0d81c1da6fcdc3f29c63b2f6c.jpg

73f5e2e1b522c0c499bb0f073bbbaa34b8c.jpg

点击开发包下载,这就是下载好的开发包

7907772d6c50df7286d067dd1b0697f7c3a.jpg

以上就是百度地图API的准备工作

————————————————————————————————————————————————————————

开发步骤:

  • 配置百度地图SDK
  • 布局界面
  • 初始化SDK引用的Context全局变量
  • 管理地图生命周期

 将之前下载的BaiduLBS_AndroidSDK_Lib解压,并将里面libs目录中的两个jar包复制到

Android Studio项目下libs目录下

05a3293f2e6a83e0898a3e760a99b3912a1.jpg

将libs目录下的jar包添加到库当中

d11263b3fe7352ac361028e93a1c2f663ae.jpg

点击ok

同时在build.gradle中会生成工程所依赖的对应的Jar文件说明,代码如下

dependencies{
  implementation files('libs/BaiduLBS_Android.jar')files('libs/BaiduLBS_Android.jar')
}

在src目录下的main目录中创建jniLibs目录

然后将百度地图SDK中的lib目录复制到刚刚创建的目录

411674e8fd90e7b01c27cf4f223c4900217.jpg

5f8041f5e96f3720d2a844b09b0790aad76.jpg

但有时候这样工程并不会自动加载libs下的so文件,

需配置so文件的路径为该libs路径,关联所有地图SDK的so文件,

即在app文件夹下的bulid.gradle加入代码: jniLibs.srcDir 'libs' ,详细代码如下:

(在bulidTypes {} 结束后添加此段代码)

sourceSets{
  main{
       jniLibs.srcDir 'libs'  
       //说明so的路径为该libs路径,关联所有地图SDK的so文件
      }
}

接下来在application中添加开发密钥(AK)

<application>  
    <meta-data  
        android:name="com.baidu.lbsapi.API_KEY"  
        android:value="开发者 key" />  
</application>

添加所需权限

<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.CAMERA" />  
//使用步行AR导航,配置Camera权限

在MainActivity.java中的代码如下

  private MapView mMapView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //初始化地图SDK,
        //需要在setContentView(R.layout.activity_main);上面
        SDKInitializer.initialize(getApplicationContext());
        setContentView(R.layout.activity_main);
        //获取地图控件引用
        mMapView = findViewById(R.id.bmapView);
        //自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型. 
        //包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。
        SDKInitializer.setCoordType(CoordType.BD09LL);
    }

    @Override
    protected void onResume() {
        super.onResume();
        mMapView.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        mMapView.onPause();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mMapView.onDestroy();
        mMapView = null;
    }

注:最好使用真机运行

猜你喜欢

转载自blog.csdn.net/wx_lanyu/article/details/84207302