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

  • ArkticPlanet

    ArkticPlanet

    9 ŞUBAT 2010
  • HER0R

    HER0R

    16 Aralık 2007
  • humanHardDrive

    humanHardDri

    16 Mart 2011