2011-11-30 3 views
4

Я пишу приложение, которое показывает ваше местоположение на карте Google ... до сих пор, так хорошо ... Это действительно показывает мое местоположение правильноКак часто обновлять местоположение gps?

Проблема заключается в том, что GPS не обновляется, если я переезжаю (или это происходит, но только через некоторое время)

Кто-нибудь знает, как это сделать так, как это делают родные карты google (для android)? Это, если вы нажмете на «моем местоположении» он показывает мигающие синие точки, которая изменяет, как вы двигаетесь ...

Это мой код:

//Initializing the listeners   
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 35000, 10, networkLocationListener); 
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 35000, 10, gpsLocationListener); 



//and now, in both 'networkLocationListener' and 'gpsLocationListener' 
//I overwrite the method 'onLocationChanged': 

@Override 
public void onLocationChanged(Location location) { 
    Log.i("test", "New network location: "+location.getLatitude()+ 
        " , "+location.getLongitude()); 
    myLongitude= location.getLongitude(); 
    myLatitude= location.getLatitude(); 
} 

//and the variables myLongitude and myLatitude are the only ones that I need to display my 
//position in the map... 

ли кто-нибудь знает, если я что-то не хватаю ?

ответ

5

Вызов метода, который вы используете, - requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener), и вы сообщаете ему, чтобы он обновлял каждые 35000 мсек или каждые 35 секунд. Попытайтесь снизить это число до того, что вам подходит. Тем не менее, меньшее число будет означать больше использования аккумулятора.

Если вы хотите индикатор на MapView, посмотрите на MyLocationOverlay.

1

Вы не хотели бы оставлять это так навсегда, но стоило бы установить значения minTime и minDistance в ноль, если вы еще не дали этого снимка.

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, gpsLocationListener); 

Если minTime больше 0, то LocationManager потенциально может отдыхать в течение minTime миллисекунд между обновлениями местоположения для сохранения энергии. Если minDistance больше 0, местоположение будет транслироваться только в том случае, если устройство перемещается с помощью счетчиков minDistance. Для получения уведомления так часто, как это возможно, установить оба параметра 0.

- requestLocationUpdates Reference

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