Android 百度地图 SDK v3.0.0

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 百度地图 SDK v3.0.0相关的知识,希望对你有一定的参考价值。

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37729091

最近公司要把百度地图集成的项目中,于是我就研究了一天百度地图的SDK,当前的版本:android SDK v3.0.0 。 虽然百度地图网上相关代码比较多,大多可能都是比较旧的版本,且百度地图API的改动感觉也比较大,所以再此跟大家分享一下一天的劳动成功。

下面简单展示下,博客中会介绍的功能:

1、功能介绍

a、首先肯定是导入地图,然后就是地图模式的一些切换,普通,卫星,实时交通什么的。

b、定位功能,定位当前位置。

效果图:

技术分享

c、动态添加覆盖物,点击覆盖物,弹出层以及其他效果。

效果图:

技术分享

 

 

d、结合方向传感器,为地图的定位功能添加方向,本人极其路痴,不分东南西北,所以此功能对我来说非常重要,手机不断旋转,我才能知道当前应该走哪条路,直接显示的地图对我来说没用。

效果图(我360度的旋转手机,观察效果图的变化):

技术分享

 

切换到别的模式也是很炫的:

技术分享

e、提供离线地图下载,可以极大的省去用户的流量,也能保证在无网络情况对地图的使用。

基本这上述的功能,第一篇,还是从零开始,先把百度地图导入app再说。

2、申请密钥

a、申请密钥,到百度API控制台的页面:http://lbsyun.baidu.com/apiconsole/key

技术分享

输入要应用名称,选择应用类型,输入安全吗。

b、关于安全码 ( 数字签名;包名 ) 的获取:

打开IDE:

技术分享

黑框框住的就是数字签名,然后包名就是咱们应用的包名,直接用分号连接:例如:F5:10:39:D9:81:57:BD:2E:A0:CD:E3:EB:5E:C4:CC:E0:E0:0D:41:56;com.zhy.zhy_baidu_ditu_demo03

最后点击完成,就能获取密钥了:

技术分享

 

3、第一个baidu map应用

下载就不多说了,直接点击官网的相关下载就行选择就可,后面我也会贴上源码。

配置:

第一步:在工程里新建libs文件夹,将开发包里的baidumapapi_vX_X_X.jar拷贝到libs根目录下,将libBaiduMapSDK_vX_X_X.so拷贝到libs\armeabi目录下(官网demo里已有这两个文件,如果要集成到自己的工程里,就需要自己添加),拷贝完成后的工程目录如下图所示;

 

技术分享

注:liblocSDK3.so和locSDK_3.1.jar为百度定位SDK所使用资源,开发者可根据实际需求自行添加。
android_dev1.png
第二步:在工程属性->Java Build Path->Libraries中选择“Add External JARs”,选定baidumapapi_vX_X_X.jar,确定后返回。
通过以上两步操作后,您就可以正常使用百度地图SDK为您提供的全部功能了。
注意:由于adt插件升级,若您使用Eclipse adt 22的话,需要对开发环境进行相应的设置,方法如下:
1). 在Eclipse 中选中工程,右键选 Properties->Java Build Path->Order and Export 使 Android Private Libraries处于勾选状态;
2). Project -> clean-> clean all .

 

 

a、在application中添加开发密钥

[html] view plain
  1. <application   
  2. <meta-data   
  3. android:name="com.baidu.lbsapi.API_KEY"   
  4. android:value="开发者 key" />   
  5. </application>  



 

b、添加所需权限

[html] view plain
  1. <uses-permission android:name="android.permission.GET_ACCOUNTS" />   
  2. <uses-permission android:name="android.permission.USE_CREDENTIALS" />   
  3. <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />   
  4. <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />   
  5. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />   
  6. <uses-permission android:name="android.permission.INTERNET" />   
  7. <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />   
  8. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />   
  9. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />   
  10. <uses-permission android:name="android.permission.READ_PHONE_STATE" />   
  11. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />   
  12. <uses-permission android:name="android.permission.BROADCAST_STICKY" />   
  13. <uses-permission android:name="android.permission.WRITE_SETTINGS" />   
  14. <uses-permission android:name="android.permission.READ_PHONE_STATE" />  



 

c、布局文件中添加地图控件

 

[html] view plain
  1. <com.baidu.mapapi.map.MapView  
  2. android:id="@+id/id_bmapView"  
  3. android:layout_width="fill_parent"  
  4. android:layout_height="fill_parent"  
  5. android:clickable="true" />  



 

d、在应用程序创建时初始化 SDK引用的Context 全局变量:

 

[java] view plain
  1. @Override  
  2. protected void onCreate(Bundle savedInstanceState)  
  3. {  
  4. super.onCreate(savedInstanceState);  
  5.   
  6. requestWindowFeature(Window.FEATURE_NO_TITLE);  
  7. // 在使用SDK各组件之前初始化context信息,传入ApplicationContext  
  8. // 注意该方法要再setContentView方法之前实现  
  9. SDKInitializer.initialize(getApplicationContext());  
  10. setContentView(R.layout.activity_main);  
  11. }  



 

好了,经过这四步就能显示地图了~~

e、不过地图很耗电,所以有必要管理其声明周期

 

[java] view plain
  1. package com.zhy.zhy_baidu_ditu_demo00;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.Window;  
  6.   
  7. import com.baidu.mapapi.SDKInitializer;  
  8. import com.baidu.mapapi.map.MapView;  
  9.   
  10. public class MainActivity extends Activity  
  11. {  
  12.     private MapView mMapView = null;  
  13.   
  14.     @Override  
  15.     protected void onCreate(Bundle savedInstanceState)  
  16.     {  
  17.         super.onCreate(savedInstanceState);  
  18.   
  19.         requestWindowFeature(Window.FEATURE_NO_TITLE);  
  20.         // 在使用SDK各组件之前初始化context信息,传入ApplicationContext  
  21.         // 注意该方法要再setContentView方法之前实现  
  22.         SDKInitializer.initialize(getApplicationContext());  
  23.         setContentView(R.layout.activity_main);  
  24.         // 获取地图控件引用  
  25.         mMapView = (MapView) findViewById(R.id.id_bmapView);  
  26.     }  
  27.   
  28.     @Override  
  29.     protected void onDestroy()  
  30.     {  
  31.         super.onDestroy();  
  32.         // 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理  
  33.         mMapView.onDestroy();  
  34.         mMapView = null;  
  35.     }  
  36.   
  37.     @Override  
  38.     protected void onResume()  
  39.     {  
  40.         super.onResume();  
  41.         // 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理  
  42.         mMapView.onResume();  
  43.     }  
  44.   
  45.     @Override  
  46.     protected void onPause()  
  47.     {  
  48.         super.onPause();  
  49.         // 在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理  
  50.         mMapView.onPause();  
  51.     }  
  52.   
  53. }  



 

好了,完成。其实百度开发指南上对了helloworld这篇也极其清楚~~~~

 

 

源码点击下载

 

百度地图相关博客视频版本已经上线:Android中百度地图的使用期待您的支持。

 

 

 

博主部分视频已经上线,如果你不喜欢枯燥的文本,请猛戳(初录,期待您的支持):

1、Android 自定义控件实战 电商活动中的刮刮卡

2、Android自定义控件实战  打造Android流式布局和热门标签

3、Android智能机器人“小慕”的实现

4、高仿QQ5.0侧滑

5、高仿微信5.2.1主界面及消息提醒

以上是关于Android 百度地图 SDK v3.0.0的主要内容,如果未能解决你的问题,请参考以下文章

Android 百度地图 SDK v3.0.0

Android 百度地图 SDK v3.0.0 定位与结合方向传感器

什么是百度地图android sdk

百度地图 android sdk 怎么 setZoom

android studio下百度地图sdk的初体验

android使用百度地图SDK获取定位信息