百度地图

第一步:

        下载对应的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();
}




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