首页 > 解决方案 > FusedLocationProviderClient 返回错误的经纬度

问题描述

按照谷歌开发者网站的示例,我使用 FusedLocationProviderClient 来获取最后一个已知位置。

private FusedLocationProviderClient fusedLocationClient;

// ..

@Override
protected void onCreate(Bundle savedInstanceState) {
    // ...

    fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
}

在按钮单击时,我调用:

fusedLocationClient.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
                    myposition.setText(location.getLatitude() + ", " + location.getLongitude());
                    // ...
                }
            }
        });

但是,有时,它给了我一个远离当前设备地理位置的位置。我已经在三种不同的设备上进行了检查。我已经宣布:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

我应该如何使用 fusedlocation 来获得准确的最佳位置?我尝试使用 getcurrentlocation 更改 getlastlocation 但最后一种方法不可用,尽管文档说它可用。

标签: javaandroidgeolocationgpsandroid-gps

解决方案


推荐阅读