@Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); zoomlevel = worldMap.getCameraPosition().zoom; outState.putFloat("zoom", zoomlevel); outState.putBoolean("loaded", loaded); outState.putDouble("lat", currentLat); outState.putDouble("lng", currentLng); if (loaded) dataRestorer.saveData(outState); outState.putString("redo", fileToReload); }
@Override public void onConnected(Bundle bundle) { worldMap.clear(); filePaths = new HashMap<Marker, String>(); tempFilePaths = new HashMap<MyItem, String>(); icons = new HashMap<MyItem, Bitmap>(); manager = new ClusterManager<MyItem>(this, worldMap) { @Override public void onInfoWindowClick(Marker marker) { super.onInfoWindowClick(marker); marker.hideInfoWindow(); currentLat = marker.getPosition().latitude; currentLng = marker.getPosition().longitude; startEditActivity(filePaths.get(marker)); } }; manager.setRenderer(new MyClusterRenderer(this, worldMap, manager)); if (!loaded) { PictureLoader loader = new PictureLoader(this); loader.execute(); } else { // an Async task actually slows the loading! The loading is almost instantaneous. // Reloader reloader = new Reloader(); // reloader.execute(); ArrayList<String> files = dataRestorer.getFiles(); ArrayList<Bitmap> bits = dataRestorer.getBitmaps(); ArrayList<Float> lats = dataRestorer.getLats(); ArrayList<Float> lngs = dataRestorer.getLngs(); for (int i = 0; i < files.size(); i++) { Bitmap bitmap = bits.get(i); if (fileToReload != null && files.get(i).equals(fileToReload)) { Bitmap bmp = BitmapFactory.decodeFile(fileToReload); bitmap = Bitmap.createScaledBitmap( bmp, (int) (((float) bmp.getWidth() / bmp.getHeight()) * 50), 50, false); dataRestorer.replaceBitmap(i, bitmap); } MyItem item = new MyItem(lats.get(i), lngs.get(i)); tempFilePaths.put(item, files.get(i)); icons.put(item, bitmap); manager.addItem(item); } } worldMap.setOnCameraChangeListener(manager); worldMap.setOnMarkerClickListener(manager); worldMap.setOnInfoWindowClickListener(manager); manager.setOnClusterClickListener(this); manager.setOnClusterItemClickListener(this); /* enable MyLocation layer to show the current location as a blue dot */ worldMap.setMyLocationEnabled(true); zoomToCurrentLocation(); worldMap.setInfoWindowAdapter(new CustomInfoWindowAdapter()); }