XAML-Map-Control/MapsforgeTiles/README.md
2026-02-16 10:18:19 +01:00

2.1 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 that wraps 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.

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 with IKVM's MavenReference succeeds, running a RenderThemeFuture always fails with a NoClassDefFoundError exception for org.xmlpull.v1.XmlPullParserFactory.

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 MapsforgeTiles directory, by a custom PreBuild event in the project files which executes the command

mvn package

So in order to build the MapsforgeTiles libraries, a Maven installation is required.