一、接入Android地图SDK

  复制官网的功能介绍:百度地图SDK是一套应用程序接口, 通过调用地图SDK接口,开发者可以轻松访问百度地图的服务和数据,构建功能丰富、交互性强的地图类应用程序。

1.1 功能介绍:

  复制官网的功能介绍:百度地图SDK是一套应用程序接口, 通过调用地图SDK接口,开发者可以轻松访问百度地图的服务和数据,构建功能丰富、交互性强的地图类应用程序。

1.2 接入百度地图前的准备

1.1.1 访问官网,并下载开发包

  1、百度搜索,找到并进入百度地图开放平台:http://lbsyun.baidu.com/
在这里插入图片描述
  2、在导航栏上面找到开发文档,二级导航栏中找到并点击Android地图SDK
在这里插入图片描述
  3、跳转到Android地图SDK说明页面,左侧导航栏选择产品下载,然后再点击自定义下载,
在这里插入图片描述
  4、这里我根据我的需求,勾选了几个,然后点击下方的按钮,分别下载 开发包、示例代码、类参考(API说明文档)
在这里插入图片描述
  5、下载以后并解压,开发准备就绪。
在这里插入图片描述

1.1.2 获取开发密钥

  1、进入功能说明页,左侧导航栏点击概述,滑动至页面最底端可以看到如下提示:
在这里插入图片描述
  2、提示说明,接入百度地图进行开发先登录百度账号(没有的自己去申请一个),然后通过账号申请一个开发者密钥,点击获取密钥。
在这里插入图片描述
  3、在开发者控制台创建一个应用,填写一下应用名称,应用类型选择安卓,启用服务可以默认全选,包名需要根据自己安卓项目文件中的app目录下的build.gradle下的applicationId填写,AndroidManifest中的package的值最好跟applicationId保持一致,这是一种开发规范。
在这里插入图片描述
在这里插入图片描述
  4、可以看到下面还有需要填写发布版SHA1和开发版SHA1这两个是什么东西呢?我在网上百度了一下,其实就是用于数字签名的玩意儿,叫做消息摘要,涉及到安全领域,具体大家自行了解,反正这两个必填。
在这里插入图片描述
  5、为了获得这两个消息摘要,我费了九牛二虎之力,我先点击了上面的提示,查看详细配置方法。
在这里插入图片描述
  6、看了一通官方说明文档,我顺利得到了开发版SHA1,操作方法如下图(截图来自官网)
在这里插入图片描述
  7、这个很简单,给大家再梳理下流程,windows版进入电脑的用户文件夹,具体位置在C:\Users\CandyWall.android,CandyWall是我电脑登录时候的用户名,debug.keystore是开发工具自己生成的密钥库,这个密钥库从你安装Android Studio的时候就带着了,通过这个密钥库我们可以获取开发版SHA1
在这里插入图片描述
  8、Win+R输入cmd启动黑窗口,先cd到刚才的.android目录,然后输入命令
keytool -list -v -keystore debug.keystore,提示需要输入密钥库口令,这个口令默认是Android,输入密钥口令的时候不显示哦。输入完回车,打印如下信息说明口令输入正确。
证书指纹里面的SHA1就是我们所需要的开发版SHA1,复制即可。
在这里插入图片描述
  9、接下来我根据官网说明,准备拿发布版SHA1的时候,发现这么一句话,
在这里插入图片描述
  10、我把官网上这一页关于SHA1获取的说明,反复看了几遍,思来想去,辗转反侧,发布版SHA1的获取方法居然就只有这么一句话,纳尼,我特么,只能苦逼的一顿百度,找了好几篇帖子,大多数都是让我们自己生成一个关于APP的私人密钥库,然后通过命令keytool -list-v -keystore + apk的keystore,这不就是跟官网说的一样吗,烦死了,找了半天我发现这篇帖子比较好使,作者提到了如何通过Android Studio来产生自己的密钥库,我非常感谢这个作者。原文地址如下:https://www.cnblogs.com/zhangqie/p/6439052.html
一顿折腾以后我生成了我自己的密钥库,如下图。
在这里插入图片描述
  等下,这个文件的后缀是.jks,之前随开发工具自带的系统密钥库是debug.keystore,不是应该是.keystore结尾吗,这里怎么是jks 结尾的?为了解决这个疑惑,我又是一通百度,据网友说,用eclipse开发安卓应用生成的密钥库的后缀名是.keystore,而Android Studio开发安卓应用生成是密钥库的后缀名是.jks,所以说这个后缀名也是密钥库的一种,不用管它。
  11、有了这个密钥库就好办了,接下来获取开发版SHA1,方法照旧,启动黑窗口,cd到.android目录下,输入如下指令,D\TGQ_Android_Project\candywall.jks,是我密钥所在的路径。输入密钥库口令以后复制SHA1即可。
在这里插入图片描述
  12、好了,到这里,创建应用需要填写的内容就都OK了。
在这里插入图片描述
  后面调用百度地图接口都需要这个开发密钥。
在这里插入图片描述

1.1.3 项目环境搭建

  1、拷贝下载好的BaiduLBS_Android.jar包到项目的lib目录
在这里插入图片描述
  在src/main/目录下新建jniLibs目录,将如下CPU架构对应的so文件夹拷贝到jniLibs目录下
在src/main/目录下新建jniLibs目录,将如下CPU架构对应的so文件夹拷贝到jniLibs目录下
  拷贝完如下图所示:
在这里插入图片描述
  点击上方按钮打开Project Structure,依次点击app、Dependencies、添加Jar dependency
在这里插入图片描述
  选择刚才lib目录下的百度地图开发jar包
在这里插入图片描述
  点击OK添加jar包成功
在这里插入图片描述

二、开发案例演示(参考官网)

2.3 开发案例一:显示地图

2.3.1 配置AndroidManifest.xml文件

  1.在中加入如下代码配置开发密钥(AK):

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

  2. 在外部添加如下权限声明:

<!--获取设备网络状态,禁用后无法获取网络状态-->
<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" />
<!--允许sd卡写权限,需写入地图数据,禁用后无法显示地图-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--这个权限用于进行网络定位-->
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<!--这个权限用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!--获取统计数据-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!--使用步行AR导航,配置Camera权限-->
<uses-permission android:name="android.permission.CAMERA" />
<!--程序在手机屏幕关闭后后台进程仍然运行-->
<uses-permission android:name="android.permission.WAKE_LOCK" />

2.3.2 在布局文件中添加地图容器

  1、MapView是View的一个子类,用于在Android View中放置地图。MapView的使用方法与Android提供的其他View一样。

<com.baidu.mapapi.map.MapView  
    android:id="@+id/bmapView"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
android:clickable="true" />

2.3.3 地图初始化

  1、新建一个自定义的Application,在其onCreate方法中完成SDK的初始化。示例代码如下:

public class DemoApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext   
        SDKInitializer.initialize(this);
        //自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.
        //包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。
        //SDKInitializer.setCoordType(CoordType.BD09LL);
    }
}

  2、在AndroidManifest.xml文件中声明该Application
在这里插入图片描述

  3、以下示例代码简述对地图生命周期的管理:

public class MainActivity extends Activity {  
    private MapView mMapView = null;  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);    
        setContentView(R.layout.activity_main);  
        //获取地图控件引用  
        mMapView = (MapView) findViewById(R.id.bmapView);  
    }  
    @Override  
    protected void onResume() {  
       super.onResume();  
       //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理  
       mMapView.onResume();  
    }  
    @Override  
    protected void onPause() {  
      super.onPause();  
      //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理  
      mMapView.onPause();  
    } 
    @Override  
    protected void onDestroy() {  
      super.onDestroy();  
      //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理  
      mMapView.onDestroy();  
    }  
}

三、 等待补充

未完待续,敬请期待!!!!喜欢你就赞我一下吧,谢谢支持!