android — gps — пытаюсь определить точное расстояние

#android #android-activity

#Android #android-активность

Вопрос:

Я пытаюсь использовать getlatidee6(); но eclipse показывает мне ошибку:

Метод getLatitudeE6() не определен для типа Location

Если я переключусь на getLatitude(); без E6, он работает нормально, и ошибки нет. но моя цель — получить точную широту и долготу, чтобы вычислить точное расстояние между 2 точками с помощью distanceTo(); поэтому я хочу использовать getlatidee6

                 location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

            double finishLati=location.getLatitudeE6() / 1E6;
            double finishLongi=location.getLongitudeE6() / 1E6;
  

функция distanceTo:

                Location locationA = new Location("A");  

           locationA.setLatitude(startLati);  
           locationA.setLongitude(startLongi);  

           Location locationB = new Location("B");  

           locationB.setLatitude(finishLati);  
           locationB.setLongitude(finishLongi);  

           double distance = locationA.distanceTo(locationB);
  

Ответ №1:

использование getLatitudeE6() vs getLatitude() не имеет никакого отношения к получению точного местоположения. на самом деле вы не можете использовать getlatidee6, потому что он не существует, как вы можете видеть из ошибки, которую вы получаете при попытке его использовать.

проблема в том, что вы используете getLastKnownLocation которое может быть местоположением многочасовой давности или вообще не может вернуть вам местоположение

Комментарии:

1. кроме того, используйте requestLocationUpdates() метод, чтобы начать прослушивание обновлений местоположения от определенного поставщика. Кроме того, получение точного определения от GPS обычно требует времени, поэтому вам может потребоваться некоторое время прослушивать обновления.