第一步:
下载对应的SDK
http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download
第二步:
创建应用
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/key
获取sha1(开发版和发布版)
sha1: http://blog.csdn.net/lhg_55/article/details/52809396
keytool -v -list -keystore debug.keystore
keytool -list -v -keystore ???.jks
第三步:
集成(jar和so动态库文件)清单配置
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/hellobaidumap
第四步:
调用API
普通地图
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/basicmap
定位
http://lbsyun.baidu.com/index.php?title=android-locsdk/guide/buildprojec
添加权限
添加service
//---------------------将地图跟定位关联起来---------------------------------------- MyLocationData locData = new MyLocationData.Builder() .accuracy(location.getRadius()) // 此处设置开发者获取到的方向信息,顺时针0-360 .direction(100).latitude(location.getLatitude()) .longitude(location.getLongitude()).build(); // 设置定位数据 baiduMap.setMyLocationData(locData); if (isFirstLoc) { isFirstLoc = false; LatLng ll = new LatLng(location.getLatitude(), location.getLongitude()); MapStatus.Builder builder = new MapStatus.Builder(); builder.target(ll).zoom(18.0f); baiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build())); } //---------------------将地图跟定位关联起来----------------------------------------
baiduMap = mMapView.getMap(); // 开启定位图层 baiduMap.setMyLocationEnabled(true);
//Android 手机6.0版本以后需要手动申请权限 if (AndPermission.hasPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION)) { } else { //没有权限 申请权限 AndPermission.with(MainActivity.this).requestCode(100).permission(Manifest.permission.ACCESS_COARSE_LOCATION).send(); } if (AndPermission.hasPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION)) { } else { //没有权限 申请权限 AndPermission.with(MainActivity.this).requestCode(100).permission(Manifest.permission.ACCESS_FINE_LOCATION).send(); } if (AndPermission.hasPermission(MainActivity.this, Manifest.permission.ACCESS_WIFI_STATE)) { } else { //没有权限 申请权限 AndPermission.with(MainActivity.this).requestCode(100).permission(Manifest.permission.ACCESS_WIFI_STATE).send(); }
private PermissionListener listener = new PermissionListener() { @Override public void onSucceed(int requestCode, List<String> grantedPermissions) { // 权限申请成功回调。 if(requestCode == 100) { // TODO 相应代码。 } else if(requestCode == 101) { // TODO 相应代码。 } } @Override public void onFailed(int requestCode, List<String> deniedPermissions) { // 权限申请失败回调。 // 用户否勾选了不再提示并且拒绝了权限,那么提示用户到设置中授权。 if (AndPermission.hasAlwaysDeniedPermission(MainActivity.this, deniedPermissions)) { // 第一种:用默认的提示语。 AndPermission.defaultSettingDialog(MainActivity.this, requestCode).show(); // 第二种:用自定义的提示语。 // AndPermission.defaultSettingDialog(this, REQUEST_CODE_SETTING) // .setTitle("权限申请失败") // .setMessage("我们需要的一些权限被您拒绝或者系统发生错误申请失败,请您到设置页面手动授权,否则功能无法正常使用!") // .setPositiveButton("好,去设置") // .show(); // 第三种:自定义dialog样式。 // SettingService settingService = // AndPermission.defineSettingDialog(this, REQUEST_CODE_SETTING); // 你的dialog点击了确定调用: // settingService.execute(); // 你的dialog点击了取消调用: // settingService.cancel(); } } };
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); // 只需要调用这一句,其它的交给AndPermission吧,最后一个参数是PermissionListener。 AndPermission.onRequestPermissionsResult(requestCode, permissions, grantResults, listener); }
//Android 手机6.0版本以后需要手动申请权限 if (AndPermission.hasPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION)) { } else { //没有权限 申请权限 AndPermission.with(MainActivity.this).requestCode(100).permission(Manifest.permission.ACCESS_COARSE_LOCATION).send(); } if (AndPermission.hasPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION)) { } else { //没有权限 申请权限 AndPermission.with(MainActivity.this).requestCode(100).permission(Manifest.permission.ACCESS_FINE_LOCATION).send(); } if (AndPermission.hasPermission(MainActivity.this, Manifest.permission.ACCESS_WIFI_STATE)) { } else { //没有权限 申请权限 AndPermission.with(MainActivity.this).requestCode(100).permission(Manifest.permission.ACCESS_WIFI_STATE).send(); }