Относительно текущего местоположения в 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. Создайте асинхронную задачу.
  2. В preExecute создает диалог или делает что-то, что показывает пользователю, что вы ищете текущее местоположение.
  3. В backgroundProcess получает новое местоположение.
  4. В postExecute информируйте пользователя о новом (текущем) местоположении.
  5. Когда вы нажимаете кнопку, запускайте AsyncTask.
person Finn Larsen    schedule 28.09.2011