Необходимо получить координаты местоположения и отобразить их на карте (Google Maps). Для этого использую класс FusedLocationProviderClient. Его объект инициализирую в методе onCreate() следующим образом:
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
Далее определяю location (вызываю метод identifyCoordinates из переопределенного метода onMapReady(GooglMap)):
mFusedLocationClient.getLastLocation()
.addOnSuccessListener(this, new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if (location != null) {
setCoordinates(location);
}
}
});
И передаю его в метод setCoordinates для инициализации координат (приватные поля типа double)
public void setCoordinates(Location location) {
lat = location.getLongitude();
lon = location.getLatitude();
}
Далее в методе onMapReady после успешного определения координат устанавливаю маркер на карте:
@Override
public void onMapReady(GoogleMap googleMap) {
identifyCoordinates();
mMap = googleMap;
LatLng latLng = new LatLng(lon, lat);
mMap.addMarker(new MarkerOptions().position(latLng).title("Вы здесь"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
}
Но, после этого получаю координаты 0.00 и 0.00. Удалось решить данную проблему следующим образом:
mFusedLocationClient.getLastLocation()
.addOnSuccessListener(this, new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if (location != null) {
setCoordinates(location);
LatLng latLng = new LatLng(lon, lat);
mMap.addMarker(new MarkerOptions().position(latLng).title("Вы здесь"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
}
}
});
На карте все корректно отображалось, но этот способ, как мне кажется, несколько безобразен. Подскажите, как я могу еще решить данную проблему?
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости