Automatic tile size calculation #92
This commit is contained in:
@@ -21,7 +21,6 @@ import android.os.Bundle;
|
|||||||
|
|
||||||
import org.oscim.android.MapPreferences;
|
import org.oscim.android.MapPreferences;
|
||||||
import org.oscim.android.MapView;
|
import org.oscim.android.MapView;
|
||||||
import org.oscim.core.Tile;
|
|
||||||
import org.oscim.map.Map;
|
import org.oscim.map.Map;
|
||||||
|
|
||||||
public class MapActivity extends Activity {
|
public class MapActivity extends Activity {
|
||||||
@@ -41,7 +40,6 @@ public class MapActivity extends Activity {
|
|||||||
|
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
Tile.SIZE = Tile.calculateTileSize(getResources().getDisplayMetrics().scaledDensity);
|
|
||||||
setContentView(mContentView);
|
setContentView(mContentView);
|
||||||
|
|
||||||
setTitle(getClass().getSimpleName());
|
setTitle(getClass().getSimpleName());
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ import android.view.ViewGroup;
|
|||||||
import org.oscim.android.MapPreferences;
|
import org.oscim.android.MapPreferences;
|
||||||
import org.oscim.android.MapView;
|
import org.oscim.android.MapView;
|
||||||
import org.oscim.core.MapPosition;
|
import org.oscim.core.MapPosition;
|
||||||
import org.oscim.core.Tile;
|
|
||||||
import org.oscim.layers.GroupLayer;
|
import org.oscim.layers.GroupLayer;
|
||||||
import org.oscim.layers.tile.buildings.BuildingLayer;
|
import org.oscim.layers.tile.buildings.BuildingLayer;
|
||||||
import org.oscim.layers.tile.vector.VectorTileLayer;
|
import org.oscim.layers.tile.vector.VectorTileLayer;
|
||||||
@@ -38,7 +37,6 @@ public class MapFragmentActivity extends FragmentActivity {
|
|||||||
|
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
Tile.SIZE = Tile.calculateTileSize(getResources().getDisplayMetrics().scaledDensity);
|
|
||||||
setContentView(R.layout.activity_map_fragment);
|
setContentView(R.layout.activity_map_fragment);
|
||||||
|
|
||||||
setTitle(getClass().getSimpleName());
|
setTitle(getClass().getSimpleName());
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016 Marvin W
|
* Copyright 2016 Marvin W
|
||||||
* Copyright 2016 devemux86
|
* Copyright 2016-2017 devemux86
|
||||||
*
|
*
|
||||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
* 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.MapPreferences;
|
||||||
import org.oscim.android.MapView;
|
import org.oscim.android.MapView;
|
||||||
import org.oscim.core.Tile;
|
|
||||||
import org.oscim.layers.tile.buildings.BuildingLayer;
|
import org.oscim.layers.tile.buildings.BuildingLayer;
|
||||||
import org.oscim.layers.tile.vector.VectorTileLayer;
|
import org.oscim.layers.tile.vector.VectorTileLayer;
|
||||||
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
||||||
@@ -36,7 +35,6 @@ public class MultiMapActivity extends Activity {
|
|||||||
|
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
Tile.SIZE = Tile.calculateTileSize(getResources().getDisplayMetrics().scaledDensity);
|
|
||||||
setContentView(R.layout.activity_map_multi);
|
setContentView(R.layout.activity_map_multi);
|
||||||
|
|
||||||
setTitle(getClass().getSimpleName());
|
setTitle(getClass().getSimpleName());
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ public class MainActivity extends AndroidApplication {
|
|||||||
|
|
||||||
DisplayMetrics metrics = getResources().getDisplayMetrics();
|
DisplayMetrics metrics = getResources().getDisplayMetrics();
|
||||||
CanvasAdapter.dpi = (int) (metrics.scaledDensity * CanvasAdapter.DEFAULT_DPI);
|
CanvasAdapter.dpi = (int) (metrics.scaledDensity * CanvasAdapter.DEFAULT_DPI);
|
||||||
Tile.SIZE = Tile.calculateTileSize(metrics.scaledDensity);
|
Tile.SIZE = Tile.calculateTileSize();
|
||||||
|
|
||||||
AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
|
AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
|
||||||
cfg.stencil = 8;
|
cfg.stencil = 8;
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ import org.oscim.android.input.AndroidMotionEvent;
|
|||||||
import org.oscim.android.input.GestureHandler;
|
import org.oscim.android.input.GestureHandler;
|
||||||
import org.oscim.backend.CanvasAdapter;
|
import org.oscim.backend.CanvasAdapter;
|
||||||
import org.oscim.backend.GLAdapter;
|
import org.oscim.backend.GLAdapter;
|
||||||
|
import org.oscim.core.Tile;
|
||||||
import org.oscim.map.Map;
|
import org.oscim.map.Map;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@@ -82,6 +83,7 @@ public class MapView extends GLSurfaceView {
|
|||||||
|
|
||||||
DisplayMetrics metrics = getResources().getDisplayMetrics();
|
DisplayMetrics metrics = getResources().getDisplayMetrics();
|
||||||
CanvasAdapter.dpi = (int) (metrics.scaledDensity * CanvasAdapter.DEFAULT_DPI);
|
CanvasAdapter.dpi = (int) (metrics.scaledDensity * CanvasAdapter.DEFAULT_DPI);
|
||||||
|
Tile.SIZE = Tile.calculateTileSize();
|
||||||
|
|
||||||
/* Initialize the Map */
|
/* Initialize the Map */
|
||||||
mMap = new AndroidMap(this);
|
mMap = new AndroidMap(this);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/* Copyright 2010, 2011, 2012 mapsforge.org
|
/* Copyright 2010, 2011, 2012 mapsforge.org
|
||||||
* Copyright 2012 Hannes Janetzek
|
* 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
|
* 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
|
* 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.location.LocationHandler;
|
||||||
import org.oscim.app.preferences.EditPreferences;
|
import org.oscim.app.preferences.EditPreferences;
|
||||||
import org.oscim.core.GeoPoint;
|
import org.oscim.core.GeoPoint;
|
||||||
import org.oscim.core.Tile;
|
|
||||||
import org.oscim.overlay.DistanceTouchOverlay;
|
import org.oscim.overlay.DistanceTouchOverlay;
|
||||||
import org.osmdroid.location.POI;
|
import org.osmdroid.location.POI;
|
||||||
import org.osmdroid.overlays.MapEventsReceiver;
|
import org.osmdroid.overlays.MapEventsReceiver;
|
||||||
@@ -74,7 +73,6 @@ public class TileMap extends MapActivity implements MapEventsReceiver {
|
|||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
Tile.SIZE = Tile.calculateTileSize(getResources().getDisplayMetrics().scaledDensity);
|
|
||||||
setContentView(R.layout.activity_tilemap);
|
setContentView(R.layout.activity_tilemap);
|
||||||
App.view = (MapView) findViewById(R.id.mapView);
|
App.view = (MapView) findViewById(R.id.mapView);
|
||||||
registerMapView(App.view);
|
registerMapView(App.view);
|
||||||
|
|||||||
@@ -18,6 +18,8 @@
|
|||||||
*/
|
*/
|
||||||
package org.oscim.core;
|
package org.oscim.core;
|
||||||
|
|
||||||
|
import org.oscim.backend.CanvasAdapter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A tile represents a rectangular part of the world map. All tiles can be
|
* 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
|
* 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.
|
* Calculate tile size (256px) with a scale factor.
|
||||||
* Clamp tile size to a preset multiple, e.g. 64px.
|
* Clamp tile size to a preset multiple, e.g. 64px.
|
||||||
*/
|
*/
|
||||||
public static int calculateTileSize(float scaleFactor) {
|
public static int calculateTileSize() {
|
||||||
float scaled = DEFAULT_TILE_SIZE * scaleFactor;
|
float scaled = DEFAULT_TILE_SIZE * CanvasAdapter.getScale();
|
||||||
return Math.max(TILE_SIZE_MULTIPLE,
|
return Math.max(TILE_SIZE_MULTIPLE,
|
||||||
Math.round(scaled / TILE_SIZE_MULTIPLE) * TILE_SIZE_MULTIPLE);
|
Math.round(scaled / TILE_SIZE_MULTIPLE) * TILE_SIZE_MULTIPLE);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user