本篇通过一个简单的示例一步步介绍如何在Android应用中使用百度地图api。
一、下载百度地图移动版API(Android)开发包:
开发者可在百度地图Android SDK的下载页面下载到最新版的地图SDK,可根据自己的需求下载自定义的Android SDKd的jar和Demo,下载地址为:http://developer.baidu.com/map/index.php?title=androidsdk/sdkandev-download
在使用百度地图SDK为您提供的各种LBS能力之前,您需要获取百度地图移动版的开发密钥,该密钥与您的百度账户相关联。因此,您必须先有百度帐户,才能获得开发密钥。并且,该密钥与您创建的过程名称有关,具体流程请参考如下介绍。
Key的申请地址为:http://lbsyun.baidu.com/apiconsole/key
注意:
1. 每个Key唯一对应一个APP,如果您的APP修改了包名或者发布的时候打包的签名文件改变了,则改变前后的APP被视为两个APP。因此,多个APP【包括一份代码多个包名打包】需申请多个与之对应的Key;
2. 在同一个工程中同时使用百度地图SDK、定位SDK、导航SDK 和全景SDK的全部或者任何组合,可以共用同一个key;
3. 如果您在Android SDK开发过程中使用了LBS云服务(如LBS云检索功能),则需要为该服务单独申请一个“服务端”类型的key,代码中调用LBS云服务接口时使用此key即可,注意:此key一定要和AndroidManifest.xml中配置API_KEY的key区分开;
4. Android SDK自v2.1.3版本开始采用了全新的Key验证体系,v2.1.3之前的版本不再维护,如果升级到新版本SDK(v2.1.3及之后的版本)时需要在API控制台重新申请key进行替换。
三、配置的环境及创建项目:
1)、Eclipse工程配置方法
第一步:在工程里新建libs文件夹,将开发包里的baidumapapi_vX_X_X.jar拷贝到libs根目录下,将libBaiduMapSDK_vX_X_X.so拷贝到libs\armeabi目录下(官网demo里已有这两个文件,如果要集成到自己的工程里,就需要自己添加),拷贝完成后的工程目录如下图所示;
第二步:在工程属性->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 .
2)、Android Studio工程配置方法
第一步:导入百度地图SDK 的jar和so包到项目:在工程app/libs目录下放入从“百度地图开放平台官网API”下载的jar包(注:需要选择jar包右键鼠标进行依赖jar包),在src/main/目录下新建jniLibs目录放入“百度地图开放平台官网API”下载的so包如下图所示,工程会自动加载src目录下的so动态库,,注意jar和so的前3位版本号必须一致,并且保证使用一次下载的文件夹中的两个文件,不能不同功能组件的jar或so交叉使用。
so的配置也可以参考demo给出的目录结构,在app工程路径下,新建libs,并在libs目录下放入对应不同CPU架构的so文件。这样工程并不会自动加载libs下的so,需在gradle编译时,通过加入代码: jniLibs.srcDir 'libs' 来说明so的路径为该libs路径。
第二步:工程配置还需要把jar包集成到自己的工程中,如图上图所示,放入libs目录下。对于每个jar文件,右键-选择Add As Library,导入到工程中。对应在build.gradle生成工程所依赖的jar文件说明,如图所示:
jar的配置也可参考eclipse方法,进行以下操作:
1.菜单栏选择 File —>Project Structure。
2.在弹出的Project Structure 对话框中, 选择module, 然后点击 Dependencies 选项卡.点击绿色的加号选择File dependency. 然后选择要添加的jar包即可 完成上边的操作后在app目录下的build.gradle文件中,会有引入的类库。
如有不太懂可以到百度官网搜索:http://lbsyun.baidu.com/index.php?title=androidsdk/guide/buildproject
四、对新创建的项目添加百度地图相关的配置:
百度地图SDK为开发者提供了便捷的显示百度地图数据的接口,通过以下几步操作,即可在您的应用中使用百度地图数据:
第一步:创建并配置工程(具体方法参见工程配置部分的介绍);
第二步:在AndroidManifest中添加开发密钥、所需权限等信息;
(1)在application中添加开发密钥APP Key
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="您的APP Key" />
2)添加所需权限
<uses-permission android:name="android.permission.ACCESS_GPS" /> <uses-permission android:name="android.permission.READ_LOGS" /> <!-- 这个权限用于进行网络定位 --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 这个权限用于访问GPS定位 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 获取运营商信息,用于支持提供运营商信息相关的接口 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 --> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 用于读取手机当前的状态 --> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 访问网络,网络定位需要上网 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- SD卡读取权限,用户写入离线定位数据 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <!-- 来电消音 --> <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <!-- 摄影机 --> <uses-permission android:name="android.permission.CAMERA" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:smallScreens="true" />
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote">
<intent-filter>
<action android:name="com.baidu.location.service_v2.2" />
</intent-filter>
</service>
//在使用SDK各组件之前初始化context信息,传入ApplicationContext SDKInitializer.initialize(getApplicationContext());
注意:在SDK各功能组件使用之前都需要调用
SDKInitializer.initialize(getApplicationContext());,因此我们建议该方法放在Application的初始化方法中
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />
完成以上步骤后,运行程序,即可在您的应用中显示如下地图:
v3.0.0版本资源包 ![]() v3.1.0版本资源包 ![]() v3.1.1版本资源包 ![]() v3.2.0版本资源包 ![]() v3.3.0版本资源包 ![]() v3.4.0版本资源包 ![]() v3.5.0版本资源包 ![]() v3.6.0版本资源包 ![]() v3.7.3版本资源包:http://pan.baidu.com/s/1gfx6Wxl 【3.7.0->3.7.3 变 更 】
[ 检 索 功 能]
为兼容一些行政区边界不连续,行政区边界数据检索接口 List<LatLng> getPolylines() 变更为 List<List<LatLng>> getPolylines()接口,适配边界多个形状区域的情况。
|