Не уверен, что вы все еще ищете здесь решение, но я нашел ваш вопрос, пытаясь избежать дублирования.
Если вы не знали, вы можете поэкспериментировать с некоторыми атрибутами органических макетов. Например, вы можете сделать следующее:
mxFastOrganicLayout layout = new mxFastOrganicLayout(adapter);
layout.setForceConstant(150);
Силовая постоянная имеет следующее описание в документах:
Постоянная силы, на которую делятся силы притяжения и силы отталкивания, кратна квадрату.
Что касается меня, я играл с силовой константой, пока не получил макет с гораздо меньшим количеством перекрытий. Существует ряд других атрибутов, с которыми вы также можете поиграть, чтобы увидеть, поможет ли это решить ваши проблемы с перекрытием. Те, которые имели наибольшее значение для меня, следующие:
layout.setMinDistanceLimit(5);
Увеличение minDistanceLimit
должно позволить вашим вершинам расшириться.
Так как fastOrganicLayout также работает через имитацию отжига, вы можете фактически указать максимальное количество итераций для запуска макета. Если ваша карта особенно сложна (с большим количеством вершин), это также может помочь увеличить это значение.
layout.getMaxIterations(2000);
Для меня изменение постоянной силы имело наибольшее значение, но ваш пробег может отличаться.
Раньше я не использовал иерархическую компоновку, но, похоже, есть похожие атрибуты, которые вы можете изменить, что может уменьшить вероятность совпадения.
Если вы придумали более надежное решение, чем это, было бы здорово, если бы вы могли поделиться им.
person
Tom
schedule
26.10.2017