web-dev-qa-db-fra.com

onMapReady n'appelle pas même si la carte est affichée sans erreur

J'essaie d'afficher une carte simple à l'aide de Google Map API v2 dans une application Android. Je suis la Map API Documentation instructions. Mais je pense que la onMapReady n'appelle pas pour une raison quelconque. J'utilise google-play-services_lib version 6587000. Mon téléphone a google-play-services_lib verion 6587038, je crois.

Google map fonctionne avec les contrôles initiaux. Quelqu'un peut-il m'aider à corriger cette erreur?

public class MapDisplay extends FragmentActivity
implements OnMapReadyCallback {

private GoogleMap mMap;
private Location mCurrentLocation;
private MarkerOptions mMarkerOptions ;
    private MapFragment mMapFragment;

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

    /** not needed
            mMapFragment = MapFragment.newInstance();
            FragmentTransaction fragmentTransaction =
                    getFragmentManag

er().beginTransaction();
            fragmentTransaction.add(R.id.map, mMapFragment);
            fragmentTransaction.commit();*/

    /**corrected code*/
            MapFragment mapFragment = (MapFragment) getFragmentManager()
                    .findFragmentById(R.id.map);
                mapFragment.getMapAsync(this);

}


@Override
public void onMapReady(GoogleMap map) {

    toast("Map ready");
    Log.d("--***** MAP  ","::Map ready");

    LatLng sydney = new LatLng(-33.867, 151.206);

    map.setMyLocationEnabled(true);
    map.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 13));

    map.addMarker(new MarkerOptions()
            .title("Sydney")
            .snippet("The most populous city in Australia.")
            .position(sydney));


    }

 private void toast(String text){
        Toast toast = Toast.makeText(this, text, Toast.LENGTH_SHORT);
        toast.show();
     }

   }

fichier location_map.xml

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:name="com.google.Android.gms.maps.MapFragment"
    Android:id="@+id/map"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"/>
34
SAN

Autant que je sache, onMapReady() est déclenché par un appel à getMapAsync() sur votre MapFragment et je ne vois pas où vous appelez cela.

68
CommonsWare

Pour appeler OnMapReady(GoogleMap map), ajoutez ce qui suit à votre méthode onCreate(...):

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

puis ajouter: 

// This calls OnMapReady(..). (Asynchronously)
mapFragment.getMapAsync(MapDisplay.this); 
11
Abhinav Puri

Ajouter:

mMap = map

ci-dessus onMapReady