Google如何为其3D地图绘制街道标签?

时间:2012-12-02 08:32:53

标签: c++ google-maps

我正在开发一个在3d中绘制街道地图的移动应用程序。我遇到的一个问题是尝试绘制街道标签而不重叠。我可以沿着路径获取文本轮廓,但是它们有很多重叠的地方:

enter image description here

Google在绘制街道标签方面做得非常出色,没有任何交叉点或重叠。适用于Android的移动Google地图应用程序中的3d视图特别擅长展示此功能。

我能够想出的唯一想法就是进行碰撞检测(在标签之间的每个字母上都有边界球)。这在3d中非常昂贵,特别是在屏幕上同时有许多标签。

我正在寻找一些洞察力,了解谷歌如何进行他们的街道标签放置或我可以尝试的其他想法比蛮力碰撞检测更便宜。当您缩放和平移显示器时,Google地图应用会实时更新标签位置,因此他们使用的任何方法都非常高效。

1 个答案:

答案 0 :(得分:0)

你说有点过于复杂了。而不是试图逐个字母地碰撞将其简化为一系列线条。直线写的名称可以用一条直线表示。弯曲道路内的一些文本最多可以使用2-3行来近似。毕竟它不必像素精确。

你还可以建立一个与当前街道“碰撞”的其他街道的集合(也像桥梁一样的位置),然后确保你的名字不重叠或接近这些位置。