在ReDraw()函数中我写了一个数组newPsPoints用于收集从原点数组myPsPoints中选取得到的一部分点。。现在需要循环对这些个点的x,y坐标进行计算。。由地理坐标转化到屏幕坐标,已经可以通过firebug监控到转化后的屏幕坐标的值,但是刚执行完就不能再进行下一次运算,总是监控显示newPsPoints未定义。
代码是这样的://这是识别鼠标的操作
function  MouseOperation(){

var canvas = $(".mycanvas");//get the jquery object
        var context = canvas.get(0).getContext("2d")
var widthoffset = $("#dyleft").width();
var heightoffset1 = $("#dyhead").height();
var heightoffset2 = $("#dymenu").height();
var heightoffset3 = $(".item1").height();
var heightoffset4 = $("#header").height();
var heightoffset = heightoffset1 + heightoffset2 + 3 * heightoffset3 + heightoffset4;

//这里准备实现在canvas上用矩阵框框出想要的那部分影像
//这里实现鼠标按下事件
$("#mycanvas").mousedown(function(e) {

var mouseX = e.pageX - widthoffset;
var mouseY = e.pageY - heightoffset;

point = true;
downclickX = mouseX;
downclickY = mouseY;


            });


//实现鼠标松开事件
$("#mycanvas").mouseup(function(e) {
//!!!!There is something wrong with obtaining the coordinates
var mouseX = e.pageX - widthoffset;
var mouseY = e.pageY - heightoffset;
//redraw();
upclickX = mouseX;
upclickY = mouseY;
alert(downclickX +"  "+downclickY);
alert(upclickX +"  " + upclickY);
                point = false;//point用于标记鼠标是否有用
                //画矩形有问题
SelectedRecWidth = upclickX - downclickX;
SelectedRecHeight = upclickY - downclickY ;
                //context.strokeRect(downclickX  ,downclickY  ,SelectedRecWidth,SelectedRecHeight);

ReDraw();



            });
}//ReDraw()函数
function ReDraw()
{
var ColorLists  = [
           new Color(0, 0, 255),//blue
           new Color(0, 220, 229),
           new Color(0, 255, 0),
           new Color(255, 255, 0),
           new Color(255, 0, 0)];

var canvas = $(".mycanvas");//get the jquery object
         var context = canvas.get(0).getContext("2d");
var stepX = context.canvas.width/(maxX - minX);
var stepY = context.canvas.height/(maxY - minY);
myPsPoints.sort(function(a,b){return a.z - b.z;});

  for(var i = 0;i<myPsPoints.length;i++)
     {
var x1 = (myPsPoints[i].x - minX) * stepX;
var y1 = (myPsPoints[i].y - minY) * stepY;
var z1 =  myPsPoints[i].z;
var sa1 = myPsPoints[i].amplitude;
tempPoints.push(new PsPoint(x1,y1,z1,sa1));
}

var SelectedPointsIndex = new Array();

for(var k = 0;k < tempPoints.length;k++)
{
if(( tempPoints[k].x >= downclickX && tempPoints[k].x <= upclickX) &&
 (tempPoints[k].y >= downclickY && tempPoints[k].y<= upclickY))  
{
SelectedPointsIndex.push(k);
newPsPoints.push(myPsPoints[k]);
}

}


context.canvas.width = context.canvas.width;
context.canvas.height = context.canvas.height;//clear the canvas


var NewAreaMinX = GetMinX(newPsPoints);
var NewAreaMaxX = GetMaxX(newPsPoints);
var NewAreaMinY = GetMinY(newPsPoints);
var NewAreaMaxY = GetMaxY(newPsPoints);

var NewStepX ;
NewStepX = context.canvas.width/(NewAreaMaxX - NewAreaMinX);
var NewStepY;
NewStepY = context.canvas.height/(NewAreaMaxY - NewAreaMinY);


//这里有问题!!!!!!无法实现第二次运行
var m = newPsPoints.length;
for(var t = 0;t <= m;t++ )
{
var j = SelectedPointsIndex[t];
var newx = (newPsPoints[t].x - NewAreaMinX) * NewStepX;
//var newy = (newPsPoints[t].y - NewAreaMinY) * NewStepY;
//context.fillStyle = GetColor(minZ,maxZ,ColorLists,newPsPoints[t].z);
//context.fillRect(newx,newy,3,3); }
newPsPoints.length = m;
alert("correct")
newPsPoints.length = 0;
SelectedPointsIndex.length = 0;
tempPoints.length = 0;

}