Android 百度地图API导航 如何实现以当前位置为起点

RT,最近在写APP关于步行导航的,于是用到了百度地图API

CSDN上有大量相关话题,但全都是已知两点的坐标去设置导航路线,但我想让程序获取自身位置坐标为起点,不知道怎么做。。

网上查了几种可能的方法,但都无法实现该功能

  1. 获取安卓源生的GPS定位
            locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
            @SuppressLint("MissingPermission") Location mlocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
            Toast.makeText(MainActivity.this,String.valueOf(mlocation.getLatitude()),Toast.LENGTH_SHORT).show(); 

但源生的定位极其不准,偏得离谱。

  1. 通过百度的BDAbstractLocationListener去获取经纬度
    过程偏复杂,不多赘述,该方法遇到的问题是
    WalkNavigateHelper.getInstance().routePlanWithRouteNode(param, new IWRoutePlanListener())中的param加载比BDAbstractLocationListener快,导致经纬度还没获取,就被传入。

有没有人知道还能怎么做

这个问题类似人的行动轨迹

帖中的问题:
通过百度的BDAbstractLocationListener去获取经纬度
过程偏复杂,不多赘述,该方法遇到的问题是
WalkNavigateHelper.getInstance().routePlanWithRouteNode(param, new IWRoutePlanListener())中的param加载比BDAbstractLocationListener快,导致经纬度还没获取,就被传入。

方法1:为什么不在应用启动的时候先开启一个服务,启动BDAbstractLocationListener,拿到经纬度后赋值成全局静态变量,方便 ,后面页面 WalkNavigateHelper.getInstance().routePlanWithRouteNode 时候使用
方法2: 点击导航时候,先弄个加载框显示,然后 启动BDAbstractLocationListener,onReceiveLocation回调当前位置后 再使用 WalkNavigateHelper.getInstance().routePlanWithRouteNode启动导航,销毁加载框

您说的问题不就是存在一个异步导致么emo