Как избежать наложения (наложения) меток? - PullRequest
3 голосов
/ 18 мая 2011

Я должен отображать множество ярлыков на экране без наложения.Позиции надписей должны быть как можно ближе к описываемым функциям.Объектами могут быть точки, линии или многоугольники на экране (представьте любую карту).В моем приложении должны быть соблюдены следующие требования:

  • метки должны быть расположены так, чтобы избежать наложения (наложения) на другие метки
  • метки должны быть расположены так, чтобы не перекрываться с другими функциями (полигоны и отрезки)
  • оптимальное положение для надписи выше и справа от функции, которую они описывают
  • ниже, а справа менее приемлемо
  • наименее приемлемые положенияслева

Мне нужно придумать способ сделать это.

Прежде чем я просто начну пытаться сделать это наугад, я надеюсь, что кто-то здесь уже могсделал это и смог дать мне несколько советов о том, с чего начать.

По сути, с метками я мог бы использовать ограничивающие рамки, чтобы сравнить их друг с другом.Хотя я не знаю хорошего способа сделать это.С отрезками и полигонами, которые они обозначают на экране, у меня действительно нет ни малейшего понятия, что мне следует делать, чтобы избежать дублирования.Я надеюсь, что это не потребует гораздо больших усилий, чтобы избежать наложения самих ярлыков.

Я думаю, что отталкивание сработало бы, если бы мне пришлось иметь дело только с ярлыками, перекрывающими другие ярлыки.Но если у меня есть отрезок линии, проходящий через половину экрана, я не знаю, как избежать дублирования с помощью техники отталкивания.

Я использую язык ActionScript 3 и среду Flex.Я не верю, что у Flex есть какие-либо классы менеджера компоновки, как в Java Spring, которые могут выполнить эту работу за меня.

В любом случае, ссылки или предложения приветствуются.Я могу допустить некоторую грубую силу;Я не понимаю, как я могу сделать это иначе.Спасибо!

PS Я полагаю, что технический термин для этой проблемы - "чрезмерная".

1 Ответ

0 голосов
/ 18 мая 2011

Я не вижу способа достичь этого, не имея ссылки на все метки и другие фигуры / линии, которые вам следует избегать. Предполагая, что у вас есть эти ссылки, просто привяжите методы Flex Framework.

В updateDisplayList () зацикливайтесь над вашими ярлыками; и расположите их вместе со всем остальным на экране. Вы можете использовать методы getExplicitOrMeasuredWidth () и getExplicitOrMeasuredHeight (), чтобы определить пространство, необходимое для рассматриваемого элемента.

Если вы используете встроенный Flex-контейнер, такой как VBox или HBox, метки и другие линии будут расположены в соответствии друг с другом. Или, если вы используете Spark, VGroup или HGroup предложат ту же функциональность.

...