cleanups
This commit is contained in:
@@ -14,13 +14,10 @@
|
||||
*/
|
||||
package org.mapsforge.android;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* A simple DTO to stores flags for debugging rendered map tiles.
|
||||
*/
|
||||
public class DebugSettings implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
public class DebugSettings {
|
||||
|
||||
/**
|
||||
* True if drawing of tile coordinates is enabled, false otherwise.
|
||||
@@ -47,7 +44,8 @@ public class DebugSettings implements Serializable {
|
||||
* @param disablePolygons
|
||||
* if highlighting of water tiles is enabled.
|
||||
*/
|
||||
public DebugSettings(boolean drawTileCoordinates, boolean drawTileFrames, boolean disablePolygons) {
|
||||
public DebugSettings(boolean drawTileCoordinates, boolean drawTileFrames,
|
||||
boolean disablePolygons) {
|
||||
mDrawTileCoordinates = drawTileCoordinates;
|
||||
mDrawTileFrames = drawTileFrames;
|
||||
mDisablePolygons = disablePolygons;
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
*/
|
||||
package org.mapsforge.android;
|
||||
|
||||
import org.mapsforge.android.mapgenerator.MapGenerator;
|
||||
import org.mapsforge.core.GeoPoint;
|
||||
import org.mapsforge.core.MapPosition;
|
||||
|
||||
@@ -64,10 +63,7 @@ public abstract class MapActivity extends Activity {
|
||||
MODE_PRIVATE);
|
||||
if (containsMapViewPosition(sharedPreferences)) {
|
||||
|
||||
MapGenerator mapGenerator = mapView.getMapGenerator();
|
||||
|
||||
if (!mapGenerator.requiresInternetConnection()
|
||||
&& sharedPreferences.contains(KEY_MAP_FILE)) {
|
||||
if (sharedPreferences.contains(KEY_MAP_FILE)) {
|
||||
// get and set the map file
|
||||
mapView.setMapFile(sharedPreferences.getString(KEY_MAP_FILE, null));
|
||||
}
|
||||
@@ -106,8 +102,7 @@ public abstract class MapActivity extends Activity {
|
||||
editor.putInt(KEY_ZOOM_LEVEL, mapPosition.zoomLevel);
|
||||
}
|
||||
|
||||
if (!mMapView.getMapGenerator().requiresInternetConnection()
|
||||
&& mMapView.getMapFile() != null) {
|
||||
if (mMapView.getMapFile() != null) {
|
||||
// save the map file
|
||||
editor.putString(KEY_MAP_FILE, mMapView.getMapFile());
|
||||
}
|
||||
|
||||
@@ -17,13 +17,13 @@ package org.mapsforge.android;
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
|
||||
import org.mapsforge.android.inputhandling.TouchHandler;
|
||||
import org.mapsforge.android.input.TouchHandler;
|
||||
import org.mapsforge.android.mapgenerator.IMapGenerator;
|
||||
import org.mapsforge.android.mapgenerator.JobParameters;
|
||||
import org.mapsforge.android.mapgenerator.JobQueue;
|
||||
import org.mapsforge.android.mapgenerator.JobTheme;
|
||||
import org.mapsforge.android.mapgenerator.MapDatabaseFactory;
|
||||
import org.mapsforge.android.mapgenerator.MapDatabaseInternal;
|
||||
import org.mapsforge.android.mapgenerator.MapGenerator;
|
||||
import org.mapsforge.android.mapgenerator.MapGeneratorFactory;
|
||||
import org.mapsforge.android.mapgenerator.MapGeneratorInternal;
|
||||
import org.mapsforge.android.mapgenerator.MapWorker;
|
||||
@@ -49,7 +49,8 @@ import android.view.MotionEvent;
|
||||
* <p>
|
||||
* This implementation supports offline map rendering as well as downloading map images (tiles) over an Internet
|
||||
* connection. The operation mode of a MapView can be set in the constructor and changed at runtime with the
|
||||
* {@link #setMapGeneratorInternal(MapGenerator)} method. Some MapView parameters depend on the selected operation mode.
|
||||
* {@link #setMapGeneratorInternal(IMapGenerator)} method. Some MapView parameters depend on the selected operation
|
||||
* mode.
|
||||
* <p>
|
||||
* In offline rendering mode a special database file is required which contains the map data. Map files can be stored in
|
||||
* any folder. The current map file is set by calling {@link #setMapFile(String)}. To retrieve the current
|
||||
@@ -79,7 +80,7 @@ public class MapView extends GLSurfaceView {
|
||||
private final TouchHandler mTouchEventHandler;
|
||||
|
||||
private IMapDatabase mMapDatabase;
|
||||
private MapGenerator mMapGenerator;
|
||||
private IMapGenerator mMapGenerator;
|
||||
private MapRenderer mMapRenderer;
|
||||
private JobQueue mJobQueue;
|
||||
private MapWorker mMapWorker;
|
||||
@@ -121,13 +122,13 @@ public class MapView extends GLSurfaceView {
|
||||
* @throws IllegalArgumentException
|
||||
* if the context object is not an instance of {@link MapActivity} .
|
||||
*/
|
||||
public MapView(Context context, MapGenerator mapGenerator) {
|
||||
public MapView(Context context, IMapGenerator mapGenerator) {
|
||||
this(context, null, mapGenerator, MapDatabaseFactory
|
||||
.createMapDatabase(MapDatabaseInternal.MAP_READER));
|
||||
}
|
||||
|
||||
private MapView(Context context, AttributeSet attributeSet,
|
||||
MapGenerator mapGenerator, IMapDatabase mapDatabase) {
|
||||
IMapGenerator mapGenerator, IMapDatabase mapDatabase) {
|
||||
|
||||
super(context, attributeSet);
|
||||
|
||||
@@ -147,9 +148,8 @@ public class MapView extends GLSurfaceView {
|
||||
mMapController = new MapController(this);
|
||||
|
||||
// mMapDatabase = MapDatabaseFactory.createMapDatabase(MapDatabaseInternal.POSTGIS_READER);
|
||||
// mMapDatabase = MapDatabaseFactory.createMapDatabase(MapDatabaseInternal.JSON_READER);
|
||||
mMapDatabase = mapDatabase;
|
||||
// MapDatabaseFactory
|
||||
// .createMapDatabase(MapDatabaseInternal.MAP_READER);
|
||||
|
||||
mMapViewPosition = new MapViewPosition(this);
|
||||
mMapScaleBar = new MapScaleBar(this);
|
||||
@@ -212,32 +212,22 @@ public class MapView extends GLSurfaceView {
|
||||
|
||||
/**
|
||||
* @return the map database which is used for reading map files.
|
||||
* @throws UnsupportedOperationException
|
||||
* if the current MapGenerator works with an Internet connection.
|
||||
*/
|
||||
public IMapDatabase getMapDatabase() {
|
||||
if (mMapGenerator.requiresInternetConnection()) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
return mMapDatabase;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the currently used map file.
|
||||
* @throws UnsupportedOperationException
|
||||
* if the current MapGenerator mode works with an Internet connection.
|
||||
*/
|
||||
public String getMapFile() {
|
||||
if (mMapGenerator.requiresInternetConnection()) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
return mMapFile;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the currently used MapGenerator (may be null).
|
||||
*/
|
||||
public MapGenerator getMapGenerator() {
|
||||
public IMapGenerator getMapGenerator() {
|
||||
return mMapGenerator;
|
||||
}
|
||||
|
||||
@@ -359,24 +349,12 @@ public class MapView extends GLSurfaceView {
|
||||
* @param mapFile
|
||||
* the path to the map file.
|
||||
* @return true if the map file was set correctly, false otherwise.
|
||||
* @throws UnsupportedOperationException
|
||||
* if the current MapGenerator mode works with an Internet connection.
|
||||
*/
|
||||
public boolean setMapFile(String mapFile) {
|
||||
FileOpenResult fileOpenResult = null;
|
||||
|
||||
if (mMapGenerator.requiresInternetConnection()) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
Log.d(TAG, "set mapfile " + mapFile);
|
||||
// if (mapFile == null) {
|
||||
// if (mMapDatabase instanceof org.mapsforge.database.postgis.MapDatabase) {
|
||||
// fileOpenResult = mMapDatabase.openFile(null);
|
||||
// } else {
|
||||
// // no map file specified
|
||||
// return false;
|
||||
// }
|
||||
// } else
|
||||
|
||||
if (mapFile != null && mapFile.equals(mMapFile)) {
|
||||
// same map file as before
|
||||
return false;
|
||||
@@ -419,9 +397,10 @@ public class MapView extends GLSurfaceView {
|
||||
Log.d(TAG, "mapfile set");
|
||||
return true;
|
||||
}
|
||||
|
||||
mMapFile = null;
|
||||
// clearAndRedrawMapView();
|
||||
Log.d(TAG, "loading mapfile failed");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -431,7 +410,7 @@ public class MapView extends GLSurfaceView {
|
||||
* @param mapGenerator
|
||||
* the new MapGenerator.
|
||||
*/
|
||||
public void setMapGenerator(MapGenerator mapGenerator) {
|
||||
public void setMapGenerator(IMapGenerator mapGenerator) {
|
||||
|
||||
if (mMapGenerator != mapGenerator) {
|
||||
setMapGeneratorInternal(mapGenerator);
|
||||
@@ -440,7 +419,7 @@ public class MapView extends GLSurfaceView {
|
||||
}
|
||||
}
|
||||
|
||||
private void setMapGeneratorInternal(MapGenerator mapGenerator) {
|
||||
private void setMapGeneratorInternal(IMapGenerator mapGenerator) {
|
||||
if (mapGenerator == null) {
|
||||
throw new IllegalArgumentException("mapGenerator must not be null");
|
||||
}
|
||||
@@ -504,15 +483,12 @@ public class MapView extends GLSurfaceView {
|
||||
* the internal rendering theme.
|
||||
* @throws IllegalArgumentException
|
||||
* if the supplied internalRenderTheme is null.
|
||||
* @throws UnsupportedOperationException
|
||||
* if the current MapGenerator does not support render themes.
|
||||
*/
|
||||
public void setRenderTheme(InternalRenderTheme internalRenderTheme) {
|
||||
if (internalRenderTheme == null) {
|
||||
throw new IllegalArgumentException("render theme must not be null");
|
||||
} else if (mMapGenerator.requiresInternetConnection()) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
Log.d(TAG, "set rendertheme " + internalRenderTheme);
|
||||
mJobParameters = new JobParameters(internalRenderTheme, mJobParameters.textScale);
|
||||
|
||||
@@ -526,16 +502,12 @@ public class MapView extends GLSurfaceView {
|
||||
* the path to the XML file which defines the rendering theme.
|
||||
* @throws IllegalArgumentException
|
||||
* if the supplied internalRenderTheme is null.
|
||||
* @throws UnsupportedOperationException
|
||||
* if the current MapGenerator does not support render themes.
|
||||
* @throws FileNotFoundException
|
||||
* if the supplied file does not exist, is a directory or cannot be read.
|
||||
*/
|
||||
public void setRenderTheme(String renderThemePath) throws FileNotFoundException {
|
||||
if (renderThemePath == null) {
|
||||
throw new IllegalArgumentException("render theme path must not be null");
|
||||
} else if (mMapGenerator.requiresInternetConnection()) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
JobTheme jobTheme = new ExternalRenderTheme(renderThemePath);
|
||||
@@ -650,10 +622,9 @@ public class MapView extends GLSurfaceView {
|
||||
boolean hasValidCenter() {
|
||||
if (!mMapViewPosition.isValid()) {
|
||||
return false;
|
||||
} else if (!mMapGenerator.requiresInternetConnection()
|
||||
&& (!mMapDatabase.hasOpenFile() || !mMapDatabase.getMapFileInfo().boundingBox
|
||||
.contains(getMapPosition()
|
||||
.getMapCenter()))) {
|
||||
} else if (!mMapDatabase.hasOpenFile()
|
||||
|| !mMapDatabase.getMapFileInfo().boundingBox.contains(getMapPosition()
|
||||
.getMapCenter())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
*/
|
||||
package org.mapsforge.android;
|
||||
|
||||
import org.mapsforge.android.mapgenerator.MapGenerator;
|
||||
import org.mapsforge.android.mapgenerator.IMapGenerator;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Handler;
|
||||
@@ -179,7 +179,7 @@ public class MapZoomControls {
|
||||
/**
|
||||
* Sets the maximum zoom level of the map.
|
||||
* <p>
|
||||
* The maximum possible zoom level of the MapView depends also on the current {@link MapGenerator}. For example,
|
||||
* The maximum possible zoom level of the MapView depends also on the current {@link IMapGenerator}. For example,
|
||||
* downloading map tiles may only be possible up to a certain zoom level. Setting a higher maximum zoom level has no
|
||||
* effect in this case.
|
||||
*
|
||||
|
||||
@@ -21,16 +21,16 @@ import java.util.ArrayList;
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
|
||||
import org.mapsforge.android.MapView;
|
||||
import org.mapsforge.android.mapgenerator.IMapGenerator;
|
||||
import org.mapsforge.android.mapgenerator.JobTheme;
|
||||
import org.mapsforge.android.mapgenerator.MapGenerator;
|
||||
import org.mapsforge.android.mapgenerator.MapGeneratorJob;
|
||||
import org.mapsforge.android.rendertheme.RenderCallback;
|
||||
import org.mapsforge.android.rendertheme.IRenderCallback;
|
||||
import org.mapsforge.android.rendertheme.RenderTheme;
|
||||
import org.mapsforge.android.rendertheme.RenderThemeHandler;
|
||||
import org.mapsforge.android.rendertheme.renderinstruction.Area;
|
||||
import org.mapsforge.android.rendertheme.renderinstruction.Line;
|
||||
import org.mapsforge.core.GeoPoint;
|
||||
import org.mapsforge.core.SphericalMercator;
|
||||
import org.mapsforge.core.WebMercator;
|
||||
import org.mapsforge.core.Tag;
|
||||
import org.mapsforge.core.Tile;
|
||||
import org.mapsforge.database.IMapDatabase;
|
||||
@@ -46,7 +46,7 @@ import android.util.Log;
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public class DatabaseRenderer implements MapGenerator, RenderCallback,
|
||||
public class DatabaseRenderer implements IMapGenerator, IRenderCallback,
|
||||
IMapDatabaseCallback {
|
||||
private static String TAG = DatabaseRenderer.class.getName();
|
||||
|
||||
@@ -80,6 +80,8 @@ public class DatabaseRenderer implements MapGenerator, RenderCallback,
|
||||
private int mDrawingLayer;
|
||||
private int mLevels;
|
||||
|
||||
private boolean useSphericalMercator = false;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@@ -420,7 +422,7 @@ public class DatabaseRenderer implements MapGenerator, RenderCallback,
|
||||
if (mMapDatabase != null && mMapDatabase.hasOpenFile()) {
|
||||
MapFileInfo mapFileInfo = mMapDatabase.getMapFileInfo();
|
||||
|
||||
if (SphericalMercator.NAME.equals(mapFileInfo.projectionName)) {
|
||||
if (WebMercator.NAME.equals(mapFileInfo.projectionName)) {
|
||||
Log.d(TAG, "using Spherical Mercator");
|
||||
|
||||
useSphericalMercator = true;
|
||||
@@ -445,11 +447,6 @@ public class DatabaseRenderer implements MapGenerator, RenderCallback,
|
||||
return ZOOM_MAX;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean requiresInternetConnection() {
|
||||
return false;
|
||||
}
|
||||
|
||||
private static boolean setRenderTheme(JobTheme jobTheme) {
|
||||
InputStream inputStream = null;
|
||||
try {
|
||||
@@ -489,8 +486,6 @@ public class DatabaseRenderer implements MapGenerator, RenderCallback,
|
||||
return new MapRenderer(mapView);
|
||||
}
|
||||
|
||||
private boolean useSphericalMercator = false;
|
||||
|
||||
@Override
|
||||
public void setMapDatabase(IMapDatabase mapDatabase) {
|
||||
mMapDatabase = mapDatabase;
|
||||
|
||||
@@ -26,7 +26,7 @@ import javax.microedition.khronos.opengles.GL10;
|
||||
import org.mapsforge.android.DebugSettings;
|
||||
import org.mapsforge.android.MapView;
|
||||
import org.mapsforge.android.mapgenerator.JobParameters;
|
||||
import org.mapsforge.android.mapgenerator.MapGenerator;
|
||||
import org.mapsforge.android.mapgenerator.IMapGenerator;
|
||||
import org.mapsforge.android.mapgenerator.MapGeneratorJob;
|
||||
import org.mapsforge.android.mapgenerator.MapWorker;
|
||||
import org.mapsforge.android.mapgenerator.TileCacheKey;
|
||||
@@ -316,7 +316,7 @@ public class MapRenderer implements org.mapsforge.android.MapRenderer {
|
||||
mJobList.clear();
|
||||
mJobParameter = mMapView.getJobParameters();
|
||||
|
||||
MapGenerator mapGenerator = mMapView.getMapGenerator();
|
||||
IMapGenerator mapGenerator = mMapView.getMapGenerator();
|
||||
int tiles = 0;
|
||||
if (newTiles == null)
|
||||
return false;
|
||||
|
||||
@@ -61,14 +61,7 @@ public class MeshLayer extends Layer {
|
||||
curVertices[outPos++] = (float) tri.points[i].getY();
|
||||
|
||||
}
|
||||
// System.out.println("" +
|
||||
// (float) tri.points[0].getX() + "/" + (float) tri.points[0].getY()
|
||||
// + ", " +
|
||||
// (float) tri.points[1].getX() + "/" + (float) tri.points[1].getY()
|
||||
// + ", " +
|
||||
// (float) tri.points[2].getX() + "/" + (float) tri.points[2].getY());
|
||||
}
|
||||
// System.out.println("---");
|
||||
curItem.used = outPos;
|
||||
verticesCnt += poly.getTriangles().size() * 3;
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ public class MeshLayers {
|
||||
size = 0;
|
||||
}
|
||||
|
||||
MeshLayer getLayer(int layer, int color, int fade) {
|
||||
MeshLayer getLayer(int layer, int color) {
|
||||
MeshLayer l = layers.get(layer);
|
||||
if (l != null) {
|
||||
return l;
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
* 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.mapsforge.android.inputhandling;
|
||||
package org.mapsforge.android.input;
|
||||
|
||||
import org.mapsforge.android.MapView;
|
||||
import org.mapsforge.android.utils.PausableThread;
|
||||
@@ -12,7 +12,7 @@
|
||||
* 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.mapsforge.android.inputhandling;
|
||||
package org.mapsforge.android.input;
|
||||
|
||||
import org.mapsforge.android.MapView;
|
||||
import org.mapsforge.android.MapViewPosition;
|
||||
@@ -21,10 +21,14 @@ import android.view.ScaleGestureDetector;
|
||||
|
||||
class ScaleListener implements ScaleGestureDetector.OnScaleGestureListener {
|
||||
private final MapView mMapView;
|
||||
private float mFocusX;
|
||||
private float mFocusY;
|
||||
private MapViewPosition mMapPosition;
|
||||
private float mCenterX;
|
||||
private float mCenterY;
|
||||
// private float mFocusX;
|
||||
// private float mFocusY;
|
||||
private float mScale;
|
||||
|
||||
// private boolean mScaling;
|
||||
/**
|
||||
* Creates a new ScaleListener for the given MapView.
|
||||
*
|
||||
@@ -37,23 +41,46 @@ class ScaleListener implements ScaleGestureDetector.OnScaleGestureListener {
|
||||
|
||||
@Override
|
||||
public boolean onScale(ScaleGestureDetector scaleGestureDetector) {
|
||||
float scaleFactor = scaleGestureDetector.getScaleFactor();
|
||||
|
||||
mMapPosition.scaleMap(scaleFactor, mFocusX, mFocusY);
|
||||
float focusX = scaleGestureDetector.getFocusX();
|
||||
float focusY = scaleGestureDetector.getFocusY();
|
||||
mScale = scaleGestureDetector.getScaleFactor();
|
||||
|
||||
// mMapPosition.moveMap((focusX - mFocusX), (focusY - mFocusY));
|
||||
// if (mScale > 1.001 || mScale < 0.999) {
|
||||
|
||||
mMapPosition.scaleMap(mScale,
|
||||
focusX - mCenterX,
|
||||
focusY - mCenterY);
|
||||
mMapView.redrawTiles();
|
||||
// mScale = 1;
|
||||
|
||||
// mFocusX = focusX;
|
||||
// mFocusY = focusY;
|
||||
|
||||
// }
|
||||
// else if (Math.abs(focusX - mFocusX) > 0.5 || Math.abs(focusY - mFocusY) > 0.5) {
|
||||
// mMapPosition.moveMap((focusX - mFocusX), (focusY - mFocusY));
|
||||
//
|
||||
// mFocusX = focusX;
|
||||
// mFocusY = focusY;
|
||||
// mScale = 1;
|
||||
// mMapView.redrawTiles();
|
||||
// }
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onScaleBegin(ScaleGestureDetector scaleGestureDetector) {
|
||||
mFocusX = scaleGestureDetector.getFocusX();
|
||||
mFocusY = scaleGestureDetector.getFocusY();
|
||||
|
||||
mFocusX -= ((mMapView.getWidth() >> 1));
|
||||
mFocusY -= ((mMapView.getHeight() >> 1));
|
||||
mCenterX = mMapView.getWidth() >> 1;
|
||||
mCenterY = mMapView.getHeight() >> 1;
|
||||
// mFocusX = scaleGestureDetector.getFocusX();
|
||||
// mFocusY = scaleGestureDetector.getFocusY();
|
||||
mScale = 1;
|
||||
mMapPosition = mMapView.getMapPosition();
|
||||
|
||||
// mScaling = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
* 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.mapsforge.android.inputhandling;
|
||||
package org.mapsforge.android.input;
|
||||
|
||||
import org.mapsforge.android.MapView;
|
||||
import org.mapsforge.core.Tile;
|
||||
@@ -12,7 +12,7 @@
|
||||
* 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.mapsforge.android.inputhandling;
|
||||
package org.mapsforge.android.input;
|
||||
|
||||
import org.mapsforge.android.MapView;
|
||||
import org.mapsforge.android.utils.PausableThread;
|
||||
@@ -22,7 +22,7 @@ import org.mapsforge.database.IMapDatabase;
|
||||
/**
|
||||
* A MapGenerator provides map tiles either by downloading or rendering them.
|
||||
*/
|
||||
public interface MapGenerator {
|
||||
public interface IMapGenerator {
|
||||
/**
|
||||
* Called once at the end of the MapGenerator lifecycle.
|
||||
*/
|
||||
@@ -52,11 +52,6 @@ public interface MapGenerator {
|
||||
*/
|
||||
byte getZoomLevelMax();
|
||||
|
||||
/**
|
||||
* @return true if this MapGenerator requires an Internet connection, false otherwise.
|
||||
*/
|
||||
boolean requiresInternetConnection();
|
||||
|
||||
/**
|
||||
* @param mapView
|
||||
* the MapView
|
||||
@@ -14,13 +14,10 @@
|
||||
*/
|
||||
package org.mapsforge.android.mapgenerator;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* A JobParameters instance is a simple DTO to store the rendering parameters for a job.
|
||||
*/
|
||||
public class JobParameters implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
public class JobParameters {
|
||||
|
||||
/**
|
||||
* The render theme which should be used.
|
||||
|
||||
43
src/org/mapsforge/android/mapgenerator/MapDownloader.java
Normal file
43
src/org/mapsforge/android/mapgenerator/MapDownloader.java
Normal file
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Copyright 2010, 2011, 2012 mapsforge.org
|
||||
*
|
||||
* 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.mapsforge.android.mapgenerator;
|
||||
|
||||
import org.mapsforge.android.utils.PausableThread;
|
||||
|
||||
public class MapDownloader extends PausableThread {
|
||||
private static final String THREAD_NAME = "MapDownloader";
|
||||
|
||||
@Override
|
||||
protected void doWork() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean hasWork() {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getThreadName() {
|
||||
return THREAD_NAME;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getThreadPriority() {
|
||||
return (Thread.NORM_PRIORITY + Thread.MIN_PRIORITY) / 2;
|
||||
}
|
||||
}
|
||||
@@ -27,7 +27,7 @@ public final class MapGeneratorFactory {
|
||||
* A collection of attributes which includes the desired MapGenerator.
|
||||
* @return a new MapGenerator instance.
|
||||
*/
|
||||
public static MapGenerator createMapGenerator(AttributeSet attributeSet) {
|
||||
public static IMapGenerator createMapGenerator(AttributeSet attributeSet) {
|
||||
String mapGeneratorName = attributeSet.getAttributeValue(null, MAP_GENERATOR_ATTRIBUTE_NAME);
|
||||
if (mapGeneratorName == null) {
|
||||
return new org.mapsforge.android.glrenderer.DatabaseRenderer();
|
||||
@@ -42,7 +42,7 @@ public final class MapGeneratorFactory {
|
||||
* the internal MapGenerator implementation.
|
||||
* @return a new MapGenerator instance.
|
||||
*/
|
||||
public static MapGenerator createMapGenerator(MapGeneratorInternal mapGeneratorInternal) {
|
||||
public static IMapGenerator createMapGenerator(MapGeneratorInternal mapGeneratorInternal) {
|
||||
switch (mapGeneratorInternal) {
|
||||
case SW_RENDERER:
|
||||
return new org.mapsforge.android.swrenderer.DatabaseRenderer();
|
||||
|
||||
@@ -45,7 +45,7 @@ public class MapGeneratorJob implements Comparable<MapGeneratorJob>, Serializabl
|
||||
public final MapTile tile;
|
||||
|
||||
private transient int mHashCodeValue;
|
||||
private final MapGenerator mMapGenerator;
|
||||
private final IMapGenerator mMapGenerator;
|
||||
private transient double mPriority;
|
||||
|
||||
/**
|
||||
@@ -97,7 +97,7 @@ public class MapGeneratorJob implements Comparable<MapGeneratorJob>, Serializabl
|
||||
* @param _debugSettings
|
||||
* the debug settings for this job.
|
||||
*/
|
||||
public MapGeneratorJob(MapTile _tile, MapGenerator mapGenerator,
|
||||
public MapGeneratorJob(MapTile _tile, IMapGenerator mapGenerator,
|
||||
JobParameters _jobParameters, DebugSettings _debugSettings) {
|
||||
tile = _tile;
|
||||
mMapGenerator = mapGenerator;
|
||||
|
||||
@@ -19,14 +19,14 @@ import org.mapsforge.android.MapView;
|
||||
import org.mapsforge.android.utils.PausableThread;
|
||||
|
||||
/**
|
||||
* A MapWorker uses a {@link MapGenerator} to generate map tiles. It runs in a separate thread to avoid blocking the UI
|
||||
* A MapWorker uses a {@link IMapGenerator} to generate map tiles. It runs in a separate thread to avoid blocking the UI
|
||||
* thread.
|
||||
*/
|
||||
public class MapWorker extends PausableThread {
|
||||
private static final String THREAD_NAME = "MapWorker";
|
||||
|
||||
private final JobQueue mJobQueue;
|
||||
private MapGenerator mMapGenerator;
|
||||
private IMapGenerator mMapGenerator;
|
||||
private MapRenderer mMapRenderer;
|
||||
|
||||
/**
|
||||
@@ -42,7 +42,7 @@ public class MapWorker extends PausableThread {
|
||||
* @param mapGenerator
|
||||
* the MapGenerator which this MapWorker should use.
|
||||
*/
|
||||
public void setMapGenerator(MapGenerator mapGenerator) {
|
||||
public void setMapGenerator(IMapGenerator mapGenerator) {
|
||||
mMapGenerator = mapGenerator;
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
*/
|
||||
package org.mapsforge.android.rendertheme;
|
||||
|
||||
class Closed {
|
||||
final class Closed {
|
||||
public static final int ANY = 0;
|
||||
public static final int NO = 1;
|
||||
public static final int YES = 2;
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
*/
|
||||
package org.mapsforge.android.rendertheme;
|
||||
|
||||
class Element {
|
||||
final class Element {
|
||||
public static final int ANY = 0;
|
||||
public static final int NODE = 1;
|
||||
public static final int WAY = 2;
|
||||
|
||||
@@ -23,7 +23,7 @@ import android.graphics.Paint;
|
||||
/**
|
||||
* Callback methods for rendering areas, ways and points of interest (POIs).
|
||||
*/
|
||||
public interface RenderCallback {
|
||||
public interface IRenderCallback {
|
||||
/**
|
||||
* Renders an area with the given parameters.
|
||||
*
|
||||
@@ -141,7 +141,7 @@ public class RenderTheme {
|
||||
* @param zoomLevel
|
||||
* ...
|
||||
*/
|
||||
public void matchNode(RenderCallback renderCallback, Tag[] tags, byte zoomLevel) {
|
||||
public void matchNode(IRenderCallback renderCallback, Tag[] tags, byte zoomLevel) {
|
||||
// List<RenderInstruction> matchingList = matchingListNode;
|
||||
// MatchingCacheKey matchingCacheKey = matchingCacheKeyNode;
|
||||
//
|
||||
@@ -214,7 +214,7 @@ public class RenderTheme {
|
||||
* @param changed
|
||||
* ...
|
||||
*/
|
||||
public void matchWay(RenderCallback renderCallback, Tag[] tags, byte zoomLevel,
|
||||
public void matchWay(IRenderCallback renderCallback, Tag[] tags, byte zoomLevel,
|
||||
boolean closed, boolean changed) {
|
||||
RenderInstruction[] renderInstructions = null;
|
||||
|
||||
|
||||
@@ -189,7 +189,7 @@ abstract class Rule {
|
||||
|
||||
abstract boolean matchesWay(Tag[] tags, byte zoomLevel, int closed);
|
||||
|
||||
void matchNode(RenderCallback renderCallback, Tag[] tags, byte zoomLevel) {
|
||||
void matchNode(IRenderCallback renderCallback, Tag[] tags, byte zoomLevel) {
|
||||
if (matchesNode(tags, zoomLevel)) {
|
||||
for (int i = 0, n = mRenderInstructionArray.length; i < n; i++)
|
||||
mRenderInstructionArray[i].renderNode(renderCallback, tags);
|
||||
@@ -200,7 +200,7 @@ abstract class Rule {
|
||||
}
|
||||
}
|
||||
|
||||
void matchWay(RenderCallback renderCallback, Tag[] tags, byte zoomLevel,
|
||||
void matchWay(IRenderCallback renderCallback, Tag[] tags, byte zoomLevel,
|
||||
int closed,
|
||||
List<RenderInstruction> matchingList) {
|
||||
|
||||
|
||||
@@ -15,10 +15,9 @@
|
||||
package org.mapsforge.android.rendertheme;
|
||||
|
||||
import java.util.Stack;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
final class RuleOptimizer {
|
||||
private static final Logger LOG = Logger.getLogger(RuleOptimizer.class.getName());
|
||||
// private static final Logger LOG = Logger.getLogger(RuleOptimizer.class.getName());
|
||||
|
||||
private static AttributeMatcher optimizeKeyMatcher(AttributeMatcher attributeMatcher,
|
||||
Stack<Rule> ruleStack) {
|
||||
|
||||
@@ -9,12 +9,12 @@
|
||||
|
||||
<!-- landuse -->
|
||||
<rule e="way" k="landuse" v="*">
|
||||
<rule e="way" k="*" zoom-min="12" v="farmland|farm">
|
||||
<area fill="#fff8bf" fade="12" />
|
||||
<rule e="way" k="*" zoom-min="10" v="farmland|farm">
|
||||
<area fill="#fff8bf" fade="10" />
|
||||
</rule>
|
||||
|
||||
<rule e="way" k="landuse" v="grass">
|
||||
<area fill="#deecb9" fade="12" />
|
||||
<rule e="way" k="landuse" zoom-min="10" v="grass">
|
||||
<area fill="#deecb9" fade="10" />
|
||||
</rule>
|
||||
|
||||
<rule e="way" k="*" zoom-min="10" v="residential|farmyard|retail|commercial">
|
||||
@@ -334,7 +334,7 @@
|
||||
</rule>-->
|
||||
|
||||
<rule e="way" k="*" v="*" zoom-min="15">
|
||||
<line stroke="#c9c3c1" stroke-width="0.6" fixed="true" stroke-linecap="butt" />
|
||||
<line stroke="#c9c3c1" stroke-width="0.6" fixed="true" stroke-linecap="butt" />
|
||||
<area fill="#e9e6e3" fade="15" />
|
||||
</rule>
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ package org.mapsforge.android.rendertheme.renderinstruction;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.mapsforge.android.rendertheme.RenderCallback;
|
||||
import org.mapsforge.android.rendertheme.IRenderCallback;
|
||||
import org.mapsforge.android.rendertheme.RenderThemeHandler;
|
||||
import org.mapsforge.core.Tag;
|
||||
import org.xml.sax.Attributes;
|
||||
@@ -137,12 +137,12 @@ public final class Area implements RenderInstruction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderNode(RenderCallback renderCallback, Tag[] tags) {
|
||||
public void renderNode(IRenderCallback renderCallback, Tag[] tags) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderWay(RenderCallback renderCallback, Tag[] tags) {
|
||||
public void renderWay(IRenderCallback renderCallback, Tag[] tags) {
|
||||
if (paintFill != null) {
|
||||
renderCallback.renderArea(this);
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ package org.mapsforge.android.rendertheme.renderinstruction;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
import org.mapsforge.android.rendertheme.RenderCallback;
|
||||
import org.mapsforge.android.rendertheme.IRenderCallback;
|
||||
import org.mapsforge.android.rendertheme.RenderThemeHandler;
|
||||
import org.mapsforge.core.Tag;
|
||||
import org.xml.sax.Attributes;
|
||||
@@ -121,12 +121,12 @@ public final class Caption implements RenderInstruction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderNode(RenderCallback renderCallback, Tag[] tags) {
|
||||
public void renderNode(IRenderCallback renderCallback, Tag[] tags) {
|
||||
renderCallback.renderPointOfInterestCaption(mTextKey, mDy, mPaint, mStroke);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderWay(RenderCallback renderCallback, Tag[] tags) {
|
||||
public void renderWay(IRenderCallback renderCallback, Tag[] tags) {
|
||||
renderCallback.renderAreaCaption(mTextKey, mDy, mPaint, mStroke);
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
*/
|
||||
package org.mapsforge.android.rendertheme.renderinstruction;
|
||||
|
||||
import org.mapsforge.android.rendertheme.RenderCallback;
|
||||
import org.mapsforge.android.rendertheme.IRenderCallback;
|
||||
import org.mapsforge.android.rendertheme.RenderThemeHandler;
|
||||
import org.mapsforge.core.Tag;
|
||||
import org.xml.sax.Attributes;
|
||||
@@ -123,7 +123,7 @@ public final class Circle implements RenderInstruction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderNode(RenderCallback renderCallback, Tag[] tags) {
|
||||
public void renderNode(IRenderCallback renderCallback, Tag[] tags) {
|
||||
if (mOutline != null) {
|
||||
renderCallback.renderPointOfInterestCircle(mRenderRadius, mOutline, mLevel);
|
||||
}
|
||||
@@ -133,7 +133,7 @@ public final class Circle implements RenderInstruction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderWay(RenderCallback renderCallback, Tag[] tags) {
|
||||
public void renderWay(IRenderCallback renderCallback, Tag[] tags) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ import java.io.IOException;
|
||||
import java.util.Locale;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import org.mapsforge.android.rendertheme.RenderCallback;
|
||||
import org.mapsforge.android.rendertheme.IRenderCallback;
|
||||
import org.mapsforge.android.rendertheme.RenderThemeHandler;
|
||||
import org.mapsforge.core.Tag;
|
||||
import org.xml.sax.Attributes;
|
||||
@@ -164,12 +164,12 @@ public final class Line implements RenderInstruction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderNode(RenderCallback renderCallback, Tag[] tags) {
|
||||
public void renderNode(IRenderCallback renderCallback, Tag[] tags) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderWay(RenderCallback renderCallback, Tag[] tags) {
|
||||
public void renderWay(IRenderCallback renderCallback, Tag[] tags) {
|
||||
// renderCallback.renderWay(mPaint, mLevel, mColor, mStrokeWidth, mRound, mOutline);
|
||||
renderCallback.renderWay(this);
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ package org.mapsforge.android.rendertheme.renderinstruction;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.mapsforge.android.rendertheme.RenderCallback;
|
||||
import org.mapsforge.android.rendertheme.IRenderCallback;
|
||||
import org.mapsforge.android.rendertheme.RenderThemeHandler;
|
||||
import org.mapsforge.core.Tag;
|
||||
import org.xml.sax.Attributes;
|
||||
@@ -84,12 +84,12 @@ public final class LineSymbol implements RenderInstruction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderNode(RenderCallback renderCallback, Tag[] tags) {
|
||||
public void renderNode(IRenderCallback renderCallback, Tag[] tags) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderWay(RenderCallback renderCallback, Tag[] tags) {
|
||||
public void renderWay(IRenderCallback renderCallback, Tag[] tags) {
|
||||
renderCallback.renderWaySymbol(mBitmap, mAlignCenter, mRepeat);
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ package org.mapsforge.android.rendertheme.renderinstruction;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
import org.mapsforge.android.rendertheme.RenderCallback;
|
||||
import org.mapsforge.android.rendertheme.IRenderCallback;
|
||||
import org.mapsforge.android.rendertheme.RenderThemeHandler;
|
||||
import org.mapsforge.core.Tag;
|
||||
import org.xml.sax.Attributes;
|
||||
@@ -116,12 +116,12 @@ public final class PathText implements RenderInstruction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderNode(RenderCallback renderCallback, Tag[] tags) {
|
||||
public void renderNode(IRenderCallback renderCallback, Tag[] tags) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderWay(RenderCallback renderCallback, Tag[] tags) {
|
||||
public void renderWay(IRenderCallback renderCallback, Tag[] tags) {
|
||||
renderCallback.renderWayText(mTextKey, mPaint, mStroke);
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
*/
|
||||
package org.mapsforge.android.rendertheme.renderinstruction;
|
||||
|
||||
import org.mapsforge.android.rendertheme.RenderCallback;
|
||||
import org.mapsforge.android.rendertheme.IRenderCallback;
|
||||
import org.mapsforge.core.Tag;
|
||||
|
||||
/**
|
||||
@@ -32,7 +32,7 @@ public interface RenderInstruction {
|
||||
* @param tags
|
||||
* the tags of the node.
|
||||
*/
|
||||
void renderNode(RenderCallback renderCallback, Tag[] tags);
|
||||
void renderNode(IRenderCallback renderCallback, Tag[] tags);
|
||||
|
||||
/**
|
||||
* @param renderCallback
|
||||
@@ -40,7 +40,7 @@ public interface RenderInstruction {
|
||||
* @param tags
|
||||
* the tags of the way.
|
||||
*/
|
||||
void renderWay(RenderCallback renderCallback, Tag[] tags);
|
||||
void renderWay(IRenderCallback renderCallback, Tag[] tags);
|
||||
|
||||
/**
|
||||
* Scales the stroke width of this RenderInstruction by the given factor.
|
||||
|
||||
@@ -16,7 +16,7 @@ package org.mapsforge.android.rendertheme.renderinstruction;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.mapsforge.android.rendertheme.RenderCallback;
|
||||
import org.mapsforge.android.rendertheme.IRenderCallback;
|
||||
import org.mapsforge.android.rendertheme.RenderThemeHandler;
|
||||
import org.mapsforge.core.Tag;
|
||||
import org.xml.sax.Attributes;
|
||||
@@ -74,12 +74,12 @@ public final class Symbol implements RenderInstruction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderNode(RenderCallback renderCallback, Tag[] tags) {
|
||||
public void renderNode(IRenderCallback renderCallback, Tag[] tags) {
|
||||
renderCallback.renderPointOfInterestSymbol(mBitmap);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderWay(RenderCallback renderCallback, Tag[] tags) {
|
||||
public void renderWay(IRenderCallback renderCallback, Tag[] tags) {
|
||||
renderCallback.renderAreaSymbol(mBitmap);
|
||||
}
|
||||
|
||||
|
||||
@@ -22,10 +22,10 @@ import java.util.List;
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
|
||||
import org.mapsforge.android.MapView;
|
||||
import org.mapsforge.android.mapgenerator.IMapGenerator;
|
||||
import org.mapsforge.android.mapgenerator.JobTheme;
|
||||
import org.mapsforge.android.mapgenerator.MapGenerator;
|
||||
import org.mapsforge.android.mapgenerator.MapGeneratorJob;
|
||||
import org.mapsforge.android.rendertheme.RenderCallback;
|
||||
import org.mapsforge.android.rendertheme.IRenderCallback;
|
||||
import org.mapsforge.android.rendertheme.RenderTheme;
|
||||
import org.mapsforge.android.rendertheme.RenderThemeHandler;
|
||||
import org.mapsforge.android.rendertheme.renderinstruction.Area;
|
||||
@@ -48,11 +48,13 @@ import android.util.Log;
|
||||
/**
|
||||
* A DatabaseRenderer renders map tiles by reading from a {@link MapDatabase}.
|
||||
*/
|
||||
public class DatabaseRenderer implements MapGenerator, RenderCallback, IMapDatabaseCallback {
|
||||
public class DatabaseRenderer implements IMapGenerator, IRenderCallback,
|
||||
IMapDatabaseCallback {
|
||||
private static String TAG = DatabaseRenderer.class.getName();
|
||||
private static final Byte DEFAULT_START_ZOOM_LEVEL = Byte.valueOf((byte) 12);
|
||||
private static final byte LAYERS = 11;
|
||||
private static final Paint PAINT_WATER_TILE_HIGHTLIGHT = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||
private static final Paint PAINT_WATER_TILE_HIGHTLIGHT = new Paint(
|
||||
Paint.ANTI_ALIAS_FLAG);
|
||||
private static final double STROKE_INCREASE = 1.5;
|
||||
private static final byte STROKE_MIN_ZOOM_LEVEL = 12;
|
||||
|
||||
@@ -151,7 +153,8 @@ public class DatabaseRenderer implements MapGenerator, RenderCallback, IMapDatab
|
||||
PAINT_WATER_TILE_HIGHTLIGHT.setColor(Color.CYAN);
|
||||
// mCoordinates = new float[1024];
|
||||
|
||||
mTileBitmap = Bitmap.createBitmap(Tile.TILE_SIZE * 2, Tile.TILE_SIZE * 2, Bitmap.Config.RGB_565);
|
||||
mTileBitmap = Bitmap.createBitmap(Tile.TILE_SIZE * 2, Tile.TILE_SIZE * 2,
|
||||
Bitmap.Config.RGB_565);
|
||||
|
||||
}
|
||||
|
||||
@@ -219,7 +222,8 @@ public class DatabaseRenderer implements MapGenerator, RenderCallback, IMapDatab
|
||||
}
|
||||
time_load = System.currentTimeMillis() - time_load;
|
||||
|
||||
mNodes = mLabelPlacement.placeLabels(mNodes, mPointSymbols, mAreaLabels, mCurrentTile);
|
||||
mNodes = mLabelPlacement.placeLabels(mNodes, mPointSymbols, mAreaLabels,
|
||||
mCurrentTile);
|
||||
|
||||
long time_draw = System.currentTimeMillis();
|
||||
|
||||
@@ -240,7 +244,8 @@ public class DatabaseRenderer implements MapGenerator, RenderCallback, IMapDatab
|
||||
}
|
||||
|
||||
if (mapGeneratorJob.debugSettings.mDrawTileCoordinates) {
|
||||
mCanvasRasterer.drawTileCoordinates(mCurrentTile, time_load, time_draw, _nodes, _nodesDropped);
|
||||
mCanvasRasterer.drawTileCoordinates(mCurrentTile, time_load, time_draw,
|
||||
_nodes, _nodesDropped);
|
||||
}
|
||||
|
||||
clearLists();
|
||||
@@ -282,7 +287,8 @@ public class DatabaseRenderer implements MapGenerator, RenderCallback, IMapDatab
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderAreaCaption(String textKey, float verticalOffset, Paint paint, Paint stroke) {
|
||||
public void renderAreaCaption(String textKey, float verticalOffset, Paint paint,
|
||||
Paint stroke) {
|
||||
// mapDatabase.readTag(caption);
|
||||
// if (caption.value != null) {
|
||||
// float[] centerPosition = GeometryUtils
|
||||
@@ -312,7 +318,8 @@ public class DatabaseRenderer implements MapGenerator, RenderCallback, IMapDatab
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderPointOfInterestCaption(String textKey, float verticalOffset, Paint paint, Paint stroke) {
|
||||
public void renderPointOfInterestCaption(String textKey, float verticalOffset,
|
||||
Paint paint, Paint stroke) {
|
||||
// mapDatabase.readTag(caption);
|
||||
// if (caption.value != null) {
|
||||
// nodes.add(new PointTextContainer(caption.value, poiX, poiY + verticalOffset, paint, stroke));
|
||||
@@ -327,8 +334,9 @@ public class DatabaseRenderer implements MapGenerator, RenderCallback, IMapDatab
|
||||
|
||||
@Override
|
||||
public void renderPointOfInterestSymbol(Bitmap symbol) {
|
||||
mPointSymbols.add(new SymbolContainer(symbol, mPoiX - (symbol.getWidth() >> 1), mPoiY
|
||||
- (symbol.getHeight() >> 1)));
|
||||
mPointSymbols.add(new SymbolContainer(symbol, mPoiX - (symbol.getWidth() >> 1),
|
||||
mPoiY
|
||||
- (symbol.getHeight() >> 1)));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -359,7 +367,8 @@ public class DatabaseRenderer implements MapGenerator, RenderCallback, IMapDatab
|
||||
// private byte mPrevLayer = 0;
|
||||
|
||||
@Override
|
||||
public void renderWay(byte layer, Tag[] tags, float[] wayNodes, int[] wayLengths, boolean changed) {
|
||||
public void renderWay(byte layer, Tag[] tags, float[] wayNodes, int[] wayLengths,
|
||||
boolean changed) {
|
||||
// if (mCoords == null)
|
||||
// mCoords = mMapDatabase.getCoordinates();
|
||||
|
||||
@@ -475,7 +484,8 @@ public class DatabaseRenderer implements MapGenerator, RenderCallback, IMapDatab
|
||||
|
||||
@Override
|
||||
public void renderWay(Line line) {
|
||||
List<ShapeContainer> c = mDrawingLayer.add(line.level, mWayDataContainer, line.paint);
|
||||
List<ShapeContainer> c = mDrawingLayer.add(line.level, mWayDataContainer,
|
||||
line.paint);
|
||||
|
||||
if (mCurLevelContainer1 == null)
|
||||
mCurLevelContainer1 = c;
|
||||
@@ -486,13 +496,16 @@ public class DatabaseRenderer implements MapGenerator, RenderCallback, IMapDatab
|
||||
@Override
|
||||
public void renderArea(Area area) {
|
||||
if (area.paintFill != null)
|
||||
mCurLevelContainer1 = mDrawingLayer.add(area.level, mWayDataContainer, area.paintFill);
|
||||
mCurLevelContainer1 = mDrawingLayer.add(area.level, mWayDataContainer,
|
||||
area.paintFill);
|
||||
if (area.paintOutline != null)
|
||||
mCurLevelContainer1 = mDrawingLayer.add(area.level, mWayDataContainer, area.paintOutline);
|
||||
mCurLevelContainer1 = mDrawingLayer.add(area.level, mWayDataContainer,
|
||||
area.paintOutline);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderWaySymbol(Bitmap symbolBitmap, boolean alignCenter, boolean repeatSymbol) {
|
||||
public void renderWaySymbol(Bitmap symbolBitmap, boolean alignCenter,
|
||||
boolean repeatSymbol) {
|
||||
// WayDecorator.renderSymbol(symbolBitmap, alignCenter, repeatSymbol,
|
||||
// coordinates,
|
||||
// waySymbols);
|
||||
@@ -508,11 +521,6 @@ public class DatabaseRenderer implements MapGenerator, RenderCallback, IMapDatab
|
||||
return mMapDatabase.readString(mWayDataContainer.textPos[0]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean requiresInternetConnection() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMapDatabase(IMapDatabase mapDatabase) {
|
||||
mMapDatabase = mapDatabase;
|
||||
@@ -547,7 +555,8 @@ public class DatabaseRenderer implements MapGenerator, RenderCallback, IMapDatab
|
||||
private static float scaleLatitude(float latitude) {
|
||||
double sinLatitude = FloatMath.sin(latitude * PI180);
|
||||
|
||||
return (float) (0.5 - Math.log((1 + sinLatitude) / (1 - sinLatitude)) / PIx4) * mCurrentTileZoom
|
||||
return (float) (0.5 - Math.log((1 + sinLatitude) / (1 - sinLatitude)) / PIx4)
|
||||
* mCurrentTileZoom
|
||||
- mCurrentTileY;
|
||||
}
|
||||
|
||||
@@ -560,7 +569,8 @@ public class DatabaseRenderer implements MapGenerator, RenderCallback, IMapDatab
|
||||
*/
|
||||
|
||||
private static float scaleLongitude(float longitude) {
|
||||
return (float) ((longitude / 1000000.0 + 180) / 360 * mCurrentTileZoom) - mCurrentTileX;
|
||||
return (float) ((longitude / 1000000.0 + 180) / 360 * mCurrentTileZoom)
|
||||
- mCurrentTileX;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -571,7 +581,8 @@ public class DatabaseRenderer implements MapGenerator, RenderCallback, IMapDatab
|
||||
*/
|
||||
private static void setScaleStrokeWidth(byte zoomLevel) {
|
||||
int zoomLevelDiff = Math.max(zoomLevel - STROKE_MIN_ZOOM_LEVEL, 0);
|
||||
DatabaseRenderer.renderTheme.scaleStrokeWidth((float) Math.pow(STROKE_INCREASE, zoomLevelDiff));
|
||||
DatabaseRenderer.renderTheme.scaleStrokeWidth((float) Math.pow(STROKE_INCREASE,
|
||||
zoomLevelDiff));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -29,7 +29,7 @@ import javax.microedition.khronos.opengles.GL10;
|
||||
import org.mapsforge.android.DebugSettings;
|
||||
import org.mapsforge.android.MapView;
|
||||
import org.mapsforge.android.mapgenerator.JobParameters;
|
||||
import org.mapsforge.android.mapgenerator.MapGenerator;
|
||||
import org.mapsforge.android.mapgenerator.IMapGenerator;
|
||||
import org.mapsforge.android.mapgenerator.MapGeneratorJob;
|
||||
import org.mapsforge.android.mapgenerator.MapWorker;
|
||||
import org.mapsforge.android.mapgenerator.TileCacheKey;
|
||||
@@ -184,7 +184,7 @@ public class MapRenderer implements org.mapsforge.android.MapRenderer {
|
||||
|
||||
mJobList.clear();
|
||||
|
||||
MapGenerator mapGenerator = mMapView.getMapGenerator();
|
||||
IMapGenerator mapGenerator = mMapView.getMapGenerator();
|
||||
int tiles = 0;
|
||||
for (long tileY = tileTop - 1; tileY <= tileBottom + 1; tileY++) {
|
||||
for (long tileX = tileLeft - 1; tileX <= tileRight + 1; tileX++) {
|
||||
|
||||
Reference in New Issue
Block a user