- get rid of some osmdroid cruft

- move default marker to 'res'
This commit is contained in:
Hannes Janetzek 2013-03-11 02:22:46 +01:00
parent ebcd923025
commit 449b2b4709
12 changed files with 12 additions and 382 deletions

1
res/.gitignore vendored
View File

@ -1 +0,0 @@
!.gitignore

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

Before

Width:  |  Height:  |  Size: 664 B

After

Width:  |  Height:  |  Size: 664 B

BIN
res/drawable/pin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -1,174 +0,0 @@
/*
* Copyright 2012 osmdroid
* Copyright 2013 Hannes Janetzek
*
* This program is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.oscim.overlay;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.DisplayMetrics;
public class DefaultResourceProxyImpl implements ResourceProxy, MapViewConstants {
// private static final String TAG = DefaultResourceProxyImpl.class.getSimpleName();
private DisplayMetrics mDisplayMetrics;
/**
* Constructor.
*
* @param pContext
* Used to get the display metrics that are used for scaling the
* bitmaps returned by {@@link getBitmap}. Can be null,
* in which case the bitmaps are not scaled.
*/
public DefaultResourceProxyImpl(final Context pContext) {
if (pContext != null) {
mDisplayMetrics = pContext.getResources().getDisplayMetrics();
// if (DEBUGMODE) {
// logger.debug("mDisplayMetrics=" + mDisplayMetrics);
// }
}
}
@Override
public String getString(final string pResId) {
switch (pResId) {
case mapnik:
return "Mapnik";
case cyclemap:
return "Cycle Map";
case public_transport:
return "Public transport";
case base:
return "OSM base layer";
case topo:
return "Topographic";
case hills:
return "Hills";
case cloudmade_standard:
return "CloudMade (Standard tiles)";
case cloudmade_small:
return "CloudMade (small tiles)";
case mapquest_osm:
return "Mapquest";
case mapquest_aerial:
return "Mapquest Aerial";
case bing:
return "Bing";
case fiets_nl:
return "OpenFietsKaart overlay";
case base_nl:
return "Netherlands base overlay";
case roads_nl:
return "Netherlands roads overlay";
case unknown:
return "Unknown";
case format_distance_meters:
return "%s m";
case format_distance_kilometers:
return "%s km";
case format_distance_miles:
return "%s mi";
case format_distance_nautical_miles:
return "%s nm";
case format_distance_feet:
return "%s ft";
case online_mode:
return "Online mode";
case offline_mode:
return "Offline mode";
case my_location:
return "My location";
case compass:
return "Compass";
case map_mode:
return "Map mode";
default:
throw new IllegalArgumentException();
}
}
@Override
public String getString(final string pResId, final Object... formatArgs) {
return String.format(getString(pResId), formatArgs);
}
@Override
public Bitmap getBitmap(final bitmap pResId) {
InputStream is = null;
try {
final String resName = pResId.name() + ".png";
is = getClass().getResourceAsStream(resName);
if (is == null) {
throw new IllegalArgumentException("Resource not found: " + resName);
}
BitmapFactory.Options options = null;
if (mDisplayMetrics != null) {
options = getBitmapOptions();
}
return BitmapFactory.decodeStream(is, null, options);
} catch (final OutOfMemoryError e) {
// logger.error("OutOfMemoryError getting bitmap resource: " +
// pResId);
System.gc();
// there's not much we can do here
// - when we load a bitmap from resources we expect it to be found
throw e;
} finally {
if (is != null) {
try {
is.close();
} catch (final IOException ignore) {
}
}
}
}
private BitmapFactory.Options getBitmapOptions() {
try {
final Field density = DisplayMetrics.class.getDeclaredField("DENSITY_DEFAULT");
final Field inDensity = BitmapFactory.Options.class.getDeclaredField("inDensity");
final Field inTargetDensity = BitmapFactory.Options.class
.getDeclaredField("inTargetDensity");
final Field targetDensity = DisplayMetrics.class.getDeclaredField("densityDpi");
final BitmapFactory.Options options = new BitmapFactory.Options();
inDensity.setInt(options, density.getInt(null));
inTargetDensity.setInt(options, targetDensity.getInt(mDisplayMetrics));
return options;
} catch (final IllegalAccessException ex) {
// ignore
} catch (final NoSuchFieldException ex) {
// ignore
}
return null;
}
@Override
public Drawable getDrawable(final bitmap pResId) {
return new BitmapDrawable(getBitmap(pResId));
}
@Override
public float getDisplayMetricsDensity() {
return mDisplayMetrics.density;
}
}

View File

@ -17,8 +17,8 @@ package org.oscim.overlay;
import java.util.List; import java.util.List;
import org.oscim.app.R;
import org.oscim.core.MercatorProjection; import org.oscim.core.MercatorProjection;
import org.oscim.overlay.ResourceProxy.bitmap;
import org.oscim.view.MapView; import org.oscim.view.MapView;
import org.oscim.view.MapViewPosition; import org.oscim.view.MapViewPosition;
@ -42,35 +42,22 @@ public class ItemizedIconOverlay<Item extends OverlayItem> extends ItemizedOverl
final MapView mapView, final MapView mapView,
final List<Item> pList, final List<Item> pList,
final Drawable pDefaultMarker, final Drawable pDefaultMarker,
final ItemizedIconOverlay.OnItemGestureListener<Item> pOnItemGestureListener, final ItemizedIconOverlay.OnItemGestureListener<Item> pOnItemGestureListener) {
final ResourceProxy pResourceProxy) {
super(mapView, pDefaultMarker, pResourceProxy); super(mapView, pDefaultMarker);
this.mItemList = pList; this.mItemList = pList;
this.mOnItemGestureListener = pOnItemGestureListener; this.mOnItemGestureListener = pOnItemGestureListener;
populate(); populate();
} }
public ItemizedIconOverlay(
final MapView mapView,
final List<Item> pList,
final ItemizedIconOverlay.OnItemGestureListener<Item> pOnItemGestureListener,
final ResourceProxy pResourceProxy) {
this(mapView, pList, pResourceProxy.getDrawable(bitmap.marker_default),
pOnItemGestureListener,
pResourceProxy);
}
public ItemizedIconOverlay( public ItemizedIconOverlay(
final MapView mapView, final MapView mapView,
final Context pContext, final Context pContext,
final List<Item> pList, final List<Item> pList,
final ItemizedIconOverlay.OnItemGestureListener<Item> pOnItemGestureListener) { final ItemizedIconOverlay.OnItemGestureListener<Item> pOnItemGestureListener) {
this(mapView, pList, new DefaultResourceProxyImpl(pContext) this(mapView, pList, pContext.getResources().getDrawable(R.drawable.marker_default),
.getDrawable(bitmap.marker_default), pOnItemGestureListener);
pOnItemGestureListener, new DefaultResourceProxyImpl(pContext));
} }
@Override @Override

View File

@ -84,7 +84,7 @@ public abstract class ItemizedOverlay<Item extends OverlayItem> extends Overlay
// note: this is called from GL-Thread. so check your syncs! // note: this is called from GL-Thread. so check your syncs!
@Override @Override
public synchronized void update(MapPosition curPos, public synchronized void update(MapPosition curPos,
boolean positionChanged, boolean positionChanged,
boolean tilesChanged) { boolean tilesChanged) {
@ -236,10 +236,9 @@ public abstract class ItemizedOverlay<Item extends OverlayItem> extends Overlay
*/ */
public abstract int size(); public abstract int size();
public ItemizedOverlay(MapView mapView, final Drawable pDefaultMarker, final ResourceProxy public ItemizedOverlay(MapView mapView, final Drawable pDefaultMarker) {
pResourceProxy) {
super(pResourceProxy); super();
if (pDefaultMarker == null) { if (pDefaultMarker == null) {
throw new IllegalArgumentException("You must pass a default marker to ItemizedOverlay."); throw new IllegalArgumentException("You must pass a default marker to ItemizedOverlay.");
@ -247,8 +246,6 @@ public abstract class ItemizedOverlay<Item extends OverlayItem> extends Overlay
this.mDefaultMarker = pDefaultMarker; this.mDefaultMarker = pDefaultMarker;
// mInternalItemList = new ArrayList<Item>();
mMapView = mapView; mMapView = mapView;
mLayer = new ItemOverlay(mapView); mLayer = new ItemOverlay(mapView);

View File

@ -1,51 +0,0 @@
/*
* Copyright 2012 osmdroid
* Copyright 2013 Hannes Janetzek
*
* This program is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
// Created by plusminus on 18:00:24 - 25.09.2008
package org.oscim.overlay;
/**
* This class contains constants used by the map view.
*
* @author Nicolas Gramlich
*/
public interface MapViewConstants {
// ===========================================================
// Final Fields
// ===========================================================
public static final boolean DEBUGMODE = false;
public static final int NOT_SET = Integer.MIN_VALUE;
public static final int ANIMATION_SMOOTHNESS_LOW = 4;
public static final int ANIMATION_SMOOTHNESS_DEFAULT = 10;
public static final int ANIMATION_SMOOTHNESS_HIGH = 20;
public static final int ANIMATION_DURATION_SHORT = 500;
public static final int ANIMATION_DURATION_DEFAULT = 1000;
public static final int ANIMATION_DURATION_LONG = 2000;
/** Minimum Zoom Level */
public static final int MINIMUM_ZOOMLEVEL = 0;
/**
* Maximum Zoom Level - we use Integers to store zoom levels so overflow
* happens at 2^32 - 1,
* but we also have a tile size that is typically 2^8, so (32-1)-8-1 = 22
*/
public static final int MAXIMUM_ZOOMLEVEL = 22;
}

View File

@ -23,7 +23,6 @@ import org.oscim.core.MapPosition;
import org.oscim.renderer.overlays.RenderOverlay; import org.oscim.renderer.overlays.RenderOverlay;
import org.oscim.view.MapView; import org.oscim.view.MapView;
import android.content.Context;
import android.graphics.Point; import android.graphics.Point;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.MotionEvent; import android.view.MotionEvent;
@ -39,7 +38,7 @@ import android.view.MotionEvent;
* *
* @author Nicolas Gramlich * @author Nicolas Gramlich
*/ */
public abstract class Overlay implements OverlayConstants { public abstract class Overlay {
// =========================================================== // ===========================================================
// Constants // Constants
@ -55,8 +54,8 @@ public abstract class Overlay implements OverlayConstants {
// Fields // Fields
// =========================================================== // ===========================================================
protected final ResourceProxy mResourceProxy; //protected final ResourceProxy mResourceProxy;
protected final float mScale; //protected final float mScale;
// private static final Rect mRect = new Rect(); // private static final Rect mRect = new Rect();
private boolean mEnabled = true; private boolean mEnabled = true;
@ -72,20 +71,6 @@ public abstract class Overlay implements OverlayConstants {
// =========================================================== // ===========================================================
public Overlay() { public Overlay() {
mResourceProxy = null;
mScale = 1;
// mResourceProxy = new DefaultResourceProxyImpl(ctx);
// mScale = ctx.getResources().getDisplayMetrics().density;
}
public Overlay(final Context ctx) {
mResourceProxy = new DefaultResourceProxyImpl(ctx);
mScale = ctx.getResources().getDisplayMetrics().density;
}
public Overlay(final ResourceProxy pResourceProxy) {
mResourceProxy = pResourceProxy;
mScale = mResourceProxy.getDisplayMetricsDensity();
} }
// =========================================================== // ===========================================================

View File

@ -1,31 +0,0 @@
/*
* Copyright 2012 osmdroid
* Copyright 2013 Hannes Janetzek
*
* This program is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.oscim.overlay;
/**
* This class contains constants used by the overlays.
*/
public interface OverlayConstants {
// ===========================================================
// Final Fields
// ===========================================================
public static final boolean DEBUGMODE = false;
public static final int NOT_SET = Integer.MIN_VALUE;
public static final int DEFAULT_ZOOMLEVEL_MINIMAP_DIFFERENCE = 3;
}

View File

@ -163,7 +163,7 @@ public class PathOverlay extends Overlay {
} }
public PathOverlay(MapView mapView, final int color, final Context ctx) { public PathOverlay(MapView mapView, final int color, final Context ctx) {
super(ctx); super();
this.mPaint.setColor(color); this.mPaint.setColor(color);
this.mPaint.setStrokeWidth(2.0f); this.mPaint.setStrokeWidth(2.0f);
this.mPaint.setStyle(Paint.Style.STROKE); this.mPaint.setStyle(Paint.Style.STROKE);

View File

@ -1,82 +0,0 @@
/*
* Copyright 2012 osmdroid
* Copyright 2013 Hannes Janetzek
*
* This program is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.oscim.overlay;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
public interface ResourceProxy {
public static enum string {
// tile sources
mapnik, cyclemap, public_transport, base, topo, hills, cloudmade_small, cloudmade_standard, mapquest_osm, mapquest_aerial, bing,
// overlays
fiets_nl, base_nl, roads_nl,
// other stuff
unknown, format_distance_meters, format_distance_kilometers, format_distance_miles, format_distance_nautical_miles, format_distance_feet, online_mode, offline_mode, my_location, compass, map_mode,
}
public static enum bitmap {
/**
* For testing - the image doesn't exist.
*/
unknown,
center, direction_arrow, marker_default, marker_default_focused_base, navto_small, next, previous, person,
/**
* Menu icons
*/
ic_menu_offline, ic_menu_mylocation, ic_menu_compass, ic_menu_mapmode
}
String getString(string pResId);
/**
* Use a string resource as a format definition, and format using the
* supplied format arguments.
*
* @param pResId
* ...
* @param formatArgs
* ...
* @return ...
*/
String getString(string pResId, Object... formatArgs);
Bitmap getBitmap(bitmap pResId);
/**
* Get a bitmap as a {@link Drawable}
*
* @param pResId
* ...
* @return ...
*/
Drawable getDrawable(bitmap pResId);
/**
* Gets the density from the current screen's DisplayMetrics
*
* @return the screen's density
*/
float getDisplayMetricsDensity();
}