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()); } });}d. 启动定位获得用户当前所在位置(WGS-84坐标系) , 即可得到如下结果:
e. 创建Marker标记,标记Location的定位位置,可在LocationCallback回调中调用此方法 。
private Marker locationMarker;//添加定位位置标记public void addLocationMarker(double Latitude, double Longitude) { if (null != locationMarker) { locationMarker.remove(); } MarkerOptions options = new MarkerOptions() .position(new LatLng(Latitude, Longitude)) .title("定位位置") .snippet("定位所在位置"); locationMarker = this.huaweiMap.addMarker(options);}f. 从下方2图可以看出 , Location定位获取的位置与用户实际所在位置存在较大偏差:
推荐阅读
- C# 8.0 添加和增强的功能【基础篇】
- 我的世界怎么开二级隐身(我的世界怎么搞隐身)
- 华为mate50pro上市价格_华为mate50pro价格官网报价
- 【保姆教程】RuoYi-Radius搭建实现portal认证
- 原神证悟木怎么快速收集
- 鸡皮疙瘩第三关殖民星通关攻略
- QQ飞车结婚流程(qq飞车结婚有什么好处)
- qq飞车怎么结婚姐妹(qq飞车结婚有什么要求)
- 【日志系统】Loki日志监控 - 入门初体验
- Python3.11正式版,它来了!