请检查以下代码。我想获得当前的经度和纬度。我正在获取默认的初始化lat,lng值。另外,我的标记始终设置为lat,lng的默认值。请帮忙。
public class MapsActivity extends AppCompatActivity implements OnMapReadyCallback, LocationListener {
private GoogleMap mMap;
private LocationManager locationManager;
private String provider;
Button ibSend;
double lat=22.313295, lng = 73.176590;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps2);
ibSend = findViewById(R.id.btnSendLocation);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
provider = locationManager.getBestProvider(criteria,false);
if (ContextCompat.checkSelfPermission(getApplicationContext(),Manifest.permission.ACCESS_COARSE_LOCATION)!=
PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(getApplicationContext(),Manifest.permission.ACCESS_FINE_LOCATION)!=
PackageManager.PERMISSION_GRANTED )
{
ActivityCompat.requestPermissions(MapsActivity.this,new String[]{Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION},0);
}
else {
Location location = locationManager.getLastKnownLocation(provider);
if (location != null)
{
onLocationChanged(location);
}
}
ibSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MapsActivity.this, "Saving Location", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(MapsActivity.this,ModDoc.class);
intent.putExtra("Longitude",lng);
intent.putExtra("Latitude",lat);
setResult(Activity.RESULT_OK,intent);
finish();
}
});
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
LatLng position = new LatLng(lat, lng);
mMap.addMarker(new MarkerOptions().position(position).title("You are here"));
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(position,1000));
mMap.animateCamera(CameraUpdateFactory.zoomTo(1000),3000,null);
if (ContextCompat.checkSelfPermission(getApplicationContext(),Manifest.permission.ACCESS_COARSE_LOCATION)!=
PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(getApplicationContext(),Manifest.permission.ACCESS_FINE_LOCATION)!=
PackageManager.PERMISSION_GRANTED )
{
ActivityCompat.requestPermissions(MapsActivity.this,new String[]{Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION},0);
}
else {
mMap.setMyLocationEnabled(true);
}
mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
}
@Override
public void onLocationChanged(Location location) {
lat = location.getLatitude();
lng = location.getLongitude();
LatLng position = new LatLng(lat,lng);
if (mMap != null)
{
mMap.addMarker(new MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.mipmap.perlocation))
.anchor(0.0f,1.0f)
.title("You are Here")
.position (position));
mMap.moveCamera(CameraUpdateFactory.newLatLng(position));
}
else {
mMap.addMarker(new MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.mipmap.perlocation))).setPosition(position);
}
}
@Override
protected void onPause() {
super.onPause();
if (ContextCompat.checkSelfPermission(getApplicationContext(),Manifest.permission.ACCESS_COARSE_LOCATION)!=
PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(getApplicationContext(),Manifest.permission.ACCESS_FINE_LOCATION)!=
PackageManager.PERMISSION_GRANTED )
{
ActivityCompat.requestPermissions(MapsActivity.this,new String[]{Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION},0);
}
else {
locationManager.removeUpdates(this);
}
}
@Override
protected void onResume() {
super.onResume();
if (ContextCompat.checkSelfPermission(getApplicationContext(),Manifest.permission.ACCESS_COARSE_LOCATION)!=
PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(getApplicationContext(),Manifest.permission.ACCESS_FINE_LOCATION)!=
PackageManager.PERMISSION_GRANTED )
{
ActivityCompat.requestPermissions(MapsActivity.this,new String[]{Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION},0);
}
else {
locationManager.requestLocationUpdates(provider,180000,50,this);
}
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
}
无论何时恢复活动,我都希望设置标记并将其也更新到新位置。我是编程新手。因此,详细的解释将不胜感激。 预先感谢。