diff --git a/app/src/main/java/net/osmtracker/activity/DisplayTrackMap.java b/app/src/main/java/net/osmtracker/activity/DisplayTrackMap.java index 4e9f559d1..1a3311f20 100644 --- a/app/src/main/java/net/osmtracker/activity/DisplayTrackMap.java +++ b/app/src/main/java/net/osmtracker/activity/DisplayTrackMap.java @@ -28,6 +28,7 @@ import android.os.Bundle; import android.os.Handler; import android.preference.PreferenceManager; +import android.util.DisplayMetrics; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; @@ -187,6 +188,8 @@ public void onCreate(Bundle savedInstanceState) { selectTileSource(); + setTileDpiScaling(); + createOverlays(); // Create content observer for trackpoints @@ -220,6 +223,14 @@ public void selectTileSource() { Log.e("TileMapName active", mapTile); osmView.setTileSource(selectMapTile(mapTile)); } + + /** + * Make text on map better readable on high DPI displays + */ + public void setTileDpiScaling () { + osmView.setTilesScaledToDpi(true); + } + /** * Returns a ITileSource for the map according to the selected mapTile @@ -278,6 +289,8 @@ private void resumeActivity(){ selectTileSource(); + setTileDpiScaling(); + // Refresh way points wayPointsOverlay.refresh(); @@ -355,7 +368,12 @@ public boolean onTouchEvent(MotionEvent event) { * Creates overlays over the OSM view */ private void createOverlays() { - pathOverlay = new PathOverlay(Color.BLUE, this); + DisplayMetrics metrics = new DisplayMetrics(); + this.getWindowManager().getDefaultDisplay().getMetrics(metrics); + + // set with to hopefully DPI independent 0.5mm + pathOverlay = new PathOverlay(Color.BLUE, (float)(metrics.densityDpi / 25.4 / 2),this); + osmView.getOverlays().add(pathOverlay); myLocationOverlay = new SimpleLocationOverlay(this);