setMyLocationEnabled(true)对我没有任何作用。我的地图中显示了当前位置的蓝点,但MyLocation按钮未显示。我已经经历了许多关于此问题的堆栈溢出问题无济于事。以下是我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityCompat.requestPermissions(GPS.this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
1);
setContentView(R.layout.activity_gps);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
locationManager = (LocationManager)getSystemService(LOCATION_SERVICE);
try {
Log.d("request","done");
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, this);
}
catch (SecurityException e) {
Log.d("asdf", "Asdf");
}
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(getApplicationContext(), Leaderboard.class);
startActivity(i);
}
});
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.setMyLocationEnabled(true);
mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
// Create a criteria object needed to retrieve the provider
Criteria criteria = new Criteria();
// Get the name of the best available provider
String provider = locationManager.getBestProvider(criteria, true);
String locationProvider = LocationManager.NETWORK_PROVIDER;
String GPSProvider = LocationManager.GPS_PROVIDER;
Location myLoc;
if (provider == null)
provider = locationProvider;
// We can use the provider immediately to get the last known location
try {
myLoc = locationManager.getLastKnownLocation(provider);
LatLng loc;
if (myLoc == null) {
loc = new LatLng(38.0317, -78.5108);
} else {
loc = new LatLng(myLoc.getLatitude(), myLoc.getLongitude());
Log.d("lat2", "" + myLoc.getLatitude());
Log.d("long2", "" + myLoc.getLongitude());
}
mMap.addMarker(new MarkerOptions().position(loc).title("Your Location"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(loc));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 16.0f));
} catch (SecurityException e) {
Log.d("asdf", "Asdf");
}
}