【问题标题】:geotools draw symbol on overlaygeotools 在叠加层上绘制符号
【发布时间】:2013-06-04 12:32:54
【问题描述】:

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

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

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

谢谢。

【问题讨论】:

  • 能否请您显示更多代码,或者仅用这 3 行代码完成?我最近遇到了同样的问题,但以一种更复杂的方式进行了管理。提前致谢

标签: geotools


【解决方案1】:

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

我通过扩展类 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 实例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    相关资源
    最近更新 更多