示例#1
0
  /**
   * Creates/Restore the layer switcher or restore the old one and add all other menu
   *
   * @param savedInstanceState
   * @param layerManager
   */
  private void setupLeftMenu(Bundle savedInstanceState, MultiSourceOverlayManager layerManager) {
    // work on fragment management
    FragmentManager fManager = getSupportFragmentManager();
    LayerSwitcherFragment osf;
    if (savedInstanceState != null) {
      osf = (LayerSwitcherFragment) fManager.findFragmentById(R.id.left_drawer_container);
      if (osf == null) {
        Log.e("MAPSACTIVITY", "unable to restore layer switcher");
      }
      layerManager.setLayerChangeListener(osf);
      layerManager.restoreInstanceState(savedInstanceState);

    } else {
      layerManager.defaultInit();
      //			@SuppressWarnings("unchecked")
      //			ArrayList<Layer> layers =  (ArrayList<Layer>) LocalPersistence.readObjectFromFile(this,
      // LocalPersistence.CURRENT_MAP);
      //			if(layers != null){
      //				layerManager.setLayers(layers);
      //			}else{

      if (getIntent() != null
          && getIntent().getExtras() != null
          && getIntent().getExtras().containsKey(MSM_MAP)) {

        layerManager.loadMap((MSMMap) getIntent().getExtras().getSerializable(MSM_MAP));

      } else {
        boolean dontLoadMBTileLayer =
            MapFilesProvider.getBackgroundSourceType() == BackgroundSourceType.MBTILES;
        MSMMap map = SpatialDbUtils.mapFromDb(dontLoadMBTileLayer);
        StorageUtils.setupSources(this);
        // This adds layers also if its called loadMap but it will not order layers
        // layerManager.loadMap(map);
        // so use this instead
        addLayersOrdered(map.layers);
      }

      //			}
      // setup left drawer fragments
      if (mDrawerMode != DrawerMode.NONE) {

        osf = new LayerSwitcherFragment();
        layerManager.setLayerChangeListener(osf);
        FragmentTransaction fragmentTransaction = fManager.beginTransaction();
        fragmentTransaction.add(R.id.left_drawer_container, osf);
        GenericMenuFragment other = new GenericMenuFragment();
        // fragmentTransaction.add(R.id.right_drawer, other);
        if (mDrawerMode == DrawerMode.BOTH) {

          SourcesFragment sf = new SourcesFragment();
          fragmentTransaction.add(R.id.right_drawer, sf);
        }
        fragmentTransaction.commit();
      }
    }
  }