From 9283b805940dc52440061b118bba66ac0e007d63 Mon Sep 17 00:00:00 2001 From: Emux Date: Tue, 12 Sep 2017 20:21:56 +0300 Subject: [PATCH] Automatic tile size calculation #92 --- .../src/org/oscim/android/test/MapActivity.java | 2 -- .../src/org/oscim/android/test/MapFragmentActivity.java | 2 -- .../src/org/oscim/android/test/MultiMapActivity.java | 4 +--- vtm-android-gdx/src/org/oscim/gdx/MainActivity.java | 2 +- vtm-android/src/org/oscim/android/MapView.java | 2 ++ vtm-app/src/org/oscim/app/TileMap.java | 4 +--- vtm/src/org/oscim/core/Tile.java | 6 ++++-- 7 files changed, 9 insertions(+), 13 deletions(-) diff --git a/vtm-android-example/src/org/oscim/android/test/MapActivity.java b/vtm-android-example/src/org/oscim/android/test/MapActivity.java index ad4294b1..482c43a5 100644 --- a/vtm-android-example/src/org/oscim/android/test/MapActivity.java +++ b/vtm-android-example/src/org/oscim/android/test/MapActivity.java @@ -21,7 +21,6 @@ import android.os.Bundle; import org.oscim.android.MapPreferences; import org.oscim.android.MapView; -import org.oscim.core.Tile; import org.oscim.map.Map; public class MapActivity extends Activity { @@ -41,7 +40,6 @@ public class MapActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - Tile.SIZE = Tile.calculateTileSize(getResources().getDisplayMetrics().scaledDensity); setContentView(mContentView); setTitle(getClass().getSimpleName()); diff --git a/vtm-android-example/src/org/oscim/android/test/MapFragmentActivity.java b/vtm-android-example/src/org/oscim/android/test/MapFragmentActivity.java index bc7bf655..200dc2aa 100644 --- a/vtm-android-example/src/org/oscim/android/test/MapFragmentActivity.java +++ b/vtm-android-example/src/org/oscim/android/test/MapFragmentActivity.java @@ -26,7 +26,6 @@ import android.view.ViewGroup; import org.oscim.android.MapPreferences; import org.oscim.android.MapView; import org.oscim.core.MapPosition; -import org.oscim.core.Tile; import org.oscim.layers.GroupLayer; import org.oscim.layers.tile.buildings.BuildingLayer; import org.oscim.layers.tile.vector.VectorTileLayer; @@ -38,7 +37,6 @@ public class MapFragmentActivity extends FragmentActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - Tile.SIZE = Tile.calculateTileSize(getResources().getDisplayMetrics().scaledDensity); setContentView(R.layout.activity_map_fragment); setTitle(getClass().getSimpleName()); diff --git a/vtm-android-example/src/org/oscim/android/test/MultiMapActivity.java b/vtm-android-example/src/org/oscim/android/test/MultiMapActivity.java index 9c39a773..816a2429 100644 --- a/vtm-android-example/src/org/oscim/android/test/MultiMapActivity.java +++ b/vtm-android-example/src/org/oscim/android/test/MultiMapActivity.java @@ -1,6 +1,6 @@ /* * Copyright 2016 Marvin W - * Copyright 2016 devemux86 + * Copyright 2016-2017 devemux86 * * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * @@ -22,7 +22,6 @@ import android.os.Bundle; import org.oscim.android.MapPreferences; import org.oscim.android.MapView; -import org.oscim.core.Tile; import org.oscim.layers.tile.buildings.BuildingLayer; import org.oscim.layers.tile.vector.VectorTileLayer; import org.oscim.layers.tile.vector.labeling.LabelLayer; @@ -36,7 +35,6 @@ public class MultiMapActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - Tile.SIZE = Tile.calculateTileSize(getResources().getDisplayMetrics().scaledDensity); setContentView(R.layout.activity_map_multi); setTitle(getClass().getSimpleName()); diff --git a/vtm-android-gdx/src/org/oscim/gdx/MainActivity.java b/vtm-android-gdx/src/org/oscim/gdx/MainActivity.java index a0bb791a..2d7e4161 100644 --- a/vtm-android-gdx/src/org/oscim/gdx/MainActivity.java +++ b/vtm-android-gdx/src/org/oscim/gdx/MainActivity.java @@ -43,7 +43,7 @@ public class MainActivity extends AndroidApplication { DisplayMetrics metrics = getResources().getDisplayMetrics(); CanvasAdapter.dpi = (int) (metrics.scaledDensity * CanvasAdapter.DEFAULT_DPI); - Tile.SIZE = Tile.calculateTileSize(metrics.scaledDensity); + Tile.SIZE = Tile.calculateTileSize(); AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration(); cfg.stencil = 8; diff --git a/vtm-android/src/org/oscim/android/MapView.java b/vtm-android/src/org/oscim/android/MapView.java index 33b8730d..6958b7af 100644 --- a/vtm-android/src/org/oscim/android/MapView.java +++ b/vtm-android/src/org/oscim/android/MapView.java @@ -31,6 +31,7 @@ import org.oscim.android.input.AndroidMotionEvent; import org.oscim.android.input.GestureHandler; import org.oscim.backend.CanvasAdapter; import org.oscim.backend.GLAdapter; +import org.oscim.core.Tile; import org.oscim.map.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -82,6 +83,7 @@ public class MapView extends GLSurfaceView { DisplayMetrics metrics = getResources().getDisplayMetrics(); CanvasAdapter.dpi = (int) (metrics.scaledDensity * CanvasAdapter.DEFAULT_DPI); + Tile.SIZE = Tile.calculateTileSize(); /* Initialize the Map */ mMap = new AndroidMap(this); diff --git a/vtm-app/src/org/oscim/app/TileMap.java b/vtm-app/src/org/oscim/app/TileMap.java index 0d69c387..cff38c6b 100755 --- a/vtm-app/src/org/oscim/app/TileMap.java +++ b/vtm-app/src/org/oscim/app/TileMap.java @@ -1,6 +1,6 @@ /* Copyright 2010, 2011, 2012 mapsforge.org * Copyright 2012 Hannes Janetzek - * Copyright 2016 devemux86 + * Copyright 2016-2017 devemux86 * * 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 @@ -40,7 +40,6 @@ import org.oscim.app.location.LocationDialog; import org.oscim.app.location.LocationHandler; import org.oscim.app.preferences.EditPreferences; import org.oscim.core.GeoPoint; -import org.oscim.core.Tile; import org.oscim.overlay.DistanceTouchOverlay; import org.osmdroid.location.POI; import org.osmdroid.overlays.MapEventsReceiver; @@ -74,7 +73,6 @@ public class TileMap extends MapActivity implements MapEventsReceiver { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - Tile.SIZE = Tile.calculateTileSize(getResources().getDisplayMetrics().scaledDensity); setContentView(R.layout.activity_tilemap); App.view = (MapView) findViewById(R.id.mapView); registerMapView(App.view); diff --git a/vtm/src/org/oscim/core/Tile.java b/vtm/src/org/oscim/core/Tile.java index 51ae0ece..0705239d 100644 --- a/vtm/src/org/oscim/core/Tile.java +++ b/vtm/src/org/oscim/core/Tile.java @@ -18,6 +18,8 @@ */ package org.oscim.core; +import org.oscim.backend.CanvasAdapter; + /** * A tile represents a rectangular part of the world map. All tiles can be * identified by their X and Y number together with their zoom level. The actual @@ -123,8 +125,8 @@ public class Tile { * Calculate tile size (256px) with a scale factor. * Clamp tile size to a preset multiple, e.g. 64px. */ - public static int calculateTileSize(float scaleFactor) { - float scaled = DEFAULT_TILE_SIZE * scaleFactor; + public static int calculateTileSize() { + float scaled = DEFAULT_TILE_SIZE * CanvasAdapter.getScale(); return Math.max(TILE_SIZE_MULTIPLE, Math.round(scaled / TILE_SIZE_MULTIPLE) * TILE_SIZE_MULTIPLE); }