【FAQ】关于华为地图服务定位存在偏差的原因及解决办法( 二 )

c. 展示地图并点击我的位置UI控件,从三张截图可以看出:“我的位置”与“用户实际所在位置”存在较大偏差 。

【FAQ】关于华为地图服务定位存在偏差的原因及解决办法

文章插图
【FAQ】关于华为地图服务定位存在偏差的原因及解决办法

文章插图
【FAQ】关于华为地图服务定位存在偏差的原因及解决办法

文章插图
2. 使用华为Location SDK获取用户当前所在位置a. 声明FusedLocationProviderClient对象 。
// 声明fusedLocationProviderClient对象private FusedLocationProviderClient fusedLocationProviderClient;b. 创建LocationCallback,用于位置更新的回调 。
/** * 定义位置更新回调 */LocationCallback mLocationCallback = new LocationCallback() {    @Override    public void onLocationResult(LocationResult locationResult) {        if (locationResult != null) {            // TODO: 处理位置回调结果            Log.d("LOG_HwMyLocation", "Latitude" + locationResult.getLastHWLocation().getLatitude() +                    " ; Longitude:" + locationResult.getLastHWLocation().getLongitude());        }    }};c. 初始化FusedLocationProviderClient对象,设置定位类型并开启定位 。
private void initLocationClient() {    // 实例化fusedLocationProviderClient对象    fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);    LocationRequest mLocationRequest = new LocationRequest();    // 设置位置更新的间隔(单位:毫秒)    mLocationRequest.setInterval(1000);    // 设置定位类型    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);    // 设置回调次数为1    mLocationRequest.setNumUpdates(10);    //开启定位    fusedLocationProviderClient.requestLocationUpdates(mLocationRequest, mLocationCallback, Looper.getMainLooper())            .addOnSuccessListener(new OnSuccessListener<Void>() {                @Override                public void onSuccess(Void aVoid) {                    // TODO: 接口调用成功的处理                    Log.d("LOG_HwMyLocation", "定位开启成功");                }            })            .addOnFailureListener(new OnFailureListener() {                @Override                public void onFailure(Exception e) {                    // TODO: 接口调用失败的处理                    Log.d("LOG_HwMyLocation", "定位开启失败:"+e.getMessage());                }            });}

经验总结扩展阅读