2013-08-22 10 views
15

Piszę aplikację, która wykona 9 migawek mapy wokół obszaru, gdy użytkownik naciśnie przycisk.Wykryj, kiedy załadowałeś mapy z Androidem V2

W pętli, za pomocą tego, aby przenieść i zapisać:

map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(mStartLat + (mMultiOffsetX + mWidth), mStartLng + (mMultiOffsetY + mHeight)), mZoom)); 
map.snapshot(this); 

aw onSnapshotReady:

final String fileName = Environment.getExternalStorageDirectory().getAbsolutePath() + String.format("/test_maps/map_%f_%f.png", Double.valueOf(mStartLat + (mMultiOffsetX * mWidth)), Double.valueOf(mStartLng + (mMultiOffsetY * mHeight))); 
FileOutputStream fos = new FileOutputStream(new File(fileName)); 
bmp.compress(CompressFormat.PNG, 0, fos); 

Niestety mapa sporadycznie zakończeniu ładowania, gdy migawka jest podjęta, więc możesz skończyć z: Partially blurred map snapshot

Czy istnieje sposób na wykrycie lub ustawienie detektora po załadowaniu widoku mapy?

Odpowiedz

43

OnMapLoadedCallback nie ognia aż po płytki na mapie są ładowane. Wystrzeliwuje tylko raz, więc będziesz musiał zadzwonić dziewięć razy, aby zrobić dziewięć migawek.

Po uzyskaniu odwołania do mapy ustaw oddzwonienie.

mMap.setOnMapLoadedCallback(this); 

Po uruchomieniu zdarzenia onMapLoaded wykonaj migawkę.

@Override 
public void onMapLoaded() { 
if (mMap != null) { 
    mMap.snapshot(this); 
} 
} 

Zobacz dokumentację dla dalszych informacji: https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/GoogleMap.OnMapLoadedCallback

Good Luck

**** historia czeka na tę funkcję do realizacji.

Aktualizacje: Status: Fixed Etykiety: Fixed-Oct2013

Komentarz # 3 numerze 5779 przez schr ... @ google.com: Umiejętność być powiadomiony kiedy mapa jest w pełni załadowany/renderowane http://code.google.com/p/gmaps-api-issues/issues/detail?id=5779

Załadowany mapą interfejs wywołania zwrotnego został dodany w najnowszym wydaniu aplikacji Google Maps Android API v2.

Zobacz dokumentację dla dalszych informacji: https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/GoogleMap.OnMapLoadedCallback

Dzięki wszystkim za problem udziałem 5779 i 61675 Danny117

**** edit ****

Proszę gwiazda ten problem, jeśli Przyjdź tu. http://code.google.com/p/android/issues/detail?id=61675 Twoje kliknięcia gwiazdą będą motywować google do poruszania się w tym temacie.

Aktualizacja mapy 13 powoduje problem z usługami Google Play, więc nie można jeszcze korzystać z nowego OnMapLoadedCallback. Możesz go skompilować, ale interfejs API mapy generuje komunikat o błędzie w nieaktualnych usługach logcat Google Play.Wymaga 4030500, ale okazało 3266130

* edit * Nowy OnMapLoadedCallback

Aktualizacje: Status: Fixed Etykiety: Fixed-Oct2013

Komentarz # 3 numerze 5779 przez schr ... @ google.com: możliwość otrzymywania powiadomień o pełnym załadowaniu/renderowaniu mapy http://code.google.com/p/gmaps-api-issues/issues/detail?id=5779

Dodano interfejs wywołania zwrotnego z mapą w najnowszym wydaniu se Google Maps Android API v2.

Zobacz dokumentację dla dalszych informacji: https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/GoogleMap.OnMapLoadedCallback

Dzięki wszystkim za udziałem emisyjnej 5779. Danny117

**** jest przestarzała *****

Wygląda po jej czekanie na rozwiązanie aktualizacji. Kliknąłem na gwiazdę, ponieważ zamierzałem pracować nad tą funkcją na mojej własnej mapie api v2.

edycja *** To jest proponowane nowe wywołanie zwrotne dla odwzorowania mapy. Wszyscy, którzy odwiedzą witrynę, podążają za linkiem i zaznaczają ten numer gwiazdką. http://code.google.com/p/gmaps-api-issues/issues/detail?id=5779

*** poprzednie wywołanie zwrotne snapshop nie zostanie zmienione. Wszyscy, którzy odwiedzą witrynę, podążają za linkiem i zaznaczają ten numer gwiazdką. http://code.google.com/p/gmaps-api-issues/issues/detail?id=5712

https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/GoogleMap.SnapshotReadyCallback

1

Spróbuj użyć klasy ViewStub, aby pomóc w leniwym załadowaniu mapy. można wykryć, gdy mapa jest ładowany przy użyciu tego kodu:

public void onShowMap(View v) { 
    // where you put the MapView layout in ViewStub view 
    ViewStub.setVisibility(View.VISIBLE); 
} 
4

jak widziałem to pytanie wciąż nie został rozwiązany. Nie wiem dlaczego, ale dla mnie po zakończeniu ładowania mapy zostanie wywołany OnCameraChangeListener. Tak po prostu używam tego, aby wykryć, kiedy mapa się skończyła.

+0

Ta metoda wywołuje ruch kamery, a nie kiedy mapa jest całkowicie wyrenderowana. –

+0

Nieaktualna metoda: @Deprecated public final void setOnCameraChangeListener (final GoogleMap.OnCameraChangeListener var1) – JRichardsz

Powiązane problemy