2012-07-05 48 views
20

se puede ver en este bl.ock http://bl.ocks.org/3012590 que hay muchos puntos georreferenciados en París, con el gran círculo sobre los más pequeños:círculos superpuestos evitar d3.js

enter image description here

me gustaría para obtener algo similar a http://vallandingham.me/vis/gates/, de modo que los círculos se anexen estrechamente por su borde.

enter image description here

Lo sentimos, no pude encontrar la respuesta en este código, me falta algo que pienso.

¿Existe una solución fácil de conseguir? probaron diferentes fuerzas negativas de carga, causando problemas si el tamaño del círculo cambia (si todos los círculos en París se vuelven pequeños, entonces se alejan demasiado el uno del otro)?

Respuesta

43

Si su objetivo es evitar la superposición, entonces detecting collisions es una forma más directa de satisfacer esa restricción. Esto producirá un resultado más preciso que las fuerzas de carga repulsivas. He aquí otro ejemplo:

que no es necesario un diseño de la fuerza para lograr esto, aunque los dos se usan a menudo juntos. Puede iterar sobre los nodos un número fijo de veces para resolver cualquier colisión en la inicialización. Aquí está la aplicación de una de mis charlas: