【问题标题】:Making bounding box for handling label collision on a map制作边界框以处理地图上的标签碰撞
【发布时间】:2017-09-17 06:05:47
【问题描述】:

在我的应用程序中,我必须做出安排,以便正确处理道路/街道的重叠标签。

所以我决定确定每个标签的边界框,然后检查它们是否有碰撞。但我遇到了一个问题。

我所拥有的是沿道路对齐的标签的经纬度坐标。所以我有边界框的经纬度中心。我还有标签的高度和宽度(以米为单位)以及屏幕点。但我无法决定矩形边应该采用什么单位才能进行正确的碰撞检测。

矩形应该用度数测量还是用米测量或用屏幕点来制作?

【问题讨论】:

  • 在我看来,您需要的是将中心和大小保持在相同的单位中。只要您使用相同的单位,任何单位都可以。

标签: java gis latitude-longitude


【解决方案1】:

如果您使用的是墨卡托投影图,那么我建议您将所有单位转换为 X/Y。

方法如下:

RAD2DEG = 180 / Math.PI;
PI_4 = Math.PI / 4;

function y2lat(y) { return (Math.atan(Math.exp(y / RAD2DEG)) / PI_4 - 1) * 90; }
function x2lon(x) { return x; }

function lat2y(lat) { return Math.log(Math.tan((lat / 90 + 1) * PI_4 )) * RAD2DEG; }
function lon2y(lon) { return lon; }

取自OpenStreetMaps Wiki

【讨论】:

    猜你喜欢
    • 2011-04-21
    • 2013-02-18
    • 2013-04-01
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    • 2014-02-04
    • 1970-01-01
    相关资源
    最近更新 更多