0

我必须在 MapActivity 启动时加载当前设备位置(它从另一个 Activity 启动的 Intent 开始)。
问题是环顾网络和android开发人员部分,我看到我必须使用LocationListener方法onLocationChange(位置),但我必须在MapActivity启动时获取用户位置,而不是当用户更改他的位置时。我尝试了几种方法,但没有找到解决方案。

public class MappaActivity extends MapActivity {

MapView miaMapView;
MapController mc;
LocationManager lm;
GeoPoint actualP;
LocationListener locationListener;

@Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout_mappa_activity);

    miaMapView=(MapView)findViewById(R.id.miaMapView);
    mc=miaMapView.getController();
    miaMapView.setBuiltInZoomControls(true);
    miaMapView.setSatellite(true);
    miaMapView.invalidate();

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

    locationListener=new MyLocationListener();

    lm.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, locationListener);


//  This is MyLocationListener inner class:



private class MyLocationListener implements LocationListener{

    @Override
    public void onLocationChanged(Location location) {
        if(location!=null){

            actualP = new
                    GeoPoint(
                    (int) (location.getLatitude() * 1E6), (int) (location.getLongitude() * 1E6));

            mc.animateTo(actualP);
            mc.setZoom(10);
        }

    }

    @Override
    public void onProviderDisabled(String provider) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onProviderEnabled(String provider) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub

    }

}

}

actualP 保持为空,直到用户位置发生更改才会触发 onLocationChanged 方法。

我也尝试使用 locationManager.getLastKnowLocation(location.GPS_PROVIDER) 但它返回 null。

希望能得到一些帮助,谢谢!

4

1 回答 1

0

您的 GPS_PROVIDER 可能无法获取位置

当您的 GPS_PROVIDER 无法为您提供位置时,如果您还使用 NETWORK_PROVIDER 和 PASSIVE_PROVIDER 获取位置会更好

也使用 lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0,locationListener);

和 lm.requestLocationUpdates(LocationManager.PASSIVE_PROVIDER, 0, 0,locationListener); 可能它们不如 GPS_PROVIDER 准确。

于 2012-08-10T14:08:17.680 回答