项目需要用到百度地图。。。挺瞎的。。。折腾一晚上
虽说跟着百度地图的说明是能搞出来了。。然后。。我还是一次没成功。。。
还是记录一下吧
整个过程参考百度地图地图sdk使用说明(不给链接了)
一、Android studio配置
1、申请秘钥
这就不多说了,按照说明来,成功拿到秘钥
2、下载开发包
这里根据个人需要下载,我下载的是 全量定位 和 基础地图这两个包
3、开发包添加
下载好的开发包解压后里面有5个文件夹和一个.jar文件
全部复制到项目里 app/libs文件夹下
在src/main下建立jniLibs文件夹,再把开发包里的五个文件夹放进去。。。。。。官网是这么说的。。。然后。。。我把jniLibs文件夹建到了src/main/java下。。。照样能用
4、配置开发包
在app下的build.gradle里,添加代码
sourceSets{
main{
jniLibs.srcDir 'libs'
//说明so的路径为该libs路径,关联所有地图SDK的so文件
}
}
5、往工程中添加jar文件
右键-选择Add As Library,导入到工程中。同时在build.gradle中会生成工程所依赖的对应的jar文件说明
dependencies{
compile files('libs/BaiduLBS_Android.jar')
}
至此配置完成,下面开始搬代码
二、 在工程里搞出地图
1、添加秘钥和权限
在AndroidManifest.xml文件中添加秘钥
<application>
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="开发者 key" />
</application>
在AndroidManifest.xml文件中添加权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
//获取设备网络状态,禁用后无法获取网络状态
<uses-permission android:name="android.permission.INTERNET"/>
//网络权限,当禁用后,无法进行检索等相关业务
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
//读取设备硬件信息,统计数据
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
//读取系统信息,包含系统版本等信息,用作统计
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
//获取设备的网络状态,鉴权所需网络代理
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
//允许sd卡写权限,需写入地图数据,禁用后无法显示地图
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
//获取统计数据
<uses-permission android:name="android.permission.GET_TASKS" />
//鉴权所需该权限获取进程列表
<uses-permission android:name="android.permission.CAMERA" />
//使用步行AR导航,配置Camera权限
2、在布局文件中添加地图控件
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />
3、Activity代码
public class MainActivity extends Activity {
private MapView mMapView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在使用SDK各组件之前初始化context信息,传入ApplicationContext
//注意该方法要再setContentView方法之前实现
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
//获取地图控件引用
mMapView = (MapView) findViewById(R.id.bmapView);
}
@Override
protected void onDestroy() {
super.onDestroy();
//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
mMapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
//在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
//在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
mMapView.onPause();
}
}
这样地图就显示了
三、关于地图加载不出来的问题
这个问题。。。是我自己傻了。。。在申请秘钥的时候填的包名要和项目里的包名要完全一致!!
包名不一致地图都出不来。。。我第一次申请的时候填的com.baidumap.demo(捂脸)
2、第二种情况。。。测试机没联网。。。