Получение gps координат через Play Services

277
02 июля 2017, 13:31

Необходимо получить координаты местоположения и отобразить их на карте (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));
                        }
                    }
                });

На карте все корректно отображалось, но этот способ, как мне кажется, несколько безобразен. Подскажите, как я могу еще решить данную проблему?

READ ALSO
Java запуск каждую нечетную минуту

Java запуск каждую нечетную минуту

Можно ли сделать так, если можно то как, что бы при нажатии Jbutton, выполнялся определенный метод каждую нечетную минуту пока программа не будет...

205
Получить дату из строки

Получить дату из строки

Доброго времениЕсть стока: 2017-06-01T00:00:00

187
NoSuchBeanDefinitionException spring

NoSuchBeanDefinitionException spring

У меня есть проект посренный с использование MVC паттернаЯ решил перевести его на spring

228
Как правильно вставить toast в smali листинг?

Как правильно вставить toast в smali листинг?

Пытаюсь разобраться в функции генерации запросов в приложенииВ запросе в параметре передается MD5-строка

191