Я знаю, что это было задано раньше, но все доступные решения требуют от меня использования метода onLocationChanged()
, поэтому я могу использовать методы getLatitude()
и getLongitude()
для получения координат.Как я могу получить текущее местоположение? Android Studio
Но при изменении местоположения моего устройства будет вызываться onLocationChanged()
. Поэтому, чтобы получить мое текущее местоположение, мне пришлось бы переместить мое устройство.
Но я хочу получить текущие координаты, не перемещая устройство. Кроме того, я где-то читал, что могу вызвать метод onLocationChanged()
вручную, и я могу получить последнее известное местоположение, но опять же,
Возможно ли, что последнее известное местоположение не будет моим текущим местоположением? или можно использовать последнее известное решение для определения местоположения?
Это часть класса, который я использую для реализации LocationListener.
public class MyLocListener extends MapsActivity implements LocationListener {
public void onLocationChanged(Location location)
{
if(location!=null)
{
MapsActivity.setLatitude(location.getLatitude());
MapsActivity.setLongitude(location.getLongitude());
}
}}
Это переопределение функции, которую я использую для предоставления координат моей активности карты. широта и долгота - две переменные двойного типа. В этом классе переменные широты и долготы начинаются с 0, и они остаются такими, поскольку функция onLocationChanged()
вызывается только при изменении моего местоположения. Поэтому я не вижу свое текущее местоположение на карте.
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
LocationManager myLocManager;
myLocManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
MyLocListener loc = new MyLocListener();
if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
myLocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, loc);
LatLng sydney = new LatLng(latitude, longitude);
mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
}
Если вы будете искать в Интернете «андроида текущее местоположение» вы найдете https://developer.android.com/training/location/retrieve-current.html –
иметь взгляд ответ на шаг за шагом кода http://stackoverflow.com/a/38397092/5955362 –