http://lbsyun.baidu.com/
1、点击控制台,创建应用
1.填写应用名称,选中类型为:Android SDK,发布版/开发版SHA1参考百度文档完成
2.获取SHA1值
调试版本(debug)和发布版本(release)下的 SHA1 值是不同的,发布 apk 时需要根据发布 apk 对应的 keystore 重新配置 Key。(注意:我们这里使用的是调试版本,在开发时请使用调试版本) 。
a.将keystore拖到桌面,win+R,输入cmd进入Windows则进入cmd控制台,继续在控制台输入命令:
调试版本使用指令:keytool -list -v -keystore debug.keystore
发布版本请使用指令:keytool -list -v -keystore apk 的 keystore
b.输入口令:
调试版本默认密码是: android,发布模式的密码是apk的keystore设置的密码。输入密钥后回车(如果没设置密码,可直接回车),此时可在控制台显示的信息中获取SHA1值,如下图所示:
将信息全部填入,提交
点击复制AK
2、Android Studio配置
1.下载开发包,选中自己想要功能的开发包
http://lbsyun.baidu.com/index.php?title=sdk/download&action#selected=mapsdk_basicmap,mapsdk_searchfunction,mapsdk_lbscloudsearch,mapsdk_calculationtool,mapsdk_radar
2.将开发包拷贝至工程(截图以普通地图服务的开发包为例,步骑行导航的开发包同理),百度有坑,开发包总下载失败或者不全,从demo里面搞对应的jar和so文件
a、添加jar文件
打开解压后的开发包文件夹,找到BaiduLBS_Android.jar文件将其拷贝至工程的app/libs目录下,如图:
添加完之后别忘了在 module 的 build.gradle 文件中添加:
implementation files('libs/BaiduLBS_Android.jar')
b.添加so文件
有两种方法可以往项目中添加so文件。
方法一:
在下载的开发包中拷贝需要的CPU架构对应的so文件文件夹到app/libs目录下,如图:
在app目录下的build.gradle文件中android块中配置sourceSets标签和signingConfigs标签,如果没有使用该标签则新增,详细配置代码如下:
记得把debug.keystore文件导进来,放到项目下面就行(就是demo下面)
sourceSets {
main {
jniLibs.srcDir 'libs'
}
}
signingConfigs {
debug {
storeFile file('debug.keystore')
storePassword "android"
keyAlias "androiddebugkey"
keyPassword "android"
}
}
注意:Jar文件和so文件的版本号必须一致,并且保证Jar文件与so文件是同一版本包取出的。
方法二:
资源说明
V5.1.0版本起,为了优化SDK的jar包体积,将一些Demo中用到的图片资源文件从SDK的jar包中移到了Demo的资源文件路径下,若有依赖,请在Demo中的资源路径获取,源码Demo下载。路径如下:
BaiduMapsApiASDemo/app/src/main/assets/
注意:若您下载的开发包是步骑行导航的,在解压后的开发包中会包含一个assets目录,您需要将该目录下的png文件拷贝至您的项目的assets目录下。
assets文件夹要放在main文件夹下,千万不要放在res文件夹下
3、配置AndroidManifest.xml文件
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/create-map/showmap
1.在
使用定位SDK,需在Application标签中声明service组件,每个App拥有自己单独的定位service,代码如下:
- 在
外部添加如下权限声明:
4、地图初始化
新建一个自定义的Application,在其onCreate方法中完成SDK的初始化。示例代码如下:
import android.app.Application;
import com.baidu.mapapi.CoordType;
import com.baidu.mapapi.SDKInitializer;
public class MyApplication extends Application{
@Override
public void onCreate() {
super.onCreate();
//在使用SDK各组件之前初始化context信息,传入ApplicationContext
SDKInitializer.initialize(this);
//自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.
//包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。
SDKInitializer.setCoordType(CoordType.BD09LL);
}
}
在AndroidManifest.xml文件中声明该Application
在布局文件中添加地图容器
初始化权限,在Activity的onCreate()方法中调用initPermission()
private void initPermission() {
String[] per = {Manifest.permission.READ_PHONE_STATE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.CAMERA};
ActivityCompat.requestPermissions(this, per, 100);
}
创建地图Activity,管理MapView生命周期
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private MapView mMapView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
mMapView = (MapView) findViewById(R.id.bmapView);
mMapView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bmapView:
break;
}
}
@Override
protected void onResume() {
super.onResume();
//在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
//在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
mMapView.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
mMapView.onDestroy();
}
}