在我的应用程序中,我使用地图视图,可以找到我的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) {}
}
我错过了什么?
答案 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()
。