Широта долгота не отображается - PullRequest
0 голосов
/ 17 мая 2018

У меня есть следующая функция для получения широты и долготы текущего местоположения мобильного телефона.

  private void getLocation() {


    if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION)
            != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission
            (MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

        ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION);

    } else {

        Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);


        if (location != null) {
            double latti = location.getLatitude();
            double longi = location.getLongitude();
            lattitude = String.valueOf(latti);
            longitude = String.valueOf(longi);

            textView.setText("Your current location is" + "\n" + "Lattitude = " + lattitude
                    + "\n" + "Longitude = " + longitude);

        } else {

            Toast.makeText(this, "Unable to Trace your location", Toast.LENGTH_SHORT).show();
        }
    }

}

Эта функция вызывается через кнопку. Проблема в том, что при нажатии кнопки функция не находит местоположение и продолжает выдавать то же сообщение, что и в операторе else. Может кто-нибудь указать, что я делаю неправильно?

1 Ответ

0 голосов
/ 17 мая 2018

Сначала вам нужно определить LocationListener

private final LocationListener mLocationListener = new LocationListener() {
@Override
public void onLocationChanged(final Location location) {
    //your code here to get lat lon from location
}

А в деятельности

mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, LOCATION_REFRESH_TIME,
        LOCATION_REFRESH_DISTANCE, mLocationListener);
...