发表于: 2018-11-08 22:50:10

0 1352


一、今天完成的事情

 显示百度地图,获取到当前的位置,有一些需要注意的地方

1.官方文档里提到的一个权限是无法申请的

Permissions with the protection level signature, privileged or signatureOrSystem are only granted to system apps. If an app is a regular non-system app, it will never be able to use these permissions.

这是一个只有系统应用才能使用的权限,第三方应用无权使用。

网上有两种解决方法,一种是clean工程,对于AndroiStudio无效。另一种是修改权限等级,这是一种投机的做法,既然官方不让使用这个权限了,肯定是有道理的,所以还是要遵守开发规范。

其实只要授予SD卡读写权限就可以了,不需要MOUNT_UNMOUNT_FILESYSTEMS这个权限,也不影响百度地图SDK的集成。

<!-- 获取SD卡写入权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 获取SD卡读取权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />


2.LocationClient的registerLocationListener方法已经过时了,替代者是BDAbstractLocationListener

Android定位SDK自V7.2版本起,对外提供了Abstract类型的监听接口BDAbstractLocationListener,用于实现定位监听。原有BDLocationListener暂时保留,推荐开发者升级到Abstract类型的新监听接口使用

源码

public abstract class BDAbstractLocationListener {
   public BDAbstractLocationListener() {
   }

   public abstract void onReceiveLocation(BDLocation var1);

   public void onConnectHotSpotMessage(String var1, int var2) {
   }

   public void onLocDiagnosticMessage(int var1, int var2, String var3) {
   }
}

使用

private class MyLocationListener extends BDAbstractLocationListener {

   @Override
   public void onReceiveLocation(BDLocation location) {
       //
       if (location.getLocType() == BDLocation.TypeGpsLocation
               || location.getLocType() == BDLocation.TypeNetWorkLocation) {
           navigateTo(location);
           Log.i(TAG, "onReceiveLocation: 坐标:" + "\n经度:" + location.getLatitude() + "\n纬度:" + location.getLongitude());
           String city = location.getCity();
           Log.i(TAG, "onReceiveLocation: 当前所在城市:" + city);
           //根据city查询护工或者雇主
           queryUser(city);
       }
   }
}


3.配置定位SDK参数

 在获取经纬度和地址时,需要配置SDK参数,默认情况下是不获取地址的

//配置定位SDK参数
LocationClientOption option = new LocationClientOption();
option.setIsNeedAddress(true);
mLocationClient = new LocationClient(getApplicationContext());
mLocationClient.setLocOption(option);
mLocationClient.registerLocationListener(new MyLocationListener());


二、明天计划的事情

      在地图上查看附近的护工、雇主位置


三、遇到的问题

    

四、收获

   百度地图SDK的基本使用





返回列表 返回列表
评论

    分享到