wake-up-neo.net

onMapReady ruft nicht auf, obwohl die Karte fehlerfrei angezeigt wird

Ich versuche, eine einfache Karte mit Google Map API v2 in einer Android-Anwendung anzuzeigen. Ich befolge die Map API Documentation Anweisungen. Ich denke jedoch, dass onMapReady aus irgendeinem Grund nicht aufgerufen wird. Ich verwende google-play-services_lib Version 6587000. Mein Telefon hat google-play-services_lib verion 6587038, glaube ich.

Google Map arbeitet mit ersten Kontrollen. Kann mir jemand helfen, diesen Fehler zu korrigieren?

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

   }

datei 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

AFAIK, onMapReady() wird durch einen Aufruf von getMapAsync() an Ihrer MapFragment ausgelöst, und ich sehe nicht, wo Sie das aufrufen.

68
CommonsWare

Um OnMapReady(GoogleMap map) aufzurufen, hängen Sie Folgendes an Ihre onCreate(...)-Methode an:

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

dann füge hinzu: 

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

Hinzufügen:

mMap = map

oben onMapReady