Android中第三方SDK集成之百度地图集成(入门篇)

编写不易,如有转载,请声明出处:http://blog.csdn.net/zxc514257857/article/details/69768308

准备工作

  • 使用百度帐号,登录百度地图开放平台 ,网址是:http://lbsyun.baidu.com

  • 在“开发”栏选择“Android地图SDK”,选择左侧的开发指南,按照指南的指导进行操作

  • 开发指南—>简介中要求我们下载最新版的地图SDK,网址是:http://developer.baidu.com/map/index.php?title=androidsdk/sdkandev-download,于是选择自定义下载了Android SDK v4.3.0的开发包和示例代码

  • 开发指南—>申请密钥中要求我们申请百度地图的key,网址是:http://lbsyun.baidu.com/apiconsole/key,网址进去后点击创建应用,出现如下界面:
    这里写图片描述
      重要的是需要填写发布版SHA1值(即有正式版签名的SHA1值)和开发版的SHA1值(即debug版签名的SHA1值)

  - - - 那么发布版SHA1值该如何获取呢?
  首先要拥有正式版签名,不知道如何操作的见我的上一篇博客: Android中对应用程序进行签名的两种方法 http://blog.csdn.net/zxc514257857/article/details/69697764
  打开命令行输入:

keytool.exe -list -v -keystore C:\Users\Administrator\Desktop\BaiduMap.jks
// -keystore数字证书名称及路径(默认在C:\Users\Administrator目录下,但我将其移动到了桌面上)

  详细步骤如下图:
这里写图片描述
  生成了我们所需要的发布版SHA1值
  - - - 开发版的SHA1值如何获取呢?
  打开命令行输入:

//进入到android签名目录
cd .android 
//然后输入
keytool.exe -list -v -keystore debug.keystore
//输入密码android(系统默认)

  详细步骤如下图:
这里写图片描述
  于是就生成了我们所需要的开发版SHA1值
  - - - 应用程序的包名又如何得知呢?
  如下图:
这里写图片描述

  点击提交就创建完成了一个应用,并获得了该应用的AK即AppKey

开发指南—>配置环境及发布,我们参照Android Studio工程配置方法进行配置

  • 我们将刚下载的BaiduLBS_AndroidSDK_Sample.zip解压出来,找到BaiduMap_AndroidSDK_v4.3.0_Sample,将BaiduMapsApiASDemo中的app—>libs目录下的所有jar文件拷贝到我们项目的libs目录中,然后将jar文件添加file依赖。其他的so文件拷贝至src/main/目录下新建jniLibs目录中

  • 应用混淆时,添加如下代码:

-keep class com.baidu.** {*;}
-keep class vi.com.** {*;}    
-dontwarn com.baidu.**

  保证百度类不能被混淆,否则会出现网络不可用等运行时异常

开发指南—>Hello BaiduMap 显示百度地图简单教程

  • Demo效果展示如下:

这里写图片描述
  如果代码正确,则会出现这个界面,默认将北京天安门作为中心

  • 创建并配置工程(过于简单,不再赘述)

  • 在AndroidManifest中添加开发密钥、所需权限等信息

  - - - 在application中添加开发密钥
这里写图片描述

  - - - 添加所需权限

//AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  • 在布局xml文件中添加地图控件
//(layout)activity_main
<com.baidu.mapapi.map.MapView  
     android:id="@+id/bmapView"  
     android:layout_width="match_parent"  
     android:layout_height="match_parent"  
     android:clickable="true" />
  • 应用程序创建时初始化 SDK引用的Context 全局变量
//MainActivity
public class MainActivity extends AppCompatActivity {  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);   
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext  
        //注意该方法要再setContentView方法之前实现  
        SDKInitializer.initialize(getApplicationContext());  
        setContentView(R.layout.activity_main);  
    }  
}
  • 创建地图Activity,管理地图生命周期
//MainActivity
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);  
        initView();
    }  
	private void initView(){
        //获取地图控件引用
        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();  
        }  
    }
}

注:本Demo用的百度的Key为私人的,如果要正常运行,得自己去百度地图API控制台申请Key,来替换Mainfest中的key

Demo下载请移步:http://download.csdn.net/detail/zxc514257857/9808064


如需了解百度地图集成的案例使用请移步:Android中第三方SDK集成之百度地图集成(案例一) http://blog.csdn.net/zxc514257857/article/details/72083693


----------因本人才疏学浅,如博客或Demo中有错误的地方请大家随意指出,与大家一起讨论,共同进步,谢谢!----------

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DreamBackTo

感谢各位金主大大(* _ *)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值