Çözümüm: GoogleMap'ten yeni anlık görüntü arayüzünü kullanın ve sayfayı kaydırırken haritanın anlık görüntüsünü görüntüleyin.
İşte anlık görüntüyü ayarlamak için kodum (bu, FragmentMap.java adı verilen haritayla aynı parçada):
public void setSnapshot(int visibility) {
switch(visibility) {
case View.GONE:
if(mapFragment.getView().getVisibility() == View.VISIBLE) {
getMap().snapshot(new SnapshotReadyCallback() {
@Override
public void onSnapshotReady(Bitmap arg0) {
iv.setImageBitmap(arg0);
}
});
iv.setVisibility(View.VISIBLE);
mapFragment.getView().setVisibility(View.GONE);
}
break;
case View.VISIBLE:
if(mapFragment.getView().getVisibility() == View.GONE) {
mapFragment.getView().setVisibility(View.VISIBLE);
iv.setVisibility(View.GONE);
}
break;
}
}
Burada "mapFragment", SupportedMapFragment'ım ve "iv" bir ImageView'dur (bunu match_parent yapın).
Ve burada parşömeni kontrol ediyorum:
pager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if(position == 0 && positionOffsetPixels > 0 || position == 1 && positionOffsetPixels > 0) {
((FragmentMap)adapter.getRegisteredFragment(1)).setSnapshot(View.GONE);
} else if(position == 1 && positionOffsetPixels == 0) {
((FragmentMap)adapter.getRegisteredFragment(1)).setSnapshot(View.VISIBLE);
}
}
@Override
public void onPageScrollStateChanged(int arg0) {}
@Override
public void onPageSelected(int arg0) {}
});
Haritalı parçam (FragmentMap) konum 1'de, bu nedenle kaydırmayı 0'dan 1'e ve 1'den 2'ye (ilk if cümlesi) kontrol etmem gerekiyor. "getRegisteredFragment ()", özel FragmentPagerAdapter ürünümdeki bir işlevdir ve burada "registeredFragments" adında bir SparseArray (Fragment) bulunur.
Böylece, haritanıza her kaydırdığınızda veya haritadan her zaman bir anlık görüntüsünü görürsünüz. Bu benim için çok iyi çalışıyor.