//根据起点和终点画弧线
function ArcArrow(x1,y1,x2,y2)
{
 var radius,center_x,center_y,start_angl,end_angl,new_x,new_y,temp_angl;
 if(y1!=y2||x1<x2)
  {
    radius = Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
    var height = radius*Math.sin(60*rad);
    var angl = Math.atan(-(x2-x1)/(y2-y1));
    center_x = (x1+x2)/2 + height*Math.cos(angl);
    center_y = (y1+y2)/2 + height*Math.sin(angl);
    start_angl = angl/rad - 30+180;
    end_angl = angl/rad + 30+180;
  }
  else
  {
    radius = Math.abs(x2-x1);
    center_x = (x1+x2)/2;
    center_y = y2 + radius*Math.sin(60*rad);
    start_angl = 240;
    end_angl = 300;
  }
  Arc(center_x,center_y,radius,start_angl,end_angl);
  if(y2 < y1)
  {
    temp_angl = end_angl - 5;
    new_x = center_x + radius*Math.cos(temp_angl*rad);
    new_y = center_y + radius*Math.sin(temp_angl*rad);
  }
  else
  {
    temp_angl = start_angl + 5;
    new_x = center_x + radius*Math.cos(temp_angl*rad);
    new_y = center_y + radius*Math.sin(temp_angl*rad);
  }
  Arrow(new_x,new_y,x2,y2);
}

解决方案 »

  1.   

    //动态添加按钮并绑定事件
      function add_button(v, l_but, t_but,str)
      {
        var bt = Form1.document.createElement("input");
        bt.type = "button";
        bt.value = v;
        bt.style.position = "absolute";
        bt.style.left = l_but;
        bt.style.top= t_but;
        bt.style.border = "none";
        bt.onmouseover = function()
        {
          if(bt.style.left < '500')
          {
            ShowLayer2();
            SetURL2(str);
          }
          else
          {
            ShowLayer1();
            SetURL1(str);
          }
        }
        bt.onmouseout = function()
        {
          if(bt.style.left < '500')
          {
            SetNone2();
          }
          else 
          {
            SetNone1();
          }
        }
        Form1.appendChild(bt);
      }
      
      //动态添加超链接
      function add_link(ref, text, l_link, t_link)
      {
        var link = Form1.document.createElement("a");
        link.href = ref;
        link.innerText = text
        link.style.position = "absolute";
        link.style.left = l_link;
        link.style.top = t_link;
        Form1.appendChild(link);
      }
      

  2.   

    ShowLegendLayer()这个函数在哪儿呀,没看到呀!
      

  3.   

    ShowLegendLayer()
    在哪个地方定义的
      

  4.   

    我现在能知道代码到什么地方就不执行了。
    可是我把代码原原本本贴到HTML里面,就是正确的。
    改成调用这个文件就是错的。为什么呢?
    我实在查不出来代码错在哪里了?
    color = "red";
    MoveTo(20,20);
    LineTo(200,20);
    Arc(300,300,100,90,180); //到这都可以画出图形function Blue(start_x,start_y,end_x,end_y)
    {
      color = "blue"
      MoveTo(start_x,start_y);
      LineTo(end_x,end_y);
    }
    Blue(20,20,300,30);//这个就不可以画图了。为什么?
      

  5.   

    是不是函数名的问题?为什么起blue呢?换一个试一下!(猜测!)
      

  6.   

    试过了。不行。这段代码直接放在HTML中是完全正确的,不知道为什么保存成一个文件,调用的时候就不行了。
    急疯了都……
      

  7.   

    另外看你说到一些信息中,好像一因为MoveTo这个函数好像不识别变量的原因,最好是这样写:
    function Blue(start_x,start_y,end_x,end_y)
    {
      color = "blue"
      MoveTo(eval(start_x),eval(start_y));
      LineTo(eval(end_x),eval(end_y));
    }
    我这样写的试了MoveTo是好用的。
      

  8.   

    还有,我发现你的MoveTo的M怎么试大写?应该是小写的吧?---->moveTo();
      

  9.   

    MoveTo 的确是大写的。这是个自定义的画图函数,没有问题的。但是用到Blue函数里面他就不执行了。我把MoveTo改为你的那种形式,还是老错误啊。
    不行啊……
      

  10.   

    最好还是把ShowLegendLayer()的代码发上来吧?
    只发函数体里边的东西都不让发嘛?
      

  11.   

    ShowLegendLayer 没有贴出来,看看啊。
      

  12.   

    头疼啊……
    是不是放在HEAD之间的代码和放在body之间的代码不能同时放在js文件里面啊?
    我把head部分的代码放在html语言中,body里面的代码放在history.js文件中,然后
    调用这个文件,就没有错误了。
    大家能告诉我为什么嘛?
    谢谢楼上的各位,这个问题让我郁闷了两天。
    组长帮忙也在弄,没弄出来。现在暂且就用了我上面这个方法。谢谢各位。