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

    주석을 제거하기 위해, 당신은 setMapType를 사용하고 필요 매개 변수를 사용하여 이전에 설정 한 스타일링을 지우십시오 (here).

    이전 사용자 정의 스타일을 지우려면 null로 설정하십시오. 그들이 이해할 수 있도록 사용자에게 Toast

     @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을 반환해야하고 보여

    그래서, 코드는 다음과 같이 가야한다 무슨 일이야.

    +0

    불행히도, 나는 전에 Wearables에서 일한 적이 없습니다. – MohanadMohie

    -1

    이 부분의 다른 : 당신은 null으로 setMapStyle을 사용해야 동안

      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); 
          } 
    

    당신은 당신의 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