制作用于在地图上处理标签碰撞的边界框

时间:2017-09-17 06:05:48

标签: java gis latitude-longitude

在我的申请中,我必须作出安排,以便正确处理道路/街道的重叠标签。

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

我所拥有的是沿着道路对齐的标签的纬度坐标。所以我有一个拉长的边界框中心。我还有标签的高度和宽度(以米为单位)以及屏幕点。但我无法确定矩形边应该具有哪些单位以进行正确的碰撞检测。

应使用度数测量或仪表测量或屏幕点来制作矩形吗?

1 个答案:

答案 0 :(得分:0)

如果您正在使用墨卡托投影贴图,那么我建议将所有单位转换为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