【发布时间】:2011-08-27 21:56:23
【问题描述】:
我必须在屏幕上显示大量标签而不重叠。标签位置应尽可能接近它们描述的特征。这些特征可能是屏幕上的点、线或多边形(想象任何种类的地图)。 我的申请必须满足以下要求:
- 标签的位置必须避免与其他标签过度张贴(重叠)
- 标签的位置必须避免与其他要素(多边形和线段)重叠
- 标签的最佳位置在它们描述的特征的上方和右侧
- 下方和右侧不太可接受
- 最不可接受的位置在左侧
我需要想出一个方法来做到这一点。
在我开始随机尝试之前,我希望这里的某个人可能已经这样做了,并且能够就从哪里开始给我一些建议。
基本上,有了标签,我可以使用边界框将它们相互比较。虽然我不知道这样做的好方法。使用它们在屏幕上标记的线段和多边形,我真的不知道应该怎么做才能避免重叠。我希望在避免标签本身重叠的基础上不需要更多的努力。
如果我只需要处理与其他标签重叠的标签,我认为排斥会起作用。但是如果我在半个屏幕上绘制了一条线段,我不知道如何使用排斥技术避免与该线段重叠。
我使用的语言是 Actionscript 3 和 Flex 框架。我不相信 Flex 有任何像 Java Spring 中那样的布局管理器类可以为我完成这项工作。
无论如何,欢迎提供链接或建议。我可以允许一些蛮力;我不知道我怎么能做到这一点。谢谢!
PS 我相信这个问题的技术术语是“过度发布”。
【问题讨论】:
-
请问您为什么需要这样做?
-
当然。这是为了一张地图。可视区域是动态的。地图要素的位置是唯一提供的数据。但是必须显示标签来描述这些特征(特征可能是点、线或多边形)。显示标签的规则和我上面描述的一样。
-
您真的要拥有这么多需要避免重叠的标签吗?屏幕上似乎有太多信息。这就像说当您在谷歌地图中搜索时,它不会添加标记,但也会添加信息气泡,对于所有它们......
-
是的,当然。我只会告诉我的客户:“看起来你在屏幕上的信息太多了”。我相信他们会理解的。 ;-)
标签: flash apache-flex layout label overlap