SORU
3 Aralık 2012, PAZARTESİ


CameraUpdateFactory ile moveCamera.newLatLngBounds çöküyor

Android Google Maps API yeni kullanımı yapıyorum.

Bir MapFragment içeren bir aktivite oluşturmak. Etkinlik onResume ben GoogleMap içine işaretleri ve tüm işaretler içeren harita için sınırlama kutusu tanımlamak set nesne.

Bu aşağıdaki sahte kod kullanıyor:

LatLngBounds.Builder builder = new LatLngBounds.Builder();
while(data) {
   LatLng latlng = getPosition();
   builder.include(latlng);
}
CameraUpdate cameraUpdate = CameraUpdateFactory
   .newLatLngBounds(builder.build(), 10);
map.moveCamera(cameraUpdate);

5* *çağrı başvurum ile aşağıdaki yığın çökmesine neden olur:

Caused by: java.lang.IllegalStateException: 
    Map size should not be 0. Most likely, layout has not yet 

    at maps.am.r.b(Unknown Source)
    at maps.y.q.a(Unknown Source)
    at maps.y.au.a(Unknown Source)
    at maps.y.ae.moveCamera(Unknown Source)
    at com.google.android.gms.maps.internal.IGoogleMapDelegate$Stub
        .onTransact(IGoogleMapDelegate.java:83)
    at android.os.Binder.transact(Binder.java:310)
    at com.google.android.gms.maps.internal.IGoogleMapDelegate$a$a
        .moveCamera(Unknown Source)
    at com.google.android.gms.maps.GoogleMap.moveCamera(Unknown Source)
    at ShowMapActivity.drawMapMarkers(ShowMapActivity.java:91)
    at ShowMapActivity.onResume(ShowMapActivity.java:58)
    at android.app.Instrumentation
        .callActivityOnResume(Instrumentation.java:1185)
    at android.app.Activity.performResume(Activity.java:5182)
    at android.app.ActivityThread
        .performResumeActivity(ActivityThread.java:2732)

- newLatLngBounds() fabrika yöntemi yerine newLatLngZoom() yöntem kullanırsam o zaman aynı tuzağa oluşmaz.

onResume GoogleMap nesne üzerine işaretleri çizmek için en iyi yerdir veya işaretleri çizim ve kamera pozisyonu ayarını başka bir yerde olmalıyım?

CEVAP
10 Aralık 2012, PAZARTESİ


Basit kullanabilirsiniznewLatLngBoundsyöntemiOnCameraChangeListener. Hepsi mükemmel bir şekilde çalışıyor olacak ve ekran boyutu hesaplamak gerek yok. Bu olay, harita boyutu hesaplama sonra anladığım kadarıyla () oluşur.

Örnek:

map.setOnCameraChangeListener(new OnCameraChangeListener() {

    @Override
    public void onCameraChange(CameraPosition arg0) {
        // Move camera.
        map.moveCamera(CameraUpdateFactory.newLatLngBounds(builder.build(), 10));
        // Remove listener to prevent position reset on camera move.
        map.setOnCameraChangeListener(null);
    }
});

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Emotional Trancer

    Emotional Tr

    4 Mart 2010
  • Engadget

    Engadget

    18 EYLÜL 2006
  • Xbox

    Xbox

    1 Kasım 2005