1

GPSデータを追跡するためのアプリを開発しています。これは、追跡されているものを示すインターフェイスに大きなGoogleMapがあります。なんらかの理由(電話、ホームボタンなど)でアクティビティが一時停止するまで、物事は思いどおりに機能し、その後アクティビティを再開します。

最初の起動後、マップはユーザーの操作に反応しません。これは今のところ機能しています。カメラを位置にアニメーション化する呼び出しはすべて機能し、マーカーが描画され、ユーザーの位置と方位も同様に描画されます。一時停止と再開のサイクルの後は、正反対です。マップはユーザーからすべてのジェスチャを取得しますが、呼び出しには反応しません。カメラのアニメーション化、マーカーの描画、ユーザーの位置の表示ができません。

再開時にマップ設定を強制的にリロードし、一時停止中にマップを無効にするなど、多くのことを試しましたが、何も機能していないようです。

これは、onCreate で呼び出された (そして onResume で試した) マップをセットアップした場所です。

private void setupMap(){
    getSupportFragmentManager().beginTransaction().replace(R.id.trackeractivity_map, new SupportMapFragment()).commit();
    FragmentManager fragmentManager = getSupportFragmentManager();
    SupportMapFragment supportMapFragment = (SupportMapFragment) fragmentManager.findFragmentById(R.id.trackeractivity_map);
    mMap = supportMapFragment.getMap();
    mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
    mMap.setMyLocationEnabled(true);
}

これは、ユーザーの場所を更新してカメラをアニメーション化する場所です。

private void updateUserLocation(double lat, double lon){
    Log.d(TAG, "updateUserLocation - " + lat + " : " + lon);
    mLastLocationLat = lat;
    mLastLocationLon = lon;
    if (mMap != null){
        CameraPosition userPos = new CameraPosition(new LatLng(lat, lon), mMap.getMaxZoomLevel()-4, 0, 0);
        mMap.animateCamera(CameraUpdateFactory.newCameraPosition(userPos));
    }
}

ここで、新しいマーカーをトラックに追加します。

private void updateMapOverlay(double lat, double lon){
    Log.d(TAG, "updateMapOverlay - " + lat + " : " + lon + " - Type " + mCurrentType);
    MarkerOptions marker = new MarkerOptions();
    marker.position(new LatLng(lat, lon));
    marker.draggable(false);
    marker.icon(BitmapDescriptorFactory.fromResource(getTypeDrawableID(mCurrentType)));
    mMap.addMarker(marker);
}

レイアウト内のマップ フラグメント:

<fragment
        android:id="@+id/trackeractivity_map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="10dp"
        class="com.google.android.gms.maps.SupportMapFragment"
    />

ご覧のとおり、私は supportfragmentmanager を使用しており、アクティビティは JFeinstein の SlidingMenu も使用しています。

一時停止して再開した後でも、マップを機能させるための助けはありますか?

4

1 に答える 1

1

setupMap メソッドにフラグメントを追加する方法に問題がある可能性があります。Google のガイドを読み直すか、次の投稿をチェックすることをお勧めします。特に、回答にリンクされているブログ投稿には、ユーザーの位置を追跡でき、一時停止/再開で正常に動作する完全なワーキング クラスがあるためです。

https://stackoverflow.com/a/13753518/1103584

于 2013-01-28T19:20:02.437 に答える