FusedLocationApi 连接后如何获取位置?

Posted

技术标签:

【中文标题】FusedLocationApi 连接后如何获取位置?【英文标题】:How to get location as soon as FusedLocationApi connected? 【发布时间】:2019-06-08 09:27:39 【问题描述】:

我使用以下代码使用 FusedLocationApi 获取用户的位置,但似乎 onLocationChanged 确实在位置真正改变但不发送初始位置时有效。当我启动 Api 时什么都没有发生,但是当我改变我的位置时,目标函数被调用。

这就是我启动 Api 的方式:

   @Override
    public void onConnected(Bundle dataBundle) 
       LocationServices.FusedLocationApi.requestLocationUpdates(mLocationClient, mLocationRequest, this);
    

这就是我调用自己的函数的方式:

@Override
public void onLocationChanged(Location location) 
    if (location != null) 
        CurrentLocation=String.valueOf(location.getLatitude())+"_"+String.valueOf(location.getLongitude());
        analyzeData(CurrentLocation);
    

我如何在onConnected 被触发而不是位置更改时立即获取位置。谢谢

【问题讨论】:

使用 setFastestInterval(); ***.com/a/26407873/7094064 【参考方案1】:

onLocationChange 仅在如上所述更改位置时调用。 因此,如果您需要在onConnect 被触发后立即获取位置,您需要使用自爆代码作为解决方法,直到onLocationChange 被触发

private FusedLocationProviderClient mFusedLocationClient;

mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
mFusedLocationClient.getLastLocation()
        .addOnSuccessListener(this, new OnSuccessListener<Location>() 
            @Override
            public void onSuccess(Location location) 
                // Got last known location. In some rare situations this can be null.
                if (location != null) 
                    // Logic to handle location object
                
            
        );

【讨论】:

以上是关于FusedLocationApi 连接后如何获取位置?的主要内容,如果未能解决你的问题,请参考以下文章