Java 在地图中的平铺上实现鼠标单击事件

Java 在地图中的平铺上实现鼠标单击事件,java,swing,mouseevent,paintcomponent,Java,Swing,Mouseevent,Paintcomponent,我试图在JPanel上实现一个图像(基本上是地图上的一个平铺)的鼠标点击事件。我只是不知道该怎么做。我有一个扩展JPanel的主类。我正在从平铺服务器检索平铺,并根据特定的缩放级别在主类的paintComponent()方法中显示它们。我用同样的paintComponent()方法使用微型定位器图像来表示城市中的特定纪念碑或建筑物。它们根据相应的纬度和经度放置在这些瓷砖的顶部 当我单击这些定位器图像时,我必须能够向定位器图像添加一个事件MouseClick()。到目前为止,我读到的是我们不能向图

我试图在JPanel上实现一个图像(基本上是地图上的一个平铺)的鼠标点击事件。我只是不知道该怎么做。我有一个扩展JPanel的主类。我正在从平铺服务器检索平铺,并根据特定的缩放级别在主类的paintComponent()方法中显示它们。我用同样的paintComponent()方法使用微型定位器图像来表示城市中的特定纪念碑或建筑物。它们根据相应的纬度和经度放置在这些瓷砖的顶部


当我单击这些定位器图像时,我必须能够向定位器图像添加一个事件MouseClick()。到目前为止,我读到的是我们不能向图像添加事件处理程序。它只能添加到swing的本机组件中。如果我没有使用JLabel表示,或者甚至没有用矩形包围图像,那么如何将事件添加到微小的定位器图像中?

在具有适当投影的足够小的地图上,可以使用相对封闭面板在坐标系之间进行变换。注意以下比例,您可以交叉乘法并求解缺少的坐标,如将鼠标坐标映射到图像中像素坐标的完整示例所示

mouse.x:panelWidthInPixels::featureLongitude:tileWidthInDegrees
鼠标.y:panelHeightInPixels::featureLatitude:TileHightinDegrees

更一般地说,使用这样的库将地图的投影合并到变换中。列出了命中测试功能的模式。

很好。这将给我一些进展。