Vervang getMap met getMapAsync

Ik wil vervangen de verouderde getMap Methode met getMapAsync, maar ik maakte geen gebruik MapFragment maar GoogleMap zoals deze:

private GoogleMap googleMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_map);

    try {
        if(googleMap == null) {
            googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
        }
        googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
        googleMap.setMyLocationEnabled(true);
        googleMap.setTrafficEnabled(true);
        googleMap.setIndoorEnabled(true);
        googleMap.setBuildingsEnabled(true);
        googleMap.getUiSettings().setZoomControlsEnabled(true);

Als ik vervang de googleMap met MapFragment als dit ik ben niet meer in staat om setMapType enzovoort. Dus hoe kan ik getMapAsync in mijn geval?

MapFragment mapFragment = (MapFragment) getFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
InformationsquelleAutor maidi | 2015-07-12



3 Replies
  1. 61

    als in de officiële doc, kaart async vereist een callback;
    het is er, je “main entry point” voor google maps spullen!

    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);
        }
    }
  2. 34

    Heel eenvoudig, gewoon dat uw Activiteiten de uitvoering van de OnMapReadyCallback interface, en vervolgens toewijzen aan uw googleMap verwijzing in de onMapReady() terugbellen.

    Dan, handelingen te verrichten op googleMap die u wilt.

    Hier is een eenvoudig voorbeeld:

    public class MainActivity extends Activity implements OnMapReadyCallback {
    
        private GoogleMap googleMap;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            MapFragment mapFragment = (MapFragment) getFragmentManager()
                    .findFragmentById(R.id.map);
    
            mapFragment.getMapAsync(this);
        }
    
        @Override
        public void onMapReady(GoogleMap map) {
    
            googleMap = map;
    
            setUpMap();
    
        }
    
        public void setUpMap(){
    
            googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
            googleMap.setMyLocationEnabled(true);
            googleMap.setTrafficEnabled(true);
            googleMap.setIndoorEnabled(true);
            googleMap.setBuildingsEnabled(true);
            googleMap.getUiSettings().setZoomControlsEnabled(true);
        }
    
    
    }
  3. 2

    Als u gebruik MapFragment u kunt nog steeds gebruik maken van stMapType methode. Implementeren OnMapReadyCallback op uw activiteit.
    Maak MapFragment en bellen getAsyncMap methode op dat object.
    Het zal u vragen om inplement onMapReady(GoogleMap kaart) methode hier kunt u de kaart type, enzovoort.
    Hoop dat het helpt.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *