2014-09-10 2 views
2

Скажем, у меня есть следующий сетевой путь/график jsFiddleD3 линия/путь/маркер позиции

Я фиксированный радиус моего пузыря, который 10 и Itell куда положить голову стрелку на линии - .attr("refX", 27) .attr("refY", 5).

Скажем, у меня разные размеры пузырьков, и если размер пузыря более 10, очевидно, он скрывает мою голову стрелы. Может ли кто-то явно указать (желательно с измененным примером) объяснить, как я могу эффективно проверить размер пузыря и изменить положение головки стрелки или, возможно, сократить длину линии/пути/коннектора и поместить стрелку в конец line/path/connector?

Спасибо за ваше время и помочь

ответ

1

Эй я обновил свою скрипку с некоторой проверкой коды из

FIDDLE

d3.select("#arrow").attr("viewBox", "0 0 10 10") 
          .attr("refX", 27) 
          .attr("refX", function (d) { console.log(d) 
          $('circle').each(function(){ 
          if($(this).attr('r')>5) 
          { 
          return d3.select(this).attr("refY",5); 
          } 
          else 
          { 
          //return some value 
          } 
          }); 

                 }) 
          .attr("refY", 5) 
          .attr("markerUnits", "strokeWidth") 
          .attr("markerWidth", 8) 
          .attr("markerHeight", 6) 
          .attr("orient", "auto") 
          .style("stroke", "#ccc") 
          .append("svg:path") 
          .attr("d", "M 0 0 L 10 5 L 0 10 z"); 
+0

Спасибо за ваш ответ. Я понимаю, что вы пытаетесь сделать здесь, но по какой-то причине «d» в функции «refX» подходит как неопределенный. Кроме того, думаете ли вы, что было бы лучше смять эти две функции (одну, которая создает стрелку и ваш предложенный) вместе? Таким образом, это будет сделано в одной функции - создать и назначить refX? Если да, возможно ли это или мне нужно сначала создать его, а затем зациклировать, как вы предложили? –

+0

Вы можете сделать это в любом случае. d не определено, потому что вы не несёте данные в функции. Это возможный способ сделать это, насколько я изучил – divakar

+1

Да, я получил это неопределенное, мой вопрос должен был быть, почему он не переносится в функцию? Мои извинения. –

Смежные вопросы