2016-07-23 17 views
0

Ich verwende Google Maps auf meiner Android App. Bevor ein gradle die neue Version von Google Play-Dienste mit dem folgenden Code arbeitet, um das Fragment zu erhalten:Google Maps .getMap() veraltet

GoogleMap googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 

Da ich auf die Version 9.2.1 aktualisiert, die .getMap() rot ist (veraltet). Gibt es eine neue Praxis, das Fragment zu deklarieren?

Vielen Dank für jede Antwort?

Antwort

4

Sie sollten getMap() durch getMapAsync() ersetzen.

Laut dem offiziellen Dokument, Get Map Async erfordert einen Rückruf und das ist, wo Sie google maps Sachen tun. Sehen Sie sich das folgende Snippet an.

public class MapPane extends Activity implements OnMapReadyCallback { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.map_activity); 

    MapFragment mapFragment = (MapFragment) getFragmentManager() 
      .findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 
} 

@Override 
public void onMapReady(GoogleMap map) { 
//DO WHATEVER YOU WANT WITH GOOGLEMAP 
map.setMapType(GoogleMap.MAP_TYPE_HYBRID); 
     map.setMyLocationEnabled(true); 
     map.setTrafficEnabled(true); 
     map.setIndoorEnabled(true); 
     map.setBuildingsEnabled(true); 
     map.getUiSettings().setZoomControlsEnabled(true); 
    } 
} 

Hoffe das hilft Ihnen.

+0

Vielen Dank. Es klappt! –

1

getMapAsync() sieht gut aus. Sie müssten Ihre Implementierung jedoch anpassen. Der Anruf ist asynchron und Sie haben die Karte nicht sofort. Auf der anderen Seite haben Sie keine Probleme, da die Karte nicht geladen wird, wenn Sie sie benutzen.