由于项目需求缘故,最近在学习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.xml 声明AK和权限
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的检索和一些路线规划等等。