安卓项目中导入百度地图开源jar包
1、在baidu上搜索百度地图开发者,进入后注册账户。
2、注册好账户之后,点开控制台,创建应用。在填写信息的时候,需要在安卓开发软件上获取SHAR码。
3、打开AS的命令行,执行如下代码:
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey
如果出现keytool命令无法识别,就需要:
1)打开自己电脑里的AS安装目录,找到AS文件夹/jre/bin,然后你就可以在bin目录下清晰地看到keytool.exe文件。
2)如果你的AS里命令行的默认路径不是AS文件夹/jre/bin,这时候就需要修改命令行路径了。
具体:
切换盘符 f:
进入盘符目录 cd 文件夹名
4、进入到keytool所在路径之后还需要找到debug.keystore路径,也需要打开我们自己电脑的c盘,不出意外应该是在"c://用户/用户名/.android"里面,然后我们把~/.android/debug.keystore -alias androiddebugkey
替换成我们自己电脑里的路径,执行。
5、执行后输入密钥:android(不会显示)然后就会出现SHAR密码了!
6、之后我们就可以根据官方的开发文档来下载jar包。具体见百度官方文档
7、导入好之后的项目目录:
Manifest里配置:
在build.gradle里建立依赖,建立完以后项目会自动配置相应文件
mainifest配置:
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote" />
<!-- 这个权限用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 这个权限用于访问GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 访问网络,进行地图相关业务数据请求,包括地图数据,路线规划,POI检索等 -->
<uses-permission android:name="android.permission.INTERNET" /> <!-- 获取网络状态,根据网络状态切换进行数据请求网络转换 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 读取外置存储。如果开发者使用了so动态加载功能并且把so文件放在了外置存储区域,则需要申请该权限,否则不需要 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 写外置存储。如果开发者使用了离线地图,并且数据写在外置存储区域,则需要申请该权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
地图初始化:
baiduMap=mapView.getMap();
//baiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
baiduMap.setMyLocationEnabled(true);
activity类里的内部类:
public class MyLocationListener extends BDAbstractLocationListener {
@Override
public void onReceiveLocation(BDLocation bdLocation) {
if (bdLocation == null || mapView == null){
return;
}
MyLocationData locData = new MyLocationData.Builder()
.accuracy(bdLocation.getRadius())
// 此处设置开发者获取到的方向信息,顺时针0-360
.direction(bdLocation.getDirection()).latitude(bdLocation.getLatitude())
.longitude(bdLocation.getLongitude()).build();
baiduMap.setMyLocationData(locData);
}
}
地图显示函数嵌入到activity生命周期:
@Override
protected void onStart() {
super.onStart();
Log.d("activity","activity is onStart.");
}
@Override
protected void onStop() {
super.onStop();
Log.d("activity","activity is onStop.");
}
@Override
protected void onDestroy() {
mLocationClient.stop();
baiduMap.setMyLocationEnabled(false);
mapView.onDestroy();
mapView = null;
super.onDestroy();
Log.d("activity","activity is onDestroy.");
}
@Override
protected void onPause() {
mapView.onPause();
super.onPause();
Log.d("activity","activity is onPause.");
}
@Override
protected void onResume() {
mapView.onResume();
super.onResume();
Log.d("activity","activity is onResume.");
}
然后根据官方文档测试一下地图
还可以显示卫星图
项目地址百度地图