Skip to content

Commit b32d7ed

Browse files
committed
upgrade mapsforge to 0.25 + changes necessary
1 parent 43ce863 commit b32d7ed

File tree

5 files changed

+117
-26
lines changed

5 files changed

+117
-26
lines changed

apps/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<name>HM Small Applications Components</name>
1616

1717
<properties>
18-
<mapsforge.version>0.15.0</mapsforge.version>
18+
<mapsforge.version>0.25.0</mapsforge.version>
1919
</properties>
2020

2121
<dependencies>

apps/src/main/java/org/hortonmachine/nww/layers/defaults/raster/MapsforgeNwwLayer.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,29 +25,23 @@
2525

2626
import javax.imageio.ImageIO;
2727

28-
import org.hortonmachine.gears.utils.files.FileUtilities;
2928
import org.hortonmachine.nww.layers.defaults.NwwLayer;
3029
import org.hortonmachine.nww.utils.NwwUtilities;
3130
import org.hortonmachine.nww.utils.cache.CacheUtils;
31+
import org.locationtech.jts.geom.Coordinate;
3232
import org.mapsforge.core.model.BoundingBox;
3333
import org.mapsforge.core.model.LatLong;
3434
import org.mapsforge.map.awt.graphics.AwtGraphicFactory;
35-
import org.mapsforge.map.controller.FrameBufferController;
3635
import org.mapsforge.map.datastore.MultiMapDataStore;
3736
import org.mapsforge.map.datastore.MultiMapDataStore.DataPolicy;
3837
import org.mapsforge.map.layer.cache.InMemoryTileCache;
39-
import org.mapsforge.map.layer.hills.HillsRenderConfig;
4038
import org.mapsforge.map.layer.labels.TileBasedLabelStore;
4139
import org.mapsforge.map.layer.renderer.DatabaseRenderer;
42-
import org.mapsforge.map.layer.renderer.MapWorkerPool;
4340
import org.mapsforge.map.model.DisplayModel;
4441
import org.mapsforge.map.reader.MapFile;
45-
import org.mapsforge.map.reader.ReadBuffer;
46-
import org.mapsforge.map.rendertheme.InternalRenderTheme;
42+
import org.mapsforge.map.rendertheme.internal.MapsforgeThemes;
4743
import org.mapsforge.map.rendertheme.rule.RenderThemeFuture;
4844

49-
import org.locationtech.jts.geom.Coordinate;
50-
5145
import gov.nasa.worldwind.avlist.AVKey;
5246
import gov.nasa.worldwind.avlist.AVList;
5347
import gov.nasa.worldwind.avlist.AVListImpl;
@@ -112,7 +106,7 @@ private static OsmTilegenerator getTilegenerator(File[] mapsforgeFiles, Integer
112106
InMemoryTileCache tileCache = new InMemoryTileCache(200);
113107
DatabaseRenderer renderer = new DatabaseRenderer(mapDatabase, AwtGraphicFactory.INSTANCE, tileCache,
114108
new TileBasedLabelStore(tileCache.getCapacityFirstLevel()), true, true, null);
115-
InternalRenderTheme xmlRenderTheme = InternalRenderTheme.DEFAULT;
109+
MapsforgeThemes xmlRenderTheme = MapsforgeThemes.DEFAULT;
116110
RenderThemeFuture theme = new RenderThemeFuture(AwtGraphicFactory.INSTANCE, xmlRenderTheme, model);
117111
// super important!! without the following line, all rendering
118112
// activities will block until the theme is created.
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
2+
package org.hortonmachine.utils;
3+
4+
import java.util.prefs.BackingStoreException;
5+
import java.util.prefs.Preferences;
6+
7+
public class JavaPreferences {
8+
private final Preferences preferences;
9+
10+
public JavaPreferences(Preferences preferences) {
11+
this.preferences = preferences;
12+
}
13+
14+
public synchronized void clear() {
15+
try {
16+
this.preferences.clear();
17+
} catch (BackingStoreException e) {
18+
throw new IllegalStateException(e);
19+
}
20+
}
21+
22+
public synchronized boolean getBoolean(String key, boolean defaultValue) {
23+
return this.preferences.getBoolean(key, defaultValue);
24+
}
25+
26+
public synchronized byte getByte(String key, byte defaultValue) {
27+
int intValue = this.preferences.getInt(key, defaultValue);
28+
if (intValue < Byte.MIN_VALUE || intValue > Byte.MAX_VALUE) {
29+
throw new IllegalStateException("byte value out of range: " + intValue);
30+
}
31+
return (byte) intValue;
32+
}
33+
34+
public synchronized double getDouble(String key, double defaultValue) {
35+
return this.preferences.getDouble(key, defaultValue);
36+
}
37+
38+
public synchronized float getFloat(String key, float defaultValue) {
39+
return this.preferences.getFloat(key, defaultValue);
40+
}
41+
42+
public synchronized int getInt(String key, int defaultValue) {
43+
return this.preferences.getInt(key, defaultValue);
44+
}
45+
46+
public synchronized long getLong(String key, long defaultValue) {
47+
return this.preferences.getLong(key, defaultValue);
48+
}
49+
50+
public synchronized String getString(String key, String defaultValue) {
51+
return this.preferences.get(key, defaultValue);
52+
}
53+
54+
public synchronized void putBoolean(String key, boolean value) {
55+
this.preferences.putBoolean(key, value);
56+
}
57+
58+
public synchronized void putByte(String key, byte value) {
59+
this.preferences.putInt(key, value);
60+
}
61+
62+
public synchronized void putDouble(String key, double value) {
63+
this.preferences.putDouble(key, value);
64+
}
65+
66+
public synchronized void putFloat(String key, float value) {
67+
this.preferences.putFloat(key, value);
68+
}
69+
70+
public synchronized void putInt(String key, int value) {
71+
this.preferences.putInt(key, value);
72+
}
73+
74+
public synchronized void putLong(String key, long value) {
75+
this.preferences.putLong(key, value);
76+
}
77+
78+
public synchronized void putString(String key, String value) {
79+
this.preferences.put(key, value);
80+
}
81+
82+
public synchronized void save() {
83+
try {
84+
this.preferences.flush();
85+
} catch (BackingStoreException e) {
86+
throw new IllegalStateException(e);
87+
}
88+
}
89+
}

apps/src/main/java/org/hortonmachine/utils/Mapsforge2MbtilesConverter.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@
4949
import org.mapsforge.map.layer.renderer.DatabaseRenderer;
5050
import org.mapsforge.map.model.DisplayModel;
5151
import org.mapsforge.map.reader.MapFile;
52-
import org.mapsforge.map.rendertheme.InternalRenderTheme;
52+
import org.mapsforge.map.rendertheme.XmlRenderTheme;
53+
import org.mapsforge.map.rendertheme.internal.MapsforgeThemes;
5354
import org.mapsforge.map.rendertheme.rule.RenderThemeFuture;
5455
import org.opengis.referencing.crs.CoordinateReferenceSystem;
5556

@@ -254,7 +255,7 @@ private OsmTilegenerator getGenerator( ReferencedEnvelope llBounds ) {
254255
InMemoryTileCache tileCache = new InMemoryTileCache(200);
255256
DatabaseRenderer renderer = new DatabaseRenderer(mapDatabase, AwtGraphicFactory.INSTANCE, tileCache,
256257
new TileBasedLabelStore(tileCache.getCapacityFirstLevel()), true, true, null);
257-
InternalRenderTheme xmlRenderTheme = InternalRenderTheme.DEFAULT;
258+
MapsforgeThemes xmlRenderTheme = MapsforgeThemes.DEFAULT;
258259
RenderThemeFuture theme = new RenderThemeFuture(AwtGraphicFactory.INSTANCE, xmlRenderTheme, model);
259260
// super important!! without the following line, all rendering
260261
// activities will block until the theme is created.

apps/src/main/java/org/hortonmachine/utils/MapsforgeSimpleViewer.java

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import org.mapsforge.core.model.Point;
2121
import org.mapsforge.core.util.LatLongUtils;
2222
import org.mapsforge.map.awt.graphics.AwtGraphicFactory;
23-
import org.mapsforge.map.awt.util.JavaPreferences;
2423
import org.mapsforge.map.awt.view.MapView;
2524
import org.mapsforge.map.datastore.MapDataStore;
2625
import org.mapsforge.map.datastore.MultiMapDataStore;
@@ -35,11 +34,10 @@
3534
import org.mapsforge.map.layer.download.tilesource.OpenStreetMapMapnik;
3635
import org.mapsforge.map.layer.download.tilesource.TileSource;
3736
import org.mapsforge.map.layer.renderer.TileRendererLayer;
38-
import org.mapsforge.map.model.IMapViewPosition;
37+
import org.mapsforge.map.model.MapViewPosition;
3938
import org.mapsforge.map.model.Model;
40-
import org.mapsforge.map.model.common.PreferencesFacade;
4139
import org.mapsforge.map.reader.MapFile;
42-
import org.mapsforge.map.rendertheme.InternalRenderTheme;
40+
import org.mapsforge.map.rendertheme.internal.MapsforgeThemes;
4341

4442
public final class MapsforgeSimpleViewer {
4543
private static final GraphicFactory GRAPHIC_FACTORY = AwtGraphicFactory.INSTANCE;
@@ -48,15 +46,18 @@ public final class MapsforgeSimpleViewer {
4846

4947
private static final String MESSAGE = "Are you sure you want to exit the application?";
5048
private static final String TITLE = "Confirm close";
51-
49+
private static final String LATITUDE = "latitude";
50+
private static final String LONGITUDE = "longitude";
51+
private static final String ZOOM_LEVEL = "zoomLevel";
52+
5253
public static void main( String[] args ) {
5354
File mapFile = new File(
54-
"/home/hydrologis/data/mapsforge/italy.map");
55+
"/home/hydrologis/Documents/smash/maps/italy.map");
5556
List<File> mapFiles = Arrays.asList(mapFile);
5657
final MapView mapView = createMapView();
5758
final BoundingBox boundingBox = addLayers(mapView, mapFiles);
5859

59-
final PreferencesFacade preferencesFacade = new JavaPreferences(Preferences.userNodeForPackage(MapsforgeSimpleViewer.class));
60+
final JavaPreferences preferences = new JavaPreferences(Preferences.userNodeForPackage(MapsforgeSimpleViewer.class));
6061

6162
final JFrame frame = new JFrame();
6263
frame.setTitle("Mapsforge Simple Viewer");
@@ -70,7 +71,10 @@ public static void main( String[] args ) {
7071
public void windowClosing( WindowEvent e ) {
7172
int result = JOptionPane.showConfirmDialog(frame, MESSAGE, TITLE, JOptionPane.YES_NO_OPTION);
7273
if (result == JOptionPane.YES_OPTION) {
73-
mapView.getModel().save(preferencesFacade);
74+
final MapViewPosition mapViewPosition = mapView.getModel().mapViewPosition;
75+
preferences.putDouble(LATITUDE, mapViewPosition.getCenter().latitude);
76+
preferences.putDouble(LONGITUDE, mapViewPosition.getCenter().longitude);
77+
preferences.putByte(ZOOM_LEVEL, mapViewPosition.getZoomLevel());
7478
mapView.destroyAll();
7579
AwtGraphicFactory.clearResourceMemoryCache();
7680
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
@@ -80,11 +84,14 @@ public void windowClosing( WindowEvent e ) {
8084
@Override
8185
public void windowOpened( WindowEvent e ) {
8286
final Model model = mapView.getModel();
83-
model.init(preferencesFacade);
87+
double latitude = preferences.getDouble(LATITUDE, 0);
88+
double longitude = preferences.getDouble(LONGITUDE, 0);
89+
byte zoomLevel = preferences.getByte(ZOOM_LEVEL, (byte) 0);
90+
mapView.getModel().mapViewPosition.setMapPosition(new MapPosition(new LatLong(latitude, longitude), zoomLevel));
8491
if (model.mapViewPosition.getZoomLevel() == 0 || !boundingBox.contains(model.mapViewPosition.getCenter())) {
85-
byte zoomLevel = LatLongUtils.zoomForBounds(model.mapViewDimension.getDimension(), boundingBox,
92+
byte zoomForBounds = LatLongUtils.zoomForBounds(model.mapViewDimension.getDimension(), boundingBox,
8693
model.displayModel.getTileSize());
87-
model.mapViewPosition.setMapPosition(new MapPosition(boundingBox.getCenterPoint(), zoomLevel));
94+
model.mapViewPosition.setMapPosition(new MapPosition(boundingBox.getCenterPoint(), zoomForBounds));
8895
}
8996
}
9097
});
@@ -146,7 +153,7 @@ private static MapView createMapView() {
146153
}
147154

148155
@SuppressWarnings("unused")
149-
private static TileDownloadLayer createTileDownloadLayer( TileCache tileCache, IMapViewPosition mapViewPosition,
156+
private static TileDownloadLayer createTileDownloadLayer( TileCache tileCache, MapViewPosition mapViewPosition,
150157
TileSource tileSource ) {
151158
return new TileDownloadLayer(tileCache, mapViewPosition, tileSource, GRAPHIC_FACTORY){
152159
@Override
@@ -158,7 +165,7 @@ public boolean onTap( LatLong tapLatLong, Point layerXY, Point tapXY ) {
158165
}
159166

160167
private static TileRendererLayer createTileRendererLayer( TileCache tileCache, MapDataStore mapDataStore,
161-
IMapViewPosition mapViewPosition ) {
168+
MapViewPosition mapViewPosition ) {
162169
TileRendererLayer tileRendererLayer = new TileRendererLayer(tileCache, mapDataStore, mapViewPosition, false, true, false,
163170
GRAPHIC_FACTORY){
164171
@Override
@@ -167,7 +174,7 @@ public boolean onTap( LatLong tapLatLong, Point layerXY, Point tapXY ) {
167174
return true;
168175
}
169176
};
170-
tileRendererLayer.setXmlRenderTheme(InternalRenderTheme.DEFAULT);
177+
tileRendererLayer.setXmlRenderTheme(MapsforgeThemes.DEFAULT);
171178
return tileRendererLayer;
172179
}
173180

0 commit comments

Comments
 (0)