1

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

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

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

谢谢你。

4

1 回答 1

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 实例。

于 2013-06-10T14:07:35.950 回答