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 も使用しています。
一時停止して再開した後でも、マップを機能させるための助けはありますか?