android: remove MapActivity

- see vtm-android-start for an example use of MapView
- add MapPreferences

- update android-start
- android-example: use appcompat actionbar
This commit is contained in:
Hannes Janetzek
2014-10-20 05:14:00 +02:00
parent 0c5a7e7aa6
commit b1cfdfd454
15 changed files with 197 additions and 187 deletions

View File

@@ -15,8 +15,8 @@
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name">
<!-- android:theme="@style/AppTheme" -->
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="org.oscim.android.test.Samples"
android:label="@string/app_name" >

View File

@@ -26,7 +26,7 @@
android:id="@+id/controls"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#cc000000"
android:background="#ccdddddd"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingRight="10dp"

View File

@@ -1,5 +1,5 @@
<resources>
<style name="AppTheme" parent="android:Theme.Holo.Light.NoActionBar" />
<style name="AppTheme" parent="Theme.AppCompat.Light" />
</resources>

View File

@@ -16,8 +16,6 @@
*/
package org.oscim.android.test;
import org.oscim.android.MapActivity;
import org.oscim.android.MapView;
import org.oscim.android.cache.TileCache;
import org.oscim.core.MapPosition;
import org.oscim.layers.TileGridLayer;
@@ -37,30 +35,22 @@ public class BaseMapActivity extends MapActivity {
final static boolean USE_CACHE = true;
MapView mMapView;
VectorTileLayer mBaseLayer;
TileSource mTileSource;
TileGridLayer mGridLayer;
private TileCache mCache;
protected final int mContentView;
public BaseMapActivity(int contentView) {
mContentView = contentView;
super(contentView);
}
public BaseMapActivity() {
this(R.layout.activity_map);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(mContentView);
mMapView = (MapView) findViewById(R.id.mapView);
registerMapView(mMapView);
mTileSource = new OSciMap4TileSource();
@@ -76,7 +66,6 @@ public class BaseMapActivity extends MapActivity {
mMap.getMapPosition(pos);
if (pos.x == 0.5 && pos.y == 0.5)
mMap.setMapPosition(53.08, 8.83, Math.pow(2, 16));
}
@Override
@@ -88,7 +77,7 @@ public class BaseMapActivity extends MapActivity {
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.theme_default:

View File

@@ -14,8 +14,6 @@
*/
package org.oscim.android.test;
import org.oscim.android.MapActivity;
import org.oscim.android.MapView;
import org.oscim.android.cache.TileCache;
import org.oscim.backend.canvas.Color;
import org.oscim.core.MapPosition;
@@ -23,44 +21,51 @@ import org.oscim.core.MercatorProjection;
import org.oscim.layers.TileGridLayer;
import org.oscim.layers.tile.bitmap.BitmapTileLayer;
import org.oscim.renderer.MapRenderer;
import org.oscim.tiling.TileSource;
import org.oscim.tiling.source.bitmap.BitmapTileSource;
import org.oscim.tiling.source.bitmap.DefaultSources;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import android.os.Bundle;
public class BitmapTileMapActivity extends MapActivity {
static final Logger log = LoggerFactory.getLogger(BitmapTileMapActivity.class);
private final static boolean USE_CACHE = true;
private final TileSource mTileSource;
private final BitmapTileSource mTileSource;
protected BitmapTileLayer mBitmapLayer;
public BitmapTileMapActivity() {
//mTileSource = DefaultSources.STAMEN_TONER.build();
mTileSource = DefaultSources.OPENSTREETMAP.build();
this(DefaultSources.OPENSTREETMAP.build());
}
public BitmapTileMapActivity(TileSource tileSource) {
public BitmapTileMapActivity(BitmapTileSource tileSource) {
super(R.layout.activity_map);
mTileSource = tileSource;
}
MapView mMapView;
private TileCache mCache;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
mMapView = (MapView) findViewById(R.id.mapView);
registerMapView(mMapView);
MapRenderer.setBackgroundColor(0xff777777);
mMap.layers().add(new TileGridLayer(mMap, Color.GRAY, 1.8f, 8));
if (mTileSource == null)
return;
if (USE_CACHE) {
mCache = new TileCache(this, null, mTileSource.getClass().getSimpleName());
String cacheFile = mTileSource.getUrl()
.toString()
.replaceFirst("https?://", "")
.replaceAll("/", "-");
log.debug("use bitmap cache {}", cacheFile);
mCache = new TileCache(this, null, cacheFile);
mCache.setCacheSize(512 * (1 << 10));
mTileSource.setCache(mCache);
}
@@ -74,7 +79,7 @@ public class BitmapTileMapActivity extends MapActivity {
@Override
protected void onDestroy() {
super.onDestroy();
if (USE_CACHE)
if (mCache != null)
mCache.dispose();
}

View File

@@ -0,0 +1,53 @@
package org.oscim.android.test;
import org.oscim.android.MapPreferences;
import org.oscim.android.MapView;
import org.oscim.map.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
public abstract class MapActivity extends ActionBarActivity {
public static final Logger log = LoggerFactory.getLogger(MapActivity.class);
MapView mMapView;
Map mMap;
MapPreferences mPrefs;
protected final int mContentView;
public MapActivity(int contentView) {
mContentView = contentView;
}
public MapActivity() {
this(R.layout.activity_map);
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(mContentView);
mMapView = (MapView) findViewById(R.id.mapView);
mMap = mMapView.map();
mPrefs = new MapPreferences(MapActivity.class.getName(), this);
}
@Override
protected void onResume() {
super.onResume();
mPrefs.load(mMapView.map());
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
mMapView.onPause();
mPrefs.save(mMapView.map());
}
}

View File

@@ -14,7 +14,6 @@
*/
package org.oscim.android.test;
import org.oscim.android.MapActivity;
import org.oscim.android.MapView;
import org.oscim.android.filepicker.FilePicker;
import org.oscim.android.filepicker.FilterByFileExtension;
@@ -42,10 +41,6 @@ public class MapsforgeMapActivity extends MapActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
mMapView = (MapView) findViewById(R.id.mapView);
registerMapView(mMapView);
startActivityForResult(new Intent(this, MapFilePicker.class),
SELECT_MAP_FILE);
@@ -65,7 +60,7 @@ public class MapsforgeMapActivity extends MapActivity {
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.theme_default:

View File

@@ -84,7 +84,14 @@ public class MarkerOverlayActivity extends BitmapTileMapActivity
markerLayer.addItems(pts);
mMap.layers().add(new TileGridLayer(mMap));
mMap.setMapPosition(0, 0, 1);
}
@Override
protected void onResume() {
super.onResume();
/* ignore saved position */
mMap.setMapPosition(0, 0, 1 << 2);
mMapView.onResume();
}
@Override

View File

@@ -16,7 +16,6 @@ package org.oscim.android.test;
import static org.oscim.tiling.source.bitmap.DefaultSources.STAMEN_TONER;
import org.oscim.android.MapActivity;
import org.oscim.android.MapView;
import org.oscim.layers.TileGridLayer;
import org.oscim.layers.tile.bitmap.BitmapTileLayer;
@@ -43,10 +42,6 @@ public class OsmJsonMapActivity extends MapActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
mMapView = (MapView) findViewById(R.id.mapView);
registerMapView(mMapView);
mTileSource = new OsmWaterJsonTileSource();

View File

@@ -41,11 +41,17 @@ public class PathOverlayActivity extends BitmapTileMapActivity {
createLayers(1, true);
mMap.setMapPosition(0, 0, 1 << 2);
looooop();
}
@Override
protected void onResume() {
super.onResume();
/* ignore saved position */
mMap.setMapPosition(0, 0, 1 << 2);
mMapView.onResume();
}
void looooop() {
mMap.postDelayed(new Runnable() {
@Override

View File

@@ -21,7 +21,6 @@ import org.oscim.core.MercatorProjection;
import org.oscim.layers.tile.buildings.BuildingLayer;
import org.oscim.layers.tile.vector.labeling.LabelLayer;
import org.oscim.map.Layers;
import org.oscim.map.Map;
import org.oscim.theme.IRenderTheme;
import org.oscim.theme.ThemeLoader;
import org.oscim.theme.VtmThemes;
@@ -33,14 +32,13 @@ public class SimpleMapActivity extends BaseMapActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Map m = this.map();
Layers layers = mMap.layers();
layers.add(new BuildingLayer(mMap, mBaseLayer));
layers.add(new LabelLayer(mMap, mBaseLayer));
layers.add(new MapScaleBar(mMapView));
m.setTheme(VtmThemes.DEFAULT);
mMap.setTheme(VtmThemes.DEFAULT);
}
void runTheMonkey() {