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;