你的位置:首页 > 操作系统

[操作系统]百度地图开发的学习(一)


由于项目需求缘故,最近在学习Android地图的开发,所以就记录一下学习过程。最近都会陆续更新啦。目前使用百度地图API的挺多的,所以就先以它为基础学习一些地图的调用。

一、AK的申请

与web开发不一样,Android的地图项目开发需要申请一个AK才能调用地图功能。

1.注册成为百度开发者,正常填入信息即可。

2.申请密钥:

  在http://lbsyun.baidu.com/apiconsole/key中创建应用,现在百度只允许一个key对应一个应用。

  (1)应用名称:与自己创建项目名一致。

  (2)应用类型:Android SDK

  (3)启动服务:建议全部勾选,方便项目后续继续添加功能。

  (4)数字签名(SHA1):

  在Android studio上有命令行,直接启动,进入C:\用户名\.android,输入keytool -list -v -keystore debug.keystore(密钥库命令是android),会出现证书指纹,将SHA1的值粘贴过去即可。

  由于百度推荐的这个方法出来的SHA1可能出现错误,百度论坛上许多人包括本人也出现SHA1值错误导致的AK匹对失败,在论坛上看到官方给出一个测试AK的app,它可以获取所有应用正确的SHA1和包名,我们可以把以前错误替换掉。这是网址:http://bbs.lbsyun.baidu.com/forum.php?mod=viewthread&tid=85103&extra=page%3D1

  (5)包名:Android studio里在app文件下的build.gradle,applicationId就是包名。

 

 二、下载SDK开发包

1.在网址:http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download

 一键下载会把jar包、so文件以及一些demo都包含,后面也比较方便查看。

 2.接下来就是在android studio创建项目,过程就不说啦,建完后添加jar包和so文件

jar包:添加在libs文件下,并右击右击里选择add as library;

 so文件:在main文件下新建jniLibs文件,将各种编译环境的so文件粘贴进去。

 3.在AndroidManifest.

AK:

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

权限(算是比较齐全的权限):

<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.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<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.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>

4.在布局文件中添加地图控件

 

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



5.应用创建需要初始化SDK,引用全局变量:

 


 6.创建基础地图:

在主线程里面声明了控件引用就可以使用基础地图了,显示基本的地图信息。
mMapView = (MapView) findViewById(R.id.bmapView);
然后管理声明周期,在各个阶段同步地图的状态。
@Override
protected void onDestroy() {
super.onDestroy();
mMapView.onDestroy();
}

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

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

 后面会陆续更新定位的获取,地图POI的检索和一些路线规划等等。