29

Bir Android uygulamasında Google map API v2 kullanarak basit bir harita görüntülemeye çalışıyorum. Map API Documentation talimatlarını takip ediyorum. Ama bence onMapReady nedenini aramıyor. google-play-services_lib sürüm 6587000 kullanıyorum. Telefonumun google-play-services_lib sürümü 6587038 olduğuna inanıyorum.onMapHerhangi bir hata olmadan harita görüntülemiyorsa bile arama yapılmıyor

Google harita ilk kontrollerle çalışıyor. Birisi bu hatayı düzeltmeme yardımcı olabilir mi?

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 dosyası

<?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"/> 

cevap

61

AFAIK, onMapReady() senin MapFragment üzerinde getMapAsync() çağrısıyla tetiklenir ve o aradığınız yere görmüyorum. OnMapReady(GoogleMap map) aramak için

+1

Eklendi getMapAsync(). şimdi onMapReady çalışıyor. – SAN

+1

@SAN: "getMapAsync() atma ve hata" - o zaman belki de orada yaşadığınız herhangi bir sorunla ilgili yardım almak için bir Yığın Taşması sorusu sormayı düşünmelisiniz. "Yani kullanmak zorundaydım" - yani? AFAIK, hala getMapAsync() 'yi çağırmanız gerekiyor. Dahası, şimdi * iki * MapFragment 'örneğiniz var. Statik bir 'MapFragment 'ile getMapAsync()' kullanımını gösteren örnek bir proje: https://github.com/commonsguy/cw-omnibus/tree/master/MapsV2/NooYawk – CommonsWare

+1

Bazıları için yararlı olacaktır Başka bir deyişle, Nepster

10

, sizin onCreate(...) yöntemine aşağıdaki ekleyin:

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

sonra ekleyin:

// This calls OnMapReady(..). (Asynchronously) 
mapFragment.getMapAsync(MapDisplay.this); 
+0

Benim gibi birden fazla dersiniz olması durumunda MapDisplay.this argümanında dikkat edin. Dersi adlandırmak daha güvenli. – FlorianB

İlgili konular