Search code examples
javazoomingjmapviewer

Loading JMapViewer from a specified zoom level


I am trying to load JMapViewer from a specified zoom level for my offline use. I have been able to load the tiles from my local machine from zoom levels 1 to 18 and render it well. The JMapViewer works well only when minimum zoom level is 0 , 1, 2 or 3. Suppose I change the minimum zoom level to anything greater than 3, the JMapViewer throws a null pointer exception while trying to get the position while drawing the tiles and the program doesn't start at all. Is there any way to load them from a particular zoom after making a code change.

The following are the links I've referred to:

http://svn.openstreetmap.org/applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/

http://josm.openstreetmap.de/query?col=id&col=summary&col=type&col=status&col=priority&col=milestone&col=component&col=time&order=id&report=2

http://paulusschoutsen.nl/blog/2012/08/java-component-jmapviewer-with-offline-openstreetmap-support/


Solution

  • I guess I figured it out. In JMapViewer.java, we need to specify the minimum zoom level as a parameter to OfflineOsmTileSource. Then we need to specify setDisplayPosition(tileSource.LonToX((lon1 + lon2) / 2, zoom_level),tileSource.LatToY((lat1 + lat2)/2, zoom_level), zoom_level);

    Hope it helps somebody.

    Cheers!