Android:谷歌地图,如果gps在启​​动应用程序后打开,则不显示我的gps位置

时间:2012-08-30 14:13:16

标签: android gps position

在我的应用程序中,我使用地图视图,可以找到我的GPS位置。

如果我在启动应用程序之前打开gps并等待gps修复,那么所有工作终于完成了。 如果我在启动应用程序后打开gps会出现问题,因为在地图中不会显示位置。

这是我在MapActivity上的代码:

private MapView mapView;
private List<Overlay> mapOverlays;
private MapController mapController;
private LocationManager locationManager;
private MyLocationOverlay myLocationOverlay;


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

    // Configure the Map
    mapView = (MapView) findViewById(R.id.mapview);

    mapView.setBuiltInZoomControls(true);
    mapView.setSatellite(false);
    mapController = mapView.getController();


    GeoPoint point = new GeoPoint(47.6945683 *1E6 ,11.5765886 *1E6);
    mapController.animateTo(point);

    mapController.setZoom(9); // Zoom 1 is world view

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

    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,
            50, new GeoUpdateHandler());
    myLocationOverlay = new MyLocationOverlay(this, mapView);
    mapView.getOverlays().add(myLocationOverlay);


    mapOverlays = mapView.getOverlays();
}

public class GeoUpdateHandler implements LocationListener {

    @Override
    public void onLocationChanged(Location location) {}

    @Override
    public void onProviderDisabled(String provider) {}

    @Override
    public void onProviderEnabled(String provider) {}

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {}
}

我错过了什么?

2 个答案:

答案 0 :(得分:0)

我认为您需要在打开GPS后再次触发locationListener才能获得位置更新。

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,
        50, new GeoUpdateHandler());

希望它有所帮助。

编辑:在我的情况下,触发位置更新代码在onResume方法中。因此,如果没有打开GPS并且用户将其打开,则在返回“活动”时,它将再次自动触发。

答案 1 :(得分:0)

我认为您只需要设置requestLocationUpdates()功能即可。

GPS需要30秒才能进行首次修复。

我个人让Activity实施LocationListener并且效果很好(API 7 +)。

尝试添加一个animateTo()当前位置的按钮,即使之后已启用GPS,也可以检查GPS在应用程序中是否正常工作。

还尝试将与位置相关的代码从onCreate()移至onResume()