我需要在屏幕上显示大量标签,避免它们重叠。这些标签应尽可能靠近它们所描述的特征。这些特征可以是屏幕上的点、线或多边形(想象一下任何种类的地图)。
我的应用程序需要满足以下要求:
- 标签必须定位以避免与其他标签重叠。 - 标签必须定位以避免与其他特征(多边形和线段)重叠。 - 标签的最佳位置在所描述的特征的上方和右侧。 - 位于下方和右侧的位置较不可接受。 - 最不可接受的位置是左侧。
我需要想出一种方法来实现这个目标。
在随机尝试之前,我希望这里的某个人已经做过这个事情,并能够给我一些建议从哪里开始。
基本上,对于标签,我可以使用边界框将它们彼此进行比较。虽然我不知道如何做到这一点。对于屏幕上的线段和多边形,我真的不知道该怎么做才能避免重叠。我希望除了避免标签本身的重叠之外,不需要更多的努力。
我认为如果我只需要处理标签重叠其他标签,排斥法会起作用。但是,如果我有一条跨越半个屏幕的线段,我不知道如何使用排斥技术避免重叠。
我正在使用Actionscript 3和Flex框架。我认为Flex没有像Java Spring中那样的布局管理器类可以为我完成这项工作。
无论如何,链接或建议都将受到欢迎。我可以允许一些蛮力;否则我看不出如何完成这项工作。谢谢!
PS:我认为这个问题的技术术语是“过度贴图”。
我的应用程序需要满足以下要求:
- 标签必须定位以避免与其他标签重叠。 - 标签必须定位以避免与其他特征(多边形和线段)重叠。 - 标签的最佳位置在所描述的特征的上方和右侧。 - 位于下方和右侧的位置较不可接受。 - 最不可接受的位置是左侧。
我需要想出一种方法来实现这个目标。
在随机尝试之前,我希望这里的某个人已经做过这个事情,并能够给我一些建议从哪里开始。
基本上,对于标签,我可以使用边界框将它们彼此进行比较。虽然我不知道如何做到这一点。对于屏幕上的线段和多边形,我真的不知道该怎么做才能避免重叠。我希望除了避免标签本身的重叠之外,不需要更多的努力。
我认为如果我只需要处理标签重叠其他标签,排斥法会起作用。但是,如果我有一条跨越半个屏幕的线段,我不知道如何使用排斥技术避免重叠。
我正在使用Actionscript 3和Flex框架。我认为Flex没有像Java Spring中那样的布局管理器类可以为我完成这项工作。
无论如何,链接或建议都将受到欢迎。我可以允许一些蛮力;否则我看不出如何完成这项工作。谢谢!
PS:我认为这个问题的技术术语是“过度贴图”。