2.2 KiB
MapsforgeTiles
Tile source libraries for loading map content from vector map files.
The MapsforgeTileSource classes in these libraries make use of a TileRenderer class in a separate platform-independent
.NET class library called MapsforgeWrapper. TileRenderer uses the Mapsforge
Java library, which is made accessible to .NET via IKVM, a Java Virtual Machine for .NET.
Mapsforge is published under a simplified variant of the
LGPL v3 license. Copies of the LGPL and GPL are included here.
Map files can be downloaded from the Mapsforge Download Server.
MapsforgeTileSource is initialized by a static Initialize method that takes the file path to either a single map file
or a directory containing multiple map files, and a DPI scale factor that controls the size of the rendered map tiles.
The MapsforgeTileSource instance constructor takes a string parameter that specifies the Mapsforge theme used by its TileRenderer.
See MapsforgeThemes.java
for available theme names. A second, optional constructor parameter specifies the size of the TileRenderer's internal tile cache.
Code sample:
MapControl.MapsforgeTiles.MapsforgeTileSource.Initialize(".\mapfiles", 1.5f);
map.MapLayer = new MapTileLayer
{
TileSource = new MapControl.MapsforgeTiles.MapsforgeTileSource("Default")
};
While building MapsforgeWrapper with IKVM's MavenReference succeeds, running a RenderThemeFuture
always fails with a NoClassDefFoundError exception for org.xmlpull.v1.XmlPullParserException.
An alternative approach is to import Mapsforge classes by an IkvmReference that references
a local JAR file with all required dependencies. This JAR is built from pom.xml in the project
directory, by a custom PreBuild event in MapsforgeWrapper.csproj which executes the command
mvn package
So in order to build one of the MapsforgeTiles libraries, a Maven installation is required.