2011-08-15 21 views
3

私はアンドロイドアプリにマップを持っています。デフォルトでは衛星ビューが表示されますが、ロードマップビューのみを表示するように設定しています。しかし、私はメニューをどのように作成するのだろうかと思っています。そのため、ユーザーがメニューボタンを押したとき、下部に「トグル衛星地図」というセクションが表示されます。ちょうどあなたの活動にこれを追加し、このアンドロイドマップメニューを使って地図タイプを変更する

答えて

0

を支援することができます誰にも

おかげで(私は将来的にメニューに他の項目を追加していく予定):

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu_items, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.item1 : 
     //do what you like 
     default : 
     return super.onOptionsItemSelected(item); 
    } 
    } 

これは、別にする必要がありますxmlファイル(多分/res/menu/menu_items.xml)

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/item1" 
      android:icon="@android:drawable/ic_menu_help" 
      android:title="Help" /> 
    <item android:id="@+id/item2" 
      android:icon="@android:drawable/ic_menu_manage" 
      android:title="Settings" /> 
</menu> 
0

んあなたのメニュー/ボタン/タブ/あなたの選択式を構築し、イベントリスナーで:​​これは衛星を道路地図に変換します。乾杯。

18

これはGoogleマップAPI v2でうまく動作する実装です。マップタイプを選択できる4つのラジオボタンを持つダイアログが表示されます。現在選択されているマップタイプも既に選択されています。

Android AlertDialog to select GoogleMaps MapType

このコードは、好ましくは、マップを保持しているあなたの活動に入ります。 showMapTypeSelectorDialog()を呼び出す前に、マップが開始され、正しく表示されていることを確認してください。また、ラベルにリソース文字列を使用することをお勧めします。

private GoogleMap mMap; 

... 

private static final CharSequence[] MAP_TYPE_ITEMS = 
     {"Road Map", "Hybrid", "Satellite", "Terrain"}; 

private void showMapTypeSelectorDialog() { 
    // Prepare the dialog by setting up a Builder. 
    final String fDialogTitle = "Select Map Type"; 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle(fDialogTitle); 

    // Find the current map type to pre-check the item representing the current state. 
    int checkItem = mMap.getMapType() - 1; 

    // Add an OnClickListener to the dialog, so that the selection will be handled. 
    builder.setSingleChoiceItems(
      MAP_TYPE_ITEMS, 
      checkItem, 
      new DialogInterface.OnClickListener() { 

       public void onClick(DialogInterface dialog, int item) { 
        // Locally create a finalised object. 

        // Perform an action depending on which item was selected. 
        switch (item) { 
         case 1: 
          mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE); 
          break; 
         case 2: 
          mMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN); 
          break; 
         case 3: 
          mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); 
          break; 
         default: 
          mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 
        } 
        dialog.dismiss(); 
       } 
      } 
    ); 

    // Build the dialog and show it. 
    AlertDialog fMapTypeDialog = builder.create(); 
    fMapTypeDialog.setCanceledOnTouchOutside(true); 
    fMapTypeDialog.show(); 
} 
+1

ありがとうございます@easytargetあなたは私の週末を保存しました:) –

関連する問題