I am trying to display an OSM layer as background layer in a map for a Java application which uses GeoTools.
My starting point is the Maven quickstart tutorial and the Tile Client user guide.
Therefore my class to reproduce my problem is quite simple:
public class OsmMapFrame
{
public static void main(String args[])
{
String baseURL = "https://tile.openstreetmap.org/";
TileService service = new OSMService("OSM", baseURL);
MapContent map = new MapContent();
map.addLayer(new TileLayer(service));
JMapFrame.showMap(map);
}
}
When I run this I get the following error:
2019-10-28T13:44:15.809+0100 SEVERE Failed to load image: https://tile.openstreetmap.org/2/3/0.png
java.io.IOException: Can't create an ImageInputStream!
at org.geotools.image.io.ImageIOExt.read(ImageIOExt.java:339)
at org.geotools.image.io.ImageIOExt.readBufferedImage(ImageIOExt.java:402)
at org.geotools.tile.Tile.loadImageTileImage(Tile.java:175)
at org.geotools.tile.Tile.getBufferedImage(Tile.java:163)
at org.geotools.tile.util.TileLayer.getTileImage(TileLayer.java:143)
at org.geotools.tile.util.TileLayer.renderTile(TileLayer.java:131)
at org.geotools.tile.util.TileLayer.renderTiles(TileLayer.java:125)
at org.geotools.tile.util.TileLayer.draw(TileLayer.java:86)
at org.geotools.renderer.lite.CompositingGroup$WrappingDirectLayer.draw(CompositingGroup.java:228)
at org.geotools.renderer.lite.StreamingRenderer$RenderDirectLayerRequest.execute(StreamingRenderer.java:3850)
at org.geotools.renderer.lite.StreamingRenderer$PainterThread.run(StreamingRenderer.java:3911)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
I assume that in my pom a dependency is missing? At the moment I use the following GeoTools dependencies in my pom.xml
.
...
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-shapefile</artifactId>
<version>${geotools.version}</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-swing</artifactId>
<version>${geotools.version}</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-tile-client</artifactId>
<version>${geotools.version}</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-epsg-hsql</artifactId>
<version>${geotools.version}</version>
</dependency>
...
I tried this with GeoTools 22.0 and 23-SNAPSHOT but in both cases I get the following picture: