一、下载百度地图SDK
下载地址:http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download
二、在工程中加入SDK
1.将百度地图SDK中的jar包复制到工程目录下的libs文件夹
2.选择所有jar包,右键->add as library->确定
3.在src/main/目录下新建一个文件夹,存放.so文件【请将v8a、v7a和abi文件夹都复制进去,否则会出现错误:No implementation found for long com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create
1.将百度地图SDK所有jar包复制在工程目录下的libs文件夹内
2.选择所有jar包,右键选择 add as library ,点击确认
3.在src/main/目录下建立一个JniLibs的文件夹用来存放so文件(so文件时UNIX的动态链接库)
三、使用百度地图
【摘自百度官方网站:http://lbsyun.baidu.com/index.php?title=androidsdk/guide/hellobaidumap】
在AndroidManifest中添加开发密钥、所需权限等信息
(1)在application中添加开发密钥
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
//在application中添加开发密钥
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="BmXUnkE56RHrZmdv1GHYDMgtKViFbAUQ" />
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
(2)添加权限
//添加所需的权限
<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.CAMERA" />
//使用步行AR导航,配置Camera权限
(3)在布局xml文件(默认activity_main.xml)中添加地图控件
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:focusable="true" />
(4)在应用程序创建时初始化SDK引用的Context 是全局变量
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);
}
(5)创建地图Activity,管理地图生命周期
protected void onDestroy(){
super.onDestroy();
//在activity执行onDestroy时执行mMapView.onDestory(),实现地图生命周期管理
mMapView.onDestroy();
}
protected void onResume(){
super.onResume();
//在activity执行onResume时执行mMapView.onResume(),实现地图生命周期管理
mMapView.onResume();
}
protected void onPause(){
super.onPause();
//在activity执行onPause时执行mMapView.onPause(),实现地图生命周期管理
mMapView.onPause();
}
完成以上步骤后,运行程序,即可在您的应用中显示地图
四、常见问题
问题:工程代码显示:找不到jar包
解答:将百度地图jar包复制到工程目录下的libs的同时,还需要add as library,同时在src/main/下新建一个文件夹,用于存放.so文件
问题:No implementation found for long com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create
解答:请在src/main/下新建一个文件夹,用于存放.so文件,并且需要将v8a、v7a和abi文件夹都复制进去
问题:SHA1的获取
解答:请参考上文
问题:Failure [INSTALL_FAILED_NO_MATCHING_ABIS]
解答:虚拟设备要选择 arm或者直接打包安装到手机上看效果吧
问题:只显示网格,没有地图
解答:(1)没有网络;
(2)签名(SHA1)包名、API key等其中任意一项设置不正确;
(3)AndroidManifest中的配置的不正确:比如API权限、API_KEY、以及uses-permission、meta-data的位置等等
!