百度地圖

第一步:

        下載對應的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


添加權限

<!-- 這個權限用於進行網絡定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!-- 這個權限用於訪問GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!-- 用於訪問wifi網絡信息,wifi信息會用於進行網絡定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!-- 獲取運營商信息,用於支持提供運營商信息相關的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!-- 這個權限用於獲取wifi的獲取權限,wifi信息會用來進行網絡定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!-- 用於讀取手機當前的狀態-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<!-- 寫入擴展存儲,向擴展卡寫入數據,用於寫入離線定位數據-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!-- 訪問網絡,網絡定位需要上網-->
<uses-permission android:name="android.permission.INTERNET" />
<!-- SD卡讀取權限,用戶寫入離線定位數據-->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>

添加service

<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote">
</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();
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章