1

私のアプリでは、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) {}
}

私は何を取りこぼしたか?

4

2 に答える 2

0

requestLocationUpdates()あなたが持っている機能をセットアップする必要があるだけだと思います。

GPS は、最初の修正を行うのに最大 30 秒かかります。

私は個人的に自分のActivity実装LocationListenerを許可しましたが、うまく機能します(API 7+)。

現在の位置を示すボタンを追加して、animateTo()後で有効にした場合でも、アプリケーションで GPS が正常に機能していることを確認してください。

また、位置関連のコードを から に移動してみてonCreate()くださいonResume()

于 2012-08-30T14:32:53.507 に答える
0

locationListener位置情報の更新を取得するには、GPS をオンにした後にもう一度トリガーする必要があると思います。

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

お役に立てば幸いです。

編集: 私の場合、位置更新コードのトリガーは onResume メソッドにあります。そのため、GPS がオンになっておらず、ユーザーがオンにした場合、アクティビティに戻ったときに、再び自動的にトリガーされます。

于 2012-08-30T14:21:17.643 に答える