c. 展示地图并点击我的位置UI控件,从三张截图可以看出:“我的位置”与“用户实际所在位置”存在较大偏差 。
文章插图
文章插图
文章插图
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()); } });}
经验总结扩展阅读
- C# 8.0 添加和增强的功能【基础篇】
- 一家人温馨的句子简短 形容幸福满满一家句子
- 二氧化碳灭火器适用于什么灭火
- pet是食品级的吗
- 聊天什么程度算暧昧
- 驱动开发:内核LDE64引擎计算汇编长度
- 熟粽子冷冻6个月能吃吗
- 豆角属于碳水还是蔬菜
- 拍身份证黄头发怎么办
- 酒后睡了7个小时还算酒驾吗