From 3584c4be1ee32b6fc085d5d16acd3317978981e1 Mon Sep 17 00:00:00 2001 From: Emux Date: Sun, 13 Nov 2016 11:40:15 +0200 Subject: [PATCH] Tile grid layer scaling, closes #238 --- docs/Changelog.md | 5 +++-- .../oscim/android/test/BaseMapActivity.java | 4 +++- .../android/test/MapsforgeMapActivity.java | 3 ++- .../android/test/MarkerOverlayActivity.java | 3 ++- .../android/test/OsmJsonMapActivity.java | 3 ++- .../src/org/oscim/gdx/MainActivity.java | 2 +- vtm-app/src/org/oscim/app/MapLayers.java | 3 ++- vtm-gdx/src/org/oscim/gdx/GdxMap.java | 7 ++++++- vtm/src/org/oscim/layers/TileGridLayer.java | 21 +++++++++++++++++++ vtm/src/org/oscim/renderer/GridRenderer.java | 10 +++++++-- 10 files changed, 50 insertions(+), 11 deletions(-) diff --git a/docs/Changelog.md b/docs/Changelog.md index 32ef6979..7909bf8e 100644 --- a/docs/Changelog.md +++ b/docs/Changelog.md @@ -5,8 +5,9 @@ - Mapsforge multiple map files [#208](https://github.com/mapsforge/vtm/issues/208) - Polygon label position enhancements [#80](https://github.com/mapsforge/vtm/issues/80) - PathLayer (vtm) fix disappearing segments [#108](https://github.com/mapsforge/vtm/issues/108) -- MapFileTileSource zoom level improvements [#219](https://github.com/mapsforge/vtm/issues/219) -- Fix house numbers (nodes) visibility [#168](https://github.com/mapsforge/vtm/issues/168) +- House numbers (nodes) fix visibility [#168](https://github.com/mapsforge/vtm/issues/168) +- MapFileTileSource zoom level API enhancements [#219](https://github.com/mapsforge/vtm/issues/219) +- Tile grid layer scaling [#238](https://github.com/mapsforge/vtm/issues/238) - Internal render themes various improvements [#41](https://github.com/mapsforge/vtm/issues/41) - Many other minor improvements and bug fixes - [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aissue+is%3Aclosed+milestone%3A0.7.0) diff --git a/vtm-android-example/src/org/oscim/android/test/BaseMapActivity.java b/vtm-android-example/src/org/oscim/android/test/BaseMapActivity.java index cc9f8174..7f8241d5 100644 --- a/vtm-android-example/src/org/oscim/android/test/BaseMapActivity.java +++ b/vtm-android-example/src/org/oscim/android/test/BaseMapActivity.java @@ -1,5 +1,6 @@ /* * Copyright 2013 Hannes Janetzek + * Copyright 2016 devemux86 * * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * @@ -21,6 +22,7 @@ import android.view.Menu; import android.view.MenuItem; import org.oscim.android.cache.TileCache; +import org.oscim.backend.CanvasAdapter; import org.oscim.core.MapPosition; import org.oscim.layers.TileGridLayer; import org.oscim.layers.tile.vector.VectorTileLayer; @@ -107,7 +109,7 @@ public class BaseMapActivity extends MapActivity { } else { item.setChecked(true); if (mGridLayer == null) - mGridLayer = new TileGridLayer(mMap); + mGridLayer = new TileGridLayer(mMap, CanvasAdapter.dpi / 160); mMap.layers().add(mGridLayer); } diff --git a/vtm-android-example/src/org/oscim/android/test/MapsforgeMapActivity.java b/vtm-android-example/src/org/oscim/android/test/MapsforgeMapActivity.java index 6a3ac9d3..71b474c7 100644 --- a/vtm-android-example/src/org/oscim/android/test/MapsforgeMapActivity.java +++ b/vtm-android-example/src/org/oscim/android/test/MapsforgeMapActivity.java @@ -25,6 +25,7 @@ import android.view.MenuItem; import org.oscim.android.filepicker.FilePicker; import org.oscim.android.filepicker.FilterByFileExtension; import org.oscim.android.filepicker.ValidMapFile; +import org.oscim.backend.CanvasAdapter; import org.oscim.core.MapPosition; import org.oscim.core.Tile; import org.oscim.layers.TileGridLayer; @@ -92,7 +93,7 @@ public class MapsforgeMapActivity extends MapActivity { } else { item.setChecked(true); if (mGridLayer == null) - mGridLayer = new TileGridLayer(mMap); + mGridLayer = new TileGridLayer(mMap, CanvasAdapter.dpi / 160); mMap.layers().add(mGridLayer); } diff --git a/vtm-android-example/src/org/oscim/android/test/MarkerOverlayActivity.java b/vtm-android-example/src/org/oscim/android/test/MarkerOverlayActivity.java index ecb20a91..77b2f649 100644 --- a/vtm-android-example/src/org/oscim/android/test/MarkerOverlayActivity.java +++ b/vtm-android-example/src/org/oscim/android/test/MarkerOverlayActivity.java @@ -21,6 +21,7 @@ import android.graphics.drawable.Drawable; import android.os.Bundle; import android.widget.Toast; +import org.oscim.backend.CanvasAdapter; import org.oscim.backend.canvas.Bitmap; import org.oscim.core.GeoPoint; import org.oscim.layers.TileGridLayer; @@ -81,7 +82,7 @@ public class MarkerOverlayActivity extends BitmapTileMapActivity markerLayer.addItems(pts); - mMap.layers().add(new TileGridLayer(mMap)); + mMap.layers().add(new TileGridLayer(mMap, CanvasAdapter.dpi / 160)); } @Override diff --git a/vtm-android-example/src/org/oscim/android/test/OsmJsonMapActivity.java b/vtm-android-example/src/org/oscim/android/test/OsmJsonMapActivity.java index 3e2e8621..34d510f2 100644 --- a/vtm-android-example/src/org/oscim/android/test/OsmJsonMapActivity.java +++ b/vtm-android-example/src/org/oscim/android/test/OsmJsonMapActivity.java @@ -19,6 +19,7 @@ package org.oscim.android.test; import android.os.Bundle; +import org.oscim.backend.CanvasAdapter; import org.oscim.layers.TileGridLayer; import org.oscim.layers.tile.buildings.BuildingLayer; import org.oscim.layers.tile.vector.VectorTileLayer; @@ -65,7 +66,7 @@ public class OsmJsonMapActivity extends MapActivity { mMap.layers().add(l); mMap.layers().add(new LabelLayer(mMap, l)); - mMap.layers().add(new TileGridLayer(mMap)); + mMap.layers().add(new TileGridLayer(mMap, CanvasAdapter.dpi / 160)); mMap.setMapPosition(53.08, 8.83, Math.pow(2, 16)); } diff --git a/vtm-android-gdx/src/org/oscim/gdx/MainActivity.java b/vtm-android-gdx/src/org/oscim/gdx/MainActivity.java index 9ebba02c..656291b2 100644 --- a/vtm-android-gdx/src/org/oscim/gdx/MainActivity.java +++ b/vtm-android-gdx/src/org/oscim/gdx/MainActivity.java @@ -58,7 +58,7 @@ public class MainActivity extends AndroidApplication { @Override public void createLayers() { TileSource ts = new OSciMap4TileSource(); - initDefaultLayers(ts, true, true, true); + initDefaultLayers(ts, true, true, true, CanvasAdapter.dpi / 160); } } } diff --git a/vtm-app/src/org/oscim/app/MapLayers.java b/vtm-app/src/org/oscim/app/MapLayers.java index 56050e3b..f7bb2fe9 100644 --- a/vtm-app/src/org/oscim/app/MapLayers.java +++ b/vtm-app/src/org/oscim/app/MapLayers.java @@ -21,6 +21,7 @@ import android.content.SharedPreferences; import android.preference.PreferenceManager; import org.oscim.android.cache.TileCache; +import org.oscim.backend.CanvasAdapter; import org.oscim.layers.GenericLayer; import org.oscim.layers.Layer; import org.oscim.layers.TileGridLayer; @@ -154,7 +155,7 @@ public class MapLayers { if (enable) { if (mGridOverlay == null) - mGridOverlay = new TileGridLayer(App.map); + mGridOverlay = new TileGridLayer(App.map, CanvasAdapter.dpi / 160); App.map.layers().add(mGridOverlay); } else { diff --git a/vtm-gdx/src/org/oscim/gdx/GdxMap.java b/vtm-gdx/src/org/oscim/gdx/GdxMap.java index 85bc0e19..4af31462 100644 --- a/vtm-gdx/src/org/oscim/gdx/GdxMap.java +++ b/vtm-gdx/src/org/oscim/gdx/GdxMap.java @@ -47,6 +47,11 @@ public abstract class GdxMap implements ApplicationListener { protected void initDefaultLayers(TileSource tileSource, boolean tileGrid, boolean labels, boolean buildings) { + initDefaultLayers(tileSource, tileGrid, labels, buildings, 1); + } + + protected void initDefaultLayers(TileSource tileSource, boolean tileGrid, boolean labels, + boolean buildings, float scale) { Layers layers = mMap.layers(); if (tileSource != null) { @@ -61,7 +66,7 @@ public abstract class GdxMap implements ApplicationListener { } if (tileGrid) - layers.add(new TileGridLayer(mMap)); + layers.add(new TileGridLayer(mMap, scale)); } @Override diff --git a/vtm/src/org/oscim/layers/TileGridLayer.java b/vtm/src/org/oscim/layers/TileGridLayer.java index f2446571..054115db 100644 --- a/vtm/src/org/oscim/layers/TileGridLayer.java +++ b/vtm/src/org/oscim/layers/TileGridLayer.java @@ -1,3 +1,20 @@ +/* + * Copyright 2012 Hannes Janetzek + * Copyright 2016 devemux86 + * + * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). + * + * 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 + * Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with + * this program. If not, see . + */ package org.oscim.layers; import org.oscim.backend.canvas.Paint.Cap; @@ -12,6 +29,10 @@ public class TileGridLayer extends GenericLayer { super(map, new GridRenderer()); } + public TileGridLayer(Map map, float scale) { + super(map, new GridRenderer(scale)); + } + public TileGridLayer(Map map, int color, float width, int repeat) { super(map, new GridRenderer(repeat, new LineStyle(color, width, Cap.BUTT), null)); } diff --git a/vtm/src/org/oscim/renderer/GridRenderer.java b/vtm/src/org/oscim/renderer/GridRenderer.java index 68f4aa91..59029a68 100644 --- a/vtm/src/org/oscim/renderer/GridRenderer.java +++ b/vtm/src/org/oscim/renderer/GridRenderer.java @@ -18,6 +18,7 @@ package org.oscim.renderer; import org.oscim.backend.canvas.Color; +import org.oscim.backend.canvas.Paint; import org.oscim.backend.canvas.Paint.Cap; import org.oscim.core.GeometryBuffer; import org.oscim.core.Tile; @@ -38,9 +39,14 @@ public class GridRenderer extends BucketRenderer { private int mCurX, mCurY, mCurZ; public GridRenderer() { - this(1, new LineStyle(Color.LTGRAY, 1.2f, Cap.BUTT), + this(1); + } + + public GridRenderer(float scale) { + this(1, new LineStyle(Color.LTGRAY, 1.2f * scale, Cap.BUTT), TextStyle.builder() - .fontSize(22) + .fontSize(12 * scale) + .fontStyle(Paint.FontStyle.BOLD) .color(Color.RED) .build()); }