The current algorithms show some behavior which in my opinion could be improved.
The current algorithm prefers to move colliding callouts to the right:
I would prefer to have a more symmetrical ordering as:
The greedy algorithms produce overlapping callouts:
While the simulated annealing algorithm is a little better, it has the disadvantage that it is asynchronous and thus not predictable. It also produces overlapping leader lines to the callouts.
The callouts should be ordered with the rendering of the outer callouts to be prior to the inner callouts.
Please improve the algorithms or give us the opportunity to implement our own.