1

Ich versuche, meine Kartenansicht auf den normalen Stil zurückzusetzen, wenn ich den Schalter innerhalb meines Fragments auf die OFF-Position drücke, aber es funktioniert nicht. Das folgende ist das, was während des Prozesses auftritt, die ich bin vor:MapView kehrt nicht in den Normalzustand zurück, nachdem ich auf den Umschalter geklickt habe

  1. Fragment (containg MAP) und Schalter erschien
  2. blätterte Schalter auf Position
  3. Stil Karte erschien
  4. blätterte Schalter in AUS-Stellung
  5. mit mGoogleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); aber die Karte bleibt nach wie vor fest auf dem Stil ma
  6. Karte nicht

ich habe versucht, ändern Ich sehe, wenn ich den Schalter umlege. Ich bin mir nicht wirklich sicher, was falsch gelaufen ist. Was muss getan werden, um dieses Problem zu lösen?

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

Antwort

1

In Ihrem else Code Kommentar-, Sie verwenden setMapType während Sie setMapStyle mit einem null verwenden sollten Parameter, um das zuvor eingestellte Styling zu löschen, wie erwähnt here.

Auf Null setzen, um vorherige benutzerdefinierte Stile zu löschen.

So sollte der Code wie folgt gehen:

 @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."); 
       } 
      } 
     } 

Sie auch die Switch zurück auf seine früheren Überprüfungsstatus in beide if (!success) Bedingungen zurückgeben sollte und eine Toast den Benutzern zeigen, damit sie verstehen können was ist los.

+0

Leider habe ich noch nie mit Wearables gearbeitet. – MohanadMohie

-1

Die sonst dieses Teils:

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

Sie müssen es

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

Das war in erster Linie unkommentiert, aber es funktioniert immer noch nicht. – MacaronLover

+0

Nun schauen Sie sich die andere Sache an: boolean success = mGoogleMap.setMapStyle (neue MapStyleOptions (getResources() . GetString (R.string.style_json))); ist aktiviert, das Gegenteil davon muss in der else-Anweisung nicht gehen – lawonga

Verwandte Themen