geotools在叠加上绘制符号

时间:2013-06-04 12:32:54

标签: geotools

我是Geotools的新手。我正在开发一个显示地图的简单应用程序,我想在其上动态放置位图或矢量符号(例如,显示当前位置的位置,就像在导航系统中一样)。 现在,我已经完成的工作是:

  • 显示给定一个或多个shapefile的地图。
  • 将地图置于最后插入位置的中心位置。
  • 在需要时为新图层添加形状。

我需要做的是在地图区域的给定坐标处创建带有图像的叠加层(要清楚,我不想在磁盘上生成栅格图层,我只想在屏幕上绘制)。 我的猜测是我必须以某种方式直接使用JMapPane中的Graphics2D实例,这是正确的吗?在这种情况下,如何从地图坐标转换为绘图窗格上的像素坐标?或者是否有一些我应该寻找的geotools函数/类?

谢谢。

1 个答案:

答案 0 :(得分:3)

回答自己,因为我找到了解决方案。

我是通过扩展类 org.geotools.map.DirectLayer 来实现的,它提供了一种通过扩展 draw(Graphics2D,MapContent)方法来定义自定义图层的方法。通过使用geotools提供的worldToScreen仿射变换,将图形元素放置在正确的坐标处。例如,要定义一个放置在当前位置的Point2D给定真实世界坐标:

AffineTransform worldToScreen = viewport.getWorldToScreen();
Point2D worldPoint = new Point2D.Double(currentPosition.x, currentPosition.y);
Point2D screenPoint = worldToScreen.transform(worldPoint, null);

定义draw()方法后,只需实例化并添加为MapContent实例的图层。