diff options
| author | rsudev <rasch@munin-soft.de> | 2011-09-18 22:49:39 +0200 |
|---|---|---|
| committer | rsudev <rasch@munin-soft.de> | 2011-09-18 22:49:49 +0200 |
| commit | 71f0cd005239a32d24870c339acbb93c7bf22508 (patch) | |
| tree | e2d5fa179f0c0dd50848023e806837d5c0db248c /main/src/cgeo/geocaching/maps/mapsforge/mfMapController.java | |
| parent | 09ee4aa9429151b9b1e0fb30b27ec9c768fd08e1 (diff) | |
| download | cgeo-71f0cd005239a32d24870c339acbb93c7bf22508.zip cgeo-71f0cd005239a32d24870c339acbb93c7bf22508.tar.gz cgeo-71f0cd005239a32d24870c339acbb93c7bf22508.tar.bz2 | |
#179, Map refactor, renaming classes
Diffstat (limited to 'main/src/cgeo/geocaching/maps/mapsforge/mfMapController.java')
| -rw-r--r-- | main/src/cgeo/geocaching/maps/mapsforge/mfMapController.java | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/main/src/cgeo/geocaching/maps/mapsforge/mfMapController.java b/main/src/cgeo/geocaching/maps/mapsforge/mfMapController.java new file mode 100644 index 0000000..da7d9be --- /dev/null +++ b/main/src/cgeo/geocaching/maps/mapsforge/mfMapController.java @@ -0,0 +1,48 @@ +package cgeo.geocaching.maps.mapsforge; + +import cgeo.geocaching.maps.interfaces.GeoPointImpl; +import cgeo.geocaching.maps.interfaces.MapControllerImpl; + +import org.mapsforge.android.maps.GeoPoint; +import org.mapsforge.android.maps.MapController; + +public class mfMapController implements MapControllerImpl { + + private MapController mapController; + private int maxZoomLevel; + + public mfMapController(MapController mapControllerIn, int maxZoomLevelIn) { + mapController = mapControllerIn; + maxZoomLevel = maxZoomLevelIn; + } + + @Override + public void animateTo(GeoPointImpl geoPoint) { + mapController.setCenter((GeoPoint) geoPoint); + } + + @Override + public void setCenter(GeoPointImpl geoPoint) { + mapController.setCenter((GeoPoint) geoPoint); + } + + @Override + public void setZoom(int mapzoom) { + int mfzoom = mapzoom - 1; + if (mfzoom > maxZoomLevel) { + mfzoom = maxZoomLevel; + } + mapController.setZoom(mfzoom); + } + + @Override + public void zoomToSpan(int latSpanE6, int lonSpanE6) { + + if (latSpanE6 != 0 && lonSpanE6 != 0) { + // calculate zoomlevel + int distDegree = Math.max(latSpanE6, lonSpanE6); + int zoomLevel = (int) Math.floor(Math.log(360.0 * 1e6 / distDegree) / Math.log(2)); + mapController.setZoom(zoomLevel + 1); + } + } +} |
