Создание меню карты Android для изменения типа карты - PullRequest
6 голосов
/ 15 августа 2011

У меня есть карта в моем приложении для Android. По умолчанию он показывает вид со спутника, но я отключил его, чтобы показывать только вид дорожных карт. Однако мне интересно, как я мог бы построить меню, чтобы, когда пользователь нажимал кнопку меню, в нижней части отображался раздел с «переключением спутниковой карты». (Я буду добавлять другие пункты в меню в будущем)

Спасибо всем, кто может помочь с этим

Ответы [ 3 ]

21 голосов
/ 27 ноября 2014

Это моя реализация, которая прекрасно работает с GoogleMaps API v2. Он показывает диалог с четырьмя переключателями, из которого вы можете выбрать тип карты. Текущий выбранный тип карты также уже выбран.

Android AlertDialog to select GoogleMaps MapType

Этот код предпочтительно входит в вашу деятельность, которая содержит карту. Просто убедитесь, что ваша карта инициирована и отображается правильно, прежде чем вызывать showMapTypeSelectorDialog (). Я также рекомендую использовать Resource Strings для меток.

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();
}
0 голосов
/ 15 августа 2011

Создайте свое меню / кнопку / вкладку / ваш выбор и в прослушивателе событий сделайте: mapView.setSatellite (false); это превратит спутник в дорожную карту.Приветствия.

0 голосов
/ 15 августа 2011

Просто добавьте это в свою активность:

  @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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...