diff --git a/src/org/oscim/view/MapEventLayer.java b/src/org/oscim/layers/MapEventLayer.java similarity index 98% rename from src/org/oscim/view/MapEventLayer.java rename to src/org/oscim/layers/MapEventLayer.java index 7065eee5..2c260137 100644 --- a/src/org/oscim/view/MapEventLayer.java +++ b/src/org/oscim/layers/MapEventLayer.java @@ -12,10 +12,11 @@ * You should have received a copy of the GNU Lesser General Public License along with * this program. If not, see . */ -package org.oscim.view; +package org.oscim.layers; import org.oscim.core.Tile; -import org.oscim.layers.InputLayer; +import org.oscim.view.MapView; +import org.oscim.view.MapViewPosition; import android.util.Log; import android.view.MotionEvent; diff --git a/src/org/oscim/overlay/BuildingOverlay.java b/src/org/oscim/layers/overlay/BuildingOverlay.java similarity index 99% rename from src/org/oscim/overlay/BuildingOverlay.java rename to src/org/oscim/layers/overlay/BuildingOverlay.java index b352532e..f55c1cd1 100644 --- a/src/org/oscim/overlay/BuildingOverlay.java +++ b/src/org/oscim/layers/overlay/BuildingOverlay.java @@ -12,7 +12,7 @@ * You should have received a copy of the GNU Lesser General Public License along with * this program. If not, see . */ -package org.oscim.overlay; +package org.oscim.layers.overlay; import org.oscim.core.MapPosition; import org.oscim.renderer.overlays.ExtrusionOverlay; diff --git a/src/org/oscim/overlay/GenericOverlay.java b/src/org/oscim/layers/overlay/GenericOverlay.java similarity index 96% rename from src/org/oscim/overlay/GenericOverlay.java rename to src/org/oscim/layers/overlay/GenericOverlay.java index 0148ad5f..ab2a676e 100644 --- a/src/org/oscim/overlay/GenericOverlay.java +++ b/src/org/oscim/layers/overlay/GenericOverlay.java @@ -12,7 +12,7 @@ * You should have received a copy of the GNU Lesser General Public License along with * this program. If not, see . */ -package org.oscim.overlay; +package org.oscim.layers.overlay; import org.oscim.renderer.RenderLayer; import org.oscim.view.MapView; diff --git a/src/org/oscim/overlay/ItemizedIconOverlay.java b/src/org/oscim/layers/overlay/ItemizedIconOverlay.java similarity index 96% rename from src/org/oscim/overlay/ItemizedIconOverlay.java rename to src/org/oscim/layers/overlay/ItemizedIconOverlay.java index dc8769a7..7649aa3a 100644 --- a/src/org/oscim/overlay/ItemizedIconOverlay.java +++ b/src/org/oscim/layers/overlay/ItemizedIconOverlay.java @@ -13,7 +13,7 @@ * You should have received a copy of the GNU Lesser General Public License along with * this program. If not, see . */ -package org.oscim.overlay; +package org.oscim.layers.overlay; import java.util.List; diff --git a/src/org/oscim/overlay/ItemizedOverlay.java b/src/org/oscim/layers/overlay/ItemizedOverlay.java similarity index 95% rename from src/org/oscim/overlay/ItemizedOverlay.java rename to src/org/oscim/layers/overlay/ItemizedOverlay.java index 39bd187f..fc32d351 100644 --- a/src/org/oscim/overlay/ItemizedOverlay.java +++ b/src/org/oscim/layers/overlay/ItemizedOverlay.java @@ -14,7 +14,7 @@ * this program. If not, see . */ -package org.oscim.overlay; +package org.oscim.layers.overlay; // TODO // - need to sort items back to front for rendering @@ -25,7 +25,7 @@ import org.oscim.core.MapPosition; import org.oscim.core.MercatorProjection; import org.oscim.core.PointD; import org.oscim.core.Tile; -import org.oscim.overlay.OverlayItem.HotspotPlace; +import org.oscim.layers.overlay.OverlayItem.HotspotPlace; import org.oscim.renderer.GLRenderer.Matrices; import org.oscim.renderer.layer.SymbolLayer; import org.oscim.renderer.overlays.BasicOverlay; diff --git a/src/org/oscim/overlay/LabelingOverlay.java b/src/org/oscim/layers/overlay/LabelingOverlay.java similarity index 98% rename from src/org/oscim/overlay/LabelingOverlay.java rename to src/org/oscim/layers/overlay/LabelingOverlay.java index 52057dba..d93b28b0 100644 --- a/src/org/oscim/overlay/LabelingOverlay.java +++ b/src/org/oscim/layers/overlay/LabelingOverlay.java @@ -12,7 +12,7 @@ * You should have received a copy of the GNU Lesser General Public License along with * this program. If not, see . */ -package org.oscim.overlay; +package org.oscim.layers.overlay; import org.oscim.layers.tile.TileRenderLayer; import org.oscim.renderer.overlays.TextOverlay; diff --git a/src/org/oscim/overlay/Overlay.java b/src/org/oscim/layers/overlay/Overlay.java similarity index 96% rename from src/org/oscim/overlay/Overlay.java rename to src/org/oscim/layers/overlay/Overlay.java index 2286e6f8..157fc3bf 100644 --- a/src/org/oscim/overlay/Overlay.java +++ b/src/org/oscim/layers/overlay/Overlay.java @@ -14,7 +14,7 @@ * this program. If not, see . */ -package org.oscim.overlay; +package org.oscim.layers.overlay; import org.oscim.core.PointF; import org.oscim.layers.InputLayer; diff --git a/src/org/oscim/overlay/OverlayItem.java b/src/org/oscim/layers/overlay/OverlayItem.java similarity index 96% rename from src/org/oscim/overlay/OverlayItem.java rename to src/org/oscim/layers/overlay/OverlayItem.java index a3361b44..bba4292f 100644 --- a/src/org/oscim/overlay/OverlayItem.java +++ b/src/org/oscim/layers/overlay/OverlayItem.java @@ -15,7 +15,7 @@ */ // Created by plusminus on 00:02:58 - 03.10.2008 -package org.oscim.overlay; +package org.oscim.layers.overlay; import org.oscim.core.GeoPoint; diff --git a/src/org/oscim/overlay/PathOverlay.java b/src/org/oscim/layers/overlay/PathOverlay.java similarity index 99% rename from src/org/oscim/overlay/PathOverlay.java rename to src/org/oscim/layers/overlay/PathOverlay.java index 154b51e7..be829f02 100644 --- a/src/org/oscim/overlay/PathOverlay.java +++ b/src/org/oscim/layers/overlay/PathOverlay.java @@ -14,7 +14,7 @@ * this program. If not, see . */ -package org.oscim.overlay; +package org.oscim.layers.overlay; import java.util.ArrayList; import java.util.List; diff --git a/src/org/oscim/overlay/MapScaleBar.java b/src/org/oscim/overlay/MapScaleBar.java deleted file mode 100644 index 140ab258..00000000 --- a/src/org/oscim/overlay/MapScaleBar.java +++ /dev/null @@ -1,281 +0,0 @@ -/* - * Copyright 2010, 2011, 2012 mapsforge.org - * 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 . - */ -package org.oscim.overlay; - -import java.util.HashMap; -import java.util.Map; - -import org.oscim.core.MapPosition; -import org.oscim.layers.Layer; -import org.oscim.view.MapView; - -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Paint; -import android.graphics.Typeface; - -/** - * A MapScaleBar displays the ratio of a distance on the map to the - * corresponding distance on the ground. - */ -public class MapScaleBar extends Layer { - /** - * Enumeration of all text fields. - */ - public enum TextField { - /** - * Unit symbol for one foot. - */ - FOOT, - - /** - * Unit symbol for one kilometer. - */ - KILOMETER, - - /** - * Unit symbol for one meter. - */ - METER, - - /** - * Unit symbol for one mile. - */ - MILE; - } - - private static final int BITMAP_HEIGHT = 32; - private static final int BITMAP_WIDTH = 128; - private static final double LATITUDE_REDRAW_THRESHOLD = 0.2; - private static final int MARGIN_BOTTOM = 5; - private static final int MARGIN_LEFT = 5; - private static final double METER_FOOT_RATIO = 0.3048; - private static final int ONE_KILOMETER = 1000; - private static final int ONE_MILE = 5280; - private static final Paint SCALE_BAR = new Paint(Paint.ANTI_ALIAS_FLAG); - private static final Paint SCALE_BAR_STROKE = new Paint(Paint.ANTI_ALIAS_FLAG); - private static final int[] SCALE_BAR_VALUES_IMPERIAL = { 26400000, 10560000, 5280000, - 2640000, 1056000, 528000, - 264000, 105600, 52800, 26400, 10560, 5280, 2000, 1000, 500, 200, 100, 50, 20, - 10, 5, 2, 1 }; - private static final int[] SCALE_BAR_VALUES_METRIC = { 10000000, 5000000, 2000000, - 1000000, 500000, 200000, 100000, - 50000, 20000, 10000, 5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 5, 2, 1 }; - private static final Paint SCALE_TEXT = new Paint(Paint.ANTI_ALIAS_FLAG); - private static final Paint SCALE_TEXT_STROKE = new Paint(Paint.ANTI_ALIAS_FLAG); - - private static void configurePaints() { - SCALE_BAR.setStrokeWidth(2); - SCALE_BAR.setStrokeCap(Paint.Cap.SQUARE); - SCALE_BAR.setColor(Color.BLACK); - SCALE_BAR_STROKE.setStrokeWidth(5); - SCALE_BAR_STROKE.setStrokeCap(Paint.Cap.SQUARE); - SCALE_BAR_STROKE.setColor(Color.WHITE); - - SCALE_TEXT.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD)); - SCALE_TEXT.setTextSize(17); - SCALE_TEXT.setColor(Color.BLACK); - SCALE_TEXT_STROKE.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD)); - SCALE_TEXT_STROKE.setStyle(Paint.Style.STROKE); - SCALE_TEXT_STROKE.setColor(Color.WHITE); - SCALE_TEXT_STROKE.setStrokeWidth(2); - SCALE_TEXT_STROKE.setTextSize(17); - } - - private boolean mImperialUnits; - private MapPosition mMapPosition; - private final Bitmap mMapScaleBitmap; - private final Canvas mMapScaleCanvas; - private final MapView mMapView; - private boolean mRedrawNeeded; - private boolean mShowMapScaleBar; - private final Map mTextFields; - - public MapScaleBar(MapView mapView) { - super(mapView); - - mMapView = mapView; - mMapScaleBitmap = Bitmap.createBitmap(BITMAP_WIDTH, BITMAP_HEIGHT, - Bitmap.Config.ARGB_8888); - mMapScaleCanvas = new Canvas(mMapScaleBitmap); - mTextFields = new HashMap(); - setDefaultTexts(); - configurePaints(); - } - - /** - * @return true if imperial units are used, false otherwise. - */ - public boolean isImperialUnits() { - return mImperialUnits; - } - - /** - * @return true if this map scale bar is visible, false otherwise. - */ - public boolean isShowMapScaleBar() { - return mShowMapScaleBar; - } - - /** - * @param imperialUnits - * true if imperial units should be used rather than metric - * units. - */ - public void setImperialUnits(boolean imperialUnits) { - mImperialUnits = imperialUnits; - mRedrawNeeded = true; - } - - /** - * @param showMapScaleBar - * true if the map scale bar should be drawn, false otherwise. - */ - public void setShowMapScaleBar(boolean showMapScaleBar) { - mShowMapScaleBar = showMapScaleBar; - } - - /** - * Overrides the specified text field with the given string. - * - * @param textField - * the text field to override. - * @param value - * the new value of the text field. - */ - public void setText(TextField textField, String value) { - mTextFields.put(textField, value); - mRedrawNeeded = true; - } - - private void drawScaleBar(float scaleBarLength, Paint paint) { - mMapScaleCanvas.drawLine(7, 25, scaleBarLength + 3, 25, paint); - mMapScaleCanvas.drawLine(5, 10, 5, 40, paint); - mMapScaleCanvas.drawLine(scaleBarLength + 5, 10, scaleBarLength + 5, 40, paint); - } - - private void drawScaleText(int scaleValue, String unitSymbol, Paint paint) { - mMapScaleCanvas.drawText(scaleValue + unitSymbol, 12, 18, paint); - } - - private boolean isRedrawNecessary() { - if (mRedrawNeeded || mMapPosition == null) { - return true; - } - -// MapPosition mapPosition = mMapView.getMapPosition().getMapPosition(); -// -// if (mapPosition.zoomLevel != mMapPosition.zoomLevel) { -// return true; -// } - -// double latitudeDiff = Math.abs(mapPosition.lat -// - mMapPosition.lat); -// if (latitudeDiff > LATITUDE_REDRAW_THRESHOLD) { -// return true; -// } - - return false; - } - - /** - * Redraws the map scale bitmap with the given parameters. - * - * @param scaleBarLength - * the length of the map scale bar in pixels. - * @param mapScaleValue - * the map scale value in meters. - */ - private void redrawMapScaleBitmap(float scaleBarLength, int mapScaleValue) { - mMapScaleBitmap.eraseColor(Color.TRANSPARENT); - - // draw the scale bar - drawScaleBar(scaleBarLength, SCALE_BAR_STROKE); - drawScaleBar(scaleBarLength, SCALE_BAR); - - int scaleValue; - String unitSymbol; - if (mImperialUnits) { - if (mapScaleValue < ONE_MILE) { - scaleValue = mapScaleValue; - unitSymbol = mTextFields.get(TextField.FOOT); - } else { - scaleValue = mapScaleValue / ONE_MILE; - unitSymbol = mTextFields.get(TextField.MILE); - } - } else { - if (mapScaleValue < ONE_KILOMETER) { - scaleValue = mapScaleValue; - unitSymbol = mTextFields.get(TextField.METER); - } else { - scaleValue = mapScaleValue / ONE_KILOMETER; - unitSymbol = mTextFields.get(TextField.KILOMETER); - } - } - - // draw the scale text - drawScaleText(scaleValue, unitSymbol, SCALE_TEXT_STROKE); - drawScaleText(scaleValue, unitSymbol, SCALE_TEXT); - } - - private void setDefaultTexts() { - mTextFields.put(TextField.FOOT, " ft"); - mTextFields.put(TextField.MILE, " mi"); - - mTextFields.put(TextField.METER, " m"); - mTextFields.put(TextField.KILOMETER, " km"); - } - - - void draw(Canvas canvas) { - int top = mMapView.getHeight() - BITMAP_HEIGHT - MARGIN_BOTTOM; - canvas.drawBitmap(mMapScaleBitmap, MARGIN_LEFT, top, null); - } - - void redrawScaleBar() { - if (!isRedrawNecessary()) { - return; - } - -// mMapPosition = mMapView.getMapPosition().getMapPosition(); -// double groundResolution = MercatorProjection.calculateGroundResolution( -// mMapPosition.lat, -// mMapPosition.zoomLevel); -// -// int[] scaleBarValues; -// if (mImperialUnits) { -// groundResolution = groundResolution / METER_FOOT_RATIO; -// scaleBarValues = SCALE_BAR_VALUES_IMPERIAL; -// } else { -// scaleBarValues = SCALE_BAR_VALUES_METRIC; -// } -// -// float scaleBarLength = 0; -// int mapScaleValue = 0; -// -// for (int i = 0; i < scaleBarValues.length; ++i) { -// mapScaleValue = scaleBarValues[i]; -// scaleBarLength = mapScaleValue / (float) groundResolution; -// if (scaleBarLength < (BITMAP_WIDTH - 10)) { -// break; -// } -// } -// -// redrawMapScaleBitmap(scaleBarLength, mapScaleValue); - mRedrawNeeded = false; - } -} diff --git a/src/org/oscim/view/LayerManager.java b/src/org/oscim/view/LayerManager.java index 4e57dae4..fc3f68c3 100644 --- a/src/org/oscim/view/LayerManager.java +++ b/src/org/oscim/view/LayerManager.java @@ -23,7 +23,7 @@ import org.oscim.core.MapPosition; import org.oscim.core.PointF; import org.oscim.layers.InputLayer; import org.oscim.layers.Layer; -import org.oscim.overlay.Overlay.Snappable; +import org.oscim.layers.overlay.Overlay.Snappable; import org.oscim.renderer.RenderLayer; import android.content.Context; diff --git a/src/org/oscim/view/MapView.java b/src/org/oscim/view/MapView.java index 329ec44d..70208a19 100644 --- a/src/org/oscim/view/MapView.java +++ b/src/org/oscim/view/MapView.java @@ -23,12 +23,13 @@ import org.oscim.core.MapPosition; import org.oscim.core.Tile; import org.oscim.database.MapOptions; import org.oscim.layers.Layer; -import org.oscim.layers.tile.BitmapTileLayer; -import org.oscim.layers.tile.MapTileLayer; -import org.oscim.layers.tile.MapTileLoader; -import org.oscim.overlay.BuildingOverlay; -import org.oscim.overlay.LabelingOverlay; -import org.oscim.overlay.Overlay; +import org.oscim.layers.MapEventLayer; +import org.oscim.layers.overlay.BuildingOverlay; +import org.oscim.layers.overlay.LabelingOverlay; +import org.oscim.layers.overlay.Overlay; +import org.oscim.layers.tile.bitmap.BitmapTileLayer; +import org.oscim.layers.tile.vector.MapTileLayer; +import org.oscim.layers.tile.vector.MapTileLoader; import org.oscim.renderer.GLView; import android.content.Context;