1

フラグメント内のスイッチをOFF位置にフリックしたときにマップビューを通常のスタイルに戻そうとしていますが、動作していません。以下は、私が直面しています、そのプロセス中に発生するものである:トグルスイッチをクリックした後、MapViewが正常な状態に戻らない

  1. フラグメント(containgマップ)とスイッチ登場
  2. ON位置に
  3. はじいスイッチ
  4. スタイル付きマップ登場OFF位置
  5. から
  6. はじいスイッチ

私はmGoogleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);を使用してみましたが、マップはまだスタイルミリアンペアに残ったまま変更されません

  • 地図pスイッチを軽く叩くと表示されます。何が間違っているのかは分かりません。この問題を解決するためには何が必要ですか?

    public class FragmentMap extends android.support.v4.app.Fragment implements OnMapReadyCallback { 
    
        private SwitchCompat swt; 
    
        public FragmentMap() { 
        } 
    
        GoogleMap mGoogleMap; 
        MapView mMapView; 
    
        @Override 
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
         View v = inflater.inflate(R.layout.fragment_map, container, false); 
    
         mMapView = (MapView) v.findViewById(R.id.map_park); 
         mMapView.onCreate(savedInstanceState); 
         mMapView.getMapAsync(this); 
    
         swt = (SwitchCompat) v.findViewById(R.id.switch_map_park); 
         swt.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
          @Override 
          public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
           if(isChecked){ 
            boolean success = mGoogleMap.setMapStyle(new MapStyleOptions(getResources() 
              .getString(R.string.style_json))); 
    
            if (!success) { 
             Log.e("TabFragmentMap", "Style parsing failed."); 
            } 
           }else{ 
            // What goes here? 
            mGoogleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 
           } 
          } 
         }); 
    
         return v; 
        } 
    
        @Override 
        public void onMapReady(GoogleMap googleMap) { 
         mGoogleMap = googleMap; 
         mGoogleMap.getUiSettings().setZoomControlsEnabled(true); 
         mGoogleMap.setBuildingsEnabled(true); 
         mGoogleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 
        } 
    
        @Override 
        public void onResume() { 
         super.onResume(); 
         mMapView.onResume(); 
        } 
    
        @Override 
        public void onPause() { 
         super.onPause(); 
         mMapView.onPause(); 
        } 
    
        @Override 
        public void onDestroy() { 
         super.onDestroy(); 
         mMapView.onDestroy(); 
        } 
    
        @Override 
        public void onSaveInstanceState(Bundle outState) { 
         super.onSaveInstanceState(outState); 
         mMapView.onSaveInstanceState(outState); 
        } 
    
        @Override 
        public void onLowMemory() { 
         super.onLowMemory(); 
         mMapView.onLowMemory(); 
        } 
    } 
    
  • 答えて

    1

    のコメントを解除する必要がありますパラメータを使用して、前述のスタイリングをクリアします(here)。

    以前のカスタムスタイルを消去するには、nullに設定します。

    だから、あなたのコードは次のように行く必要があります。

     @Override 
         public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
          if(isChecked){ 
           boolean success = mGoogleMap.setMapStyle(new MapStyleOptions(getResources() 
             .getString(R.string.style_json))); 
    
           if (!success) { 
            Log.e("TabFragmentMap", "Style parsing failed."); 
           } 
          }else{ 
           boolean success = mGoogleMap.setMapStyle(null); 
    
           if (!success) { 
            Log.e("TabFragmentMap", "Removing style failed."); 
           } 
          } 
         } 
    

    ます。また、バック両方のあなたのif (!success)条件では、直前のチェック状態にSwitchを返し、彼らが理解できるように、ユーザーにToastを示すべき何が起こっている。

    +0

    残念ながら、私は以前はWearablesで働いたことがありません。 – MohanadMohie

    -1

    この部分の他に:あなたはnullsetMapStyleを使用する必要がありながら

      if(isChecked){ 
           boolean success = mGoogleMap.setMapStyle(new MapStyleOptions(getResources() 
             .getString(R.string.style_json))); 
    
           if (!success) { 
            Log.e("TabFragmentMap", "Style parsing failed."); 
           } 
          }else{ 
           // What goes here? 
           // mGoogleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 
          } 
    

    あなたはsetMapTypeを使用している、それをあなたのelseコードで

      else { 
           // What goes here? 
           mGoogleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 
          } 
    
    +0

    最初はコメントが外されましたが、それでも動作しません。 – MacaronLover

    +0

    次に、他のものを見てください:ブール値成功= mGoogleMap.setMapStyle(新しいMapStyleOptions(getResources() .getString(R.string.style_json)));活性化されているため、その反対はelseステートメントでnoにする必要があります – lawonga

    関連する問題