关于android中的当前位置

时间:2011-09-28 07:40:38

标签: android gps

  

可能重复:
  GPS not update location after close and reopen app on 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()

1 个答案:

答案 0 :(得分:0)

原因是它显示了您最后知道的位置,这就是您的代码所做的事情。

你需要给LocationManager一些时间来找到你当前的位置,你不能指望它在不计算的情况下知道它。

你能做的是:

  1. 制作AsyncTask。
  2. 在preExecute中创建一个对话框或执行一些向用户显示您正在查找当前位置的内容。
  3. 在backgroundProccess中获取一个新位置。
  4. 在postExecute中通知用户新的(当前)位置。
  5. 当您按下按钮时,请运行AsyncTask。