私は Android 用の Google Maps API V2 を使用しています。Google の新しい Navigation Drawer が MapFragement とやり取りできるかどうか疑問に思っていました。ドロワーにはウェイポイントのリストがあり、ユーザーがそれをクリックすると、クリックしたウェイポイントが地図の中心になります。
英語で申し訳ありませんが、ありがとうございます。
私は Android 用の Google Maps API V2 を使用しています。Google の新しい Navigation Drawer が MapFragement とやり取りできるかどうか疑問に思っていました。ドロワーにはウェイポイントのリストがあり、ユーザーがそれをクリックすると、クリックしたウェイポイントが地図の中心になります。
英語で申し訳ありませんが、ありがとうございます。
確かにそれは可能です。私のプロジェクトの1つでは、これには使用しませんが、アプローチは次のとおりです。(互換性を高めるために)SherlockMapFragmentを使用しましたが、MapFragmentでも同じように機能します
class DrawerItemClickListener implements OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
case 0:
SherlockMapFragment someFragment= new FragmentSome();
Bundle args1 = new Bundle();
args1.putInt("index", DATA_SLEEP); // here put some data
someFragment.setArguments(args1);
fm.beginTransaction().replace(R.id.contentFrame, someFragment)
.commit();
getSupportActionBar().setTitle("I am fragment");
drawerLayout.closeDrawer(drawerList);
break;
次に、作成時のフラグメントで、マップフラグメントによってインスタンス化された新しいマップをキャッチしてビューに保存し、それをインフレートされたレイアウトに追加し、gmap = getMap() で参照を取得してから、マップオブジェクトである gmap を使用します。
public class FragmentSome extends SherlockMapFragment{
private GoogleMap gMap;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
private View mapView;
mapView = super.onCreateView(inflater, container, savedInstanceState); //
sore map in a view
initType = getArguments().getInt("index");
loadData();
return inflater.inflate(R.layout.fragment_food_sleep, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
FrameLayout mapHolder = (FrameLayout) getView().findViewById(
R.id.mapContainer);
mapHolder.addView(mapView); // add map to inflated layout
gMap = getMap(); // get reference to map and from here do whatever...
if (initType == MainActivity.DATA_FOOD) {
gMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(
46.390752, 16.437006), 5));
gMap.animateCamera(CameraUpdateFactory.zoomTo(15), 2000, null);
} else {
gMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(
46.388322, 16.427994), 5));
gMap.animateCamera(CameraUpdateFactory.zoomTo(13), 2000, null);
}
}