2013-04-22 6 views
0

Im пытается получить местоположение и код работает, но он не работает должным образом. Вот мой кодAndroid get Location не работает должным образом

// Get the location manager 
    LocationManager locationManager = (LocationManager)     
    getSystemService(LOCATION_SERVICE); 
    Criteria criteria = new Criteria(); 
    String bestProvider = locationManager.getBestProvider(criteria, false); 
    Location location = locationManager.getLastKnownLocation(bestProvider); 

    try { 
     lat = (int)Math.round((location.getLatitude() * 1e6)) ; 
     lon = (int)Math.round((location.getLongitude() * 1e6)) ; 
    } 
    catch (NullPointerException e){ 
     lat = -1; 
     lon = -1; 
    } 

проблема при использовании Im foursqure или фейсбук они получают расположение непосредственно, но мое приложение возвращает -1, -1 (иногда), а иногда он точно находит место. Что может быть проблемой или как я могу улучшить, чтобы получить текущее местоположение лучше? Спасибо

ответ

0

Вызов getLastKnownLocation иногда возвращает null, как указано в Andorid documentation. Поэтому иногда этот код действительно производит lat = lon = -1. Кроме того, getBestProvider - это способ определения поставщика, который наилучшим образом удовлетворяет заданным критериям. Поскольку вы не указываете какие-либо критерии, логический вывод заключается в том, что все поставщики одинаково хороши, поэтому результат может быть случайным. Наконец, обратите внимание, что lat = -1 и lon = -1 является допустимым местоположением, поэтому в целом это не является хорошим способом помечать ошибку.

Как было предложено в другом ответе здесь, вы должны реализовать http://developer.android.com/reference/android/location/LocationListener.html. Тогда у вас есть проблема с тем, какие поставщики услуг использовать. Мой подход состоит в том, чтобы использовать их все и использовать простой фильтр Калмана, чтобы позаботиться о том, что разные поставщики в разное время имеют разные уровни точности. Я разместил простой фильтр калмана, который я использую для этого здесь. Smooth GPS data

Смежные вопросы