it-swarm.com.ru

onMapReady не вызывает, хотя карта отображается без каких-либо ошибок

Я пытаюсь отобразить простую карту с помощью Google map API v2 в приложении для Android. Я следую инструкциям Map API Documentation . Но я думаю, что onMapReady не вызывает по какой-то причине. Я использую google-play-services_lib версию 6587000. В моем телефоне есть google-play-services_lib verion 6587038, я полагаю.

Карта Google работает с начальным контролем. Может кто-нибудь помочь мне исправить эту ошибку?

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

   }

файл 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() вызывается вызовом getMapAsync() на вашей MapFragment, и я не вижу, откуда вы это звоните.

68
CommonsWare

Чтобы вызвать OnMapReady(GoogleMap map), добавьте следующее к своему onCreate(...) методу:

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

затем добавьте: 

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

Добавлять:

mMap = map

выше onMapReady

0
gianpaul ramirez pacheco