Automatic tile size calculation #92

This commit is contained in:
Emux
2017-09-12 20:21:56 +03:00
parent f81dff2365
commit 9283b80594
7 changed files with 9 additions and 13 deletions

View File

@@ -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());

View File

@@ -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());

View File

@@ -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());

View File

@@ -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;

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);
}