#android #location #google-maps-android-api-2
#Android #Расположение #google-карты-android-api-2
Вопрос:
У меня есть активность с MapView. В настоящее время я могу добавить местоположение исправления, добавив соответствующие long и lat в свой код.
Я бы хотел, чтобы приложение заменило эти значения длины и широты на мое текущее местоположение.
Я пробовал много разных способов, но не могу понять, как это сделать.
Мой код выглядит следующим образом:
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
GoogleMap mMap
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// 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);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// Add a marker in Copenhagen and move the camera
LatLng Copenhagen = new LatLng(55.67594 , 12.56553);
mMap.addMarker(new MarkerOptions().position(Copenhagen).title("Marker in CBS"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(Copenhagen));
//zoom to position with level 15
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(Copenhagen, 15);
googleMap.animateCamera(cameraUpdate);
}
}
Ответ №1:
используйте этот код, чтобы сначала получить свое текущее местоположение :
public void getCurrentLocation() {
if (isPermisionAccess()) {
locationManager = (LocationManager) mActivity.getSystemService(LOCATION_SERVICE);
if (locationManager != null) {
Location gpsLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
Location netLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (gpsLocation != null) {
currentlatitude = gpsLocation.getLatitude();
currentlongitude = gpsLocation.getLongitude();
} else if (netLocation != null) {
currentlatitude = netLocation.getLatitude();
currentlongitude = netLocation.getLongitude();
}
}
}
}
private boolean isPermisionAccess() {
return (ContextCompat.checkSelfPermission(mActivity, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED);
}
затем :
// Add a marker in myLocation and move the camera
LatLng myLocation = new LatLng(currentlatitude , currentlongitude );
mMap.addMarker(myLocation).title("Marker in CBS"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(myLocation ));
//zoom to position with level 15
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(myLocation , 15);
googleMap.animateCamera(cameraUpdate);
и не забывайте, что :
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />