Относно текущото местоположение в android

Възможен дубликат:
GPS не актуализира местоположението след затваряне и повторно отваряне на приложението на android

Знам, че този въпрос вече е зададен, но проблемът ми е такъв.

всеки път, когато отворя приложението си, то показва последно местоположение, а не текущо местоположение

Имам бутон за текущо местоположение и искам, когато отворя приложението си, да показва текущото местоположение на картата, след което, когато щракна върху бутона, да показва текущото местоположение.

така че проблемът ми е, че когато отворя приложението си, то показва последното местоположение, но когато натисна, показва текущото местоположение.

код в onCreate()

_locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

    _locationListener = new CurrentLocationListener(this,this);
    _locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1,1,_locationListener );
    _currentGeoPoint = getKnownLocation();
    _currentPosOverlay = new OverlayItem(_currentGeoPoint, "", "");
    Log.d(" overlay", "overlaylast "+_currentGeoPoint);
  //  Toast.makeText(getBaseContext(), "overlay12333vvv "+_currentGeoPoint, Toast.LENGTH_SHORT).show();
    _customOverlay.addOverlay(_currentPosOverlay);
    _mapOverlays.add(_customOverlay);

Код за getKnownLocation()

    // TODO Auto-generated method stub
    Location lastLocation = _locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);


    if(lastLocation == null){
        lastLocation = _locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
    }
    if(lastLocation != null){

        GeoPoint gp = new GeoPoint((int)(lastLocation.getLatitude() * 1e6), (int)(lastLocation.getLongitude() * 1e6));
        last_loc=gp;

        return gp;
    }else {
        return _mapView.getMapCenter();
    }

За бутона, който извиках getKnownLocation()


person vky    schedule 28.09.2011    source източник


Отговори (1)


Разбира се, той показва вашето последно известно местоположение, това прави вашият код.

Трябва да дадете известно време на LocationManager, за да намери текущото ви местоположение, не можете да очаквате да го знае, без да го е изчислил.

Това, което можете да направите е:

  1. Направете AsyncTask.
  2. В preExecute създава диалогов прозорец или прави нещо, което показва на потребителя, че търсите текущото местоположение.
  3. Във backgroundProccess получава ново местоположение.
  4. В postExecute информира потребителя за новото (текущо) местоположение.
  5. Когато натиснете бутона, стартирайте AsyncTask.
person Finn Larsen    schedule 28.09.2011