private void onFilterChanged(GalleryFilterParameter filter) { if (filter != null) { this.mFilter = filter; mMap.defineNavigation(this.mFilter, null, ZoomUtil.NO_ZOOM, null); } }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); Intent intent = this.getIntent(); GeoPointDto geoPointFromIntent = getGeoPointDtoFromIntent(intent); // no geo: from intent: use last used value mSaveLastUsedGeoToSharedPrefs = (geoPointFromIntent == null); String lastGeoUri = sharedPref.getString(STATE_LAST_GEO, "geo:53,8?z=6"); IGeoPointInfo lastGeo = mGeoUriParser.fromUri(lastGeoUri); if ((geoPointFromIntent != null) && (lastGeo != null)) { // apply default values if part is missing if (Double.isNaN(geoPointFromIntent.getLongitude())) geoPointFromIntent.setLongitude(lastGeo.getLongitude()); if (Double.isNaN(geoPointFromIntent.getLatitude())) geoPointFromIntent.setLatitude(lastGeo.getLatitude()); if (geoPointFromIntent.getZoomMin() == IGeoPointInfo.NO_ZOOM) geoPointFromIntent.setZoomMin(lastGeo.getZoomMin()); } IGeoPointInfo initalZoom = (mSaveLastUsedGeoToSharedPrefs) ? lastGeo : geoPointFromIntent; String extraTitle = intent.getStringExtra(EXTRA_TITLE); if (extraTitle == null && (geoPointFromIntent == null)) { extraTitle = getString(R.string.app_map_title); } if (extraTitle == null) { this.requestWindowFeature(Window.FEATURE_NO_TITLE); } setContentView(R.layout.activity_map_geo_picker); if (extraTitle != null) { this.setTitle(extraTitle); } else { setNoTitle(); } mMap = (PickerLocationMapFragment) getFragmentManager().findFragmentById(R.id.fragment_map); mMap.STATE_LAST_VIEWPORT = "ignore"; // do not use last viewport in settings GeoRectangle rectangle = null; int zoom = ZoomUtil.NO_ZOOM; if ((savedInstanceState == null) && (initalZoom != null)) { rectangle = new GeoRectangle(); zoom = initalZoom.getZoomMin(); rectangle.setLogituedMin(initalZoom.getLongitude()).setLatitudeMin(initalZoom.getLatitude()); rectangle.setLogituedMax(initalZoom.getLongitude()).setLatitudeMax(initalZoom.getLatitude()); } // else (savedInstanceState != null) restore after rotation. fragment takes care of restoring // map pos String selectedItemsString = intent.getStringExtra(EXTRA_SELECTED_ITEMS); SelectedItems selectedItems = (selectedItemsString != null) ? new SelectedItems().parse(selectedItemsString) : null; String filter = null; // for debugging: where does the filter come from String dbgFilter = null; if (intent != null) { filter = intent.getStringExtra(EXTRA_FILTER); } this.mSaveLastUsedFilterToSharedPrefs = (filter == null); // false if controlled via intent if (savedInstanceState != null) { filter = savedInstanceState.getString(STATE_Filter); if (filter != null) dbgFilter = "filter from savedInstanceState=" + filter; } if (this.mSaveLastUsedFilterToSharedPrefs) { filter = sharedPref.getString(STATE_Filter, null); if (filter != null) dbgFilter = "filter from sharedPref=" + filter; } this.mFilter = new GalleryFilterParameter(); if (filter != null) { GalleryFilterParameter.parse(filter, this.mFilter); } if (Global.debugEnabled) { Log.i(Global.LOG_CONTEXT, debugPrefix + dbgFilter + " => " + this.mFilter); } mMap.defineNavigation(this.mFilter, geoPointFromIntent, rectangle, zoom, selectedItems); }