繁体   English   中英

在地图中的图块上实现鼠标单击事件

[英]Implementing a mouse click event on a tile in a map

我正在尝试为 JPanel 上的图像(基本上是地图上的图块)实现鼠标单击事件。 我只是不知道如何去做。 我有一个扩展 JPanel 的 Main 类。 我正在从瓦片服务器检索瓦片并根据特定的缩放级别在 Main 类的 paintComponent() 方法中显示它们。 我使用微小的定位器图像以相同的paintComponent() 方法表示城市中的特定纪念碑或建筑物。 它们根据相应的纬度和经度放置在这些图块的顶部。

当我单击这些定位器图像时,我必须能够向定位器图像添加一个事件 MouseClick()。 到目前为止,我所读到的是我们无法向图像添加事件处理程序。 它只能添加到 Swing 的原生组件中。 当我没有使用 JLabel 或什至用矩形包围图像时,如何将事件添加到微小的定位器图像中?

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

mouse.x : panelWidthInPixels :: featureLongitude : tileWidthInDegrees
mouse.y : panelHeightInPixels :: featureLatitude : tileHeightInDegrees

更一般地说,使用像JMapViewer这样的库将地图的投影合并到转换中。 此处概述了命中测试功能的架构。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM