第一步:
下載對應的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(); }