为什么我在谷歌地图上的当前位置在安卓应用程序中不正确



我想制作一个Android应用程序,它可以确定我在地图上的位置。我使用了谷歌地图SDK文档和代码。

问题是,我总是把谷歌总部作为我的当前位置,而不是我的真实位置。

可能出了什么问题?下面是我的代码。


private GoogleMap mMap;
private CameraPosition mCameraPosition;
private Location mLastKnownLocation;
private FusedLocationProviderClient mFusedLocationProviderClient;
private static final int DEFAULT_ZOOM = 15;
private static final int PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION = 1;
private boolean mLocationPermissionGranted;
private static final String TAG = MapsActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
getDeviceLocation();
}
private void getDeviceLocation() {
try {
if (mLocationPermissionGranted) {
Task<Location> locationResult = mFusedLocationProviderClient.getLastLocation();
locationResult.addOnCompleteListener(this, new OnCompleteListener<Location>() {
@Override
public void onComplete(@NonNull Task<Location> task) {
if (task.isSuccessful()) {
mLastKnownLocation = task.getResult();
if (mLastKnownLocation != null) {
LatLng mLocation = new LatLng(mLastKnownLocation.getLatitude(),
mLastKnownLocation.getLongitude());
mMap.addMarker(new MarkerOptions().position(mLocation).title("You are here"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(mLocation));
}
} else {
Log.d(TAG, "Current location is null. Using defaults.");
Log.e(TAG, "Exception: %s", task.getException());
mMap.moveCamera(CameraUpdateFactory
.newLatLngZoom(mDefaultLocation, DEFAULT_ZOOM));
mMap.getUiSettings().setMyLocationButtonEnabled(false);
}
}
});
}
} catch (SecurityException e)  {
Log.e("Exception: %s", e.getMessage());
}
}
}

您可能正在使用模拟器。这主要是的问题

最新更新