在地图内容中添加OSM服务并使用streamrenderer类的油漆方法后,无限运行
当我在MAPCONTENT中添加OSM服务时
mapContent.addLayer(new AsyncTileLayer(new OSMService("Mapnik", "http://tile.openstreetmap.org/")));
,然后使用流媒体类的油漆方法时,会有无限运行。 更确切地说,无限运行发生在流renderer类文件的第563行中:
painterFuture.get();
我调用油漆方法将我添加到MAPCONTENT中的内容,即在此处和OSM映射。
MapContent mapContent = new MapContent();
mapContent.addLayer(layer);
mapContent.addLayer(new AsyncTileLayer(new OSMService("Mapnik", "http://tile.openstreetmap.org/")));
mapContent.getViewport().setBounds(layer.getBounds());
GTRenderer renderer = new StreamingRenderer();
renderer.setMapContent(mapContent);
Rectangle imageBounds;
ReferencedEnvelope mapBounds;
try {
mapBounds = map.getMaxBounds();
double heightToWidth = mapBounds.getSpan(1) / mapBounds.getSpan(0);
imageBounds = new Rectangle(5, 5, 1000, (int) Math.round(1000 * heightToWidth) + 20);
} catch (Exception e) {
// failed to access map layers
throw new RuntimeException(e);
}
BufferedImage mapBufferedImage = new BufferedImage(imageBounds.width, imageBounds.height, BufferedImage.TYPE_INT_ARGB);
Graphics2D gr = mapBufferedImage.createGraphics();
renderer.paint(gr, imageBounds, mapBounds);
这是painterfuture对象的内容:state = 0,callable = java.util.concurrent.executors $ runnableDapter@353333df16 [包装task = org.geotools.renderer.lite.lite.lite.lite.streamingrenderer- streamingrendererqunrenderqainterqainterqainterqainterthread read rade @15d0849] =“ thread [pool-1-thread-1,5,main]”,waiter = null
仅有featurelayer而不是OSM服务时,painterfuture对象被标记为正态上并且包含:state = 2,callable = 2,callable = 2 null,结果= null,runner = null,waiter = null。
谢谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论