canvas的初始化就没写了,仅写地图实现过程,长宽均为420
//星空图底图function drawBaseSky(tempcxt){tempcxt.clearRect(0,0,420,420);//清空画布var RADIUS = 180;//半径var yuandian = 195;//半径tempcxt.save(); //保存状态tempcxt.translate(15,15);//坐标原点移动,留出边界值,让可能出现在最外层的信息能显示// //绘制背景tempcxt.beginPath();tempcxt.font="15px georgia"; //设置0,30,60三个度数的字体大小tempcxt.fillStyle = 'black'; //设置字体颜色tempcxt.fillText("90°",yuandian,yuandian); //写死 原点处度数for(i=0; i<3; i++) {var curR = RADIUS*Math.cos(i*30/180*Math.PI); //三个圆圈的半径计算if(curR > 0){tempcxt.arc(yuandian,yuandian,curR,0,2*Math.PI); //画圆圈tempcxt.fillText(i*30+"°",yuandian,yuandian-curR+15);//根据圆圈写度数}tempcxt.stroke();}tempcxt.font="20px georgia"; //设置东南西北的字体大小tempcxt.fillText("北",RADIUS,0);tempcxt.fillText("南",RADIUS,400);tempcxt.fillText("西",-10,yuandian);tempcxt.fillText("东",380,yuandian);tempcxt.save(); //保存状态//通过旋转的方式画圆中的分割线tempcxt.beginPath();tempcxt.strokeStyle = 'rgb(220,220,220)';tempcxt.translate(yuandian,yuandian); //切换原点tempcxt.font="15px georgia";for(var i=0;i<12;i++){tempcxt.moveTo(0,0);tempcxt.lineTo(0,RADIUS);tempcxt.fillText(i*30,0,-RADIUS-5);tempcxt.rotate(Math.PI/180*30);}tempcxt.stroke();tempcxt.restore();tempcxt.restore();}