麻烦制作图像热图多个答案

时间:2016-12-15 17:12:28

标签: heatmap

我试图在图像上选择不同的部分,每个部分我都需要获得坐标(我已经确定了保存单个响应坐标并且我很开心! )事情就是在做多个圈子的时候,我迷失了3件事。

首先,我需要用糟糕的实现循环来填充我的盒子,我似乎无法找到原因"我"点击后不会改变...

第二个按钮,使我的循环回到0并擦除画布上的圆圈

第三个圈子不能超过5个......

我认为我的问题对研究过于具体,我认为? :(我在这里刚开始使用javascript ...请帮助我,

这是我的小提琴,谢谢你的帮助,如果这对你有用,那么我就留下了单一答案回复评论= 3

http://plnkr.co/edit/ja9fNtOyd8lzH6BekDpo?p=preview

<div id="Click">Seleccione las áreas de la imagen que más le gustan </div>
<br><br><br><br><br><br><br>
<img src="http://i332.photobucket.com/albums/m340/carlospatino21/megaman-5.jpg" alt="" border="0" id="mmc">
<style>
    #myCanvas
    {
    position: absolute;
    left: 0px;
    top: 30px;
    background-color: transparent;
    opacity:0.5;
    border-style: dotted;;
    max-width:295px;
    max-height:337px;
    width: auto;
    height: auto;
    display: block;


    }

    #mmc
    {
    position: absolute;
    left: 0px;
    top: 30px;
    z-index: 0;
    display: block;
    max-width:295px;
    max-height:337px;
    width: auto;
    height: auto;

    }
    #Click
    {
    position: absolute;
    left: 0px;
    top: 0px;
    z-index: 1;

    }

</style>




    <canvas id="myCanvas" width="295px" height="337px" onclick="evt2()" ></canvas>


    <script>
    function writeMessage(canvas, message) {
            var context = canvas.getContext('2d');
            context.clearRect(0, 0, canvas.width, canvas.height);
            context.font = '15pt Calibri';
            context.fillStyle = 'black';
            context.fillText(message, 10, 25);}

 function getMousePos(canvas, evt) {
        var rect = canvas.getBoundingClientRect();
        return {
          x: evt.clientX - rect.left,
          y: evt.clientY - rect.top
        };
      }
      var canvas = document.getElementById('myCanvas');
      var context = canvas.getContext('2d');

      canvas.addEventListener('click', function(evt) {
        var mousePos = getMousePos(canvas, evt);
        var message = 'Mouse position: ' + mousePos.x + ',' + mousePos.y;


  var centerX = event.clientX ;
  var centerY = event.clientY - 30 ;

  context.beginPath();
  context.arc(centerX, centerY,20,0, 2 * Math.PI);
  context.fillStyle = 'green';
  context.fill();
  context.lineWidth = 1;
  context.strokeStyle = '#003300';
  context.stroke();

      }, false);

//function evt2(){  
//document.getElementById("canvas1_NewVar1").value = event.clientX + ',' + (event.clientY-30);} 

 var d = "canvas1_NewVar";


 for ( var i = 1; i < 5; i++ ) 
  onclick = (function(){return function evt2() {
document.getElementById( d+i).value = event.clientX + ',' + (event.clientY-30)
};})(i);





    </script>

<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<input  id="canvas1_NewVar1" type="text" size="20" class="puntos" onclick="evt2()" >
<input  id="canvas1_NewVar2" type="text" size="20" class="puntos" onclick="evt2()" >
<input  id="canvas1_NewVar3" type="text" size="20" class="puntos" onclick="evt2()" >
<input  id="canvas1_NewVar4" type="text" size="20" class="puntos" onclick="evt2()" >
<input  id="canvas1_NewVar5" type="text" size="20" class="puntos" onclick="evt2()" >

1 个答案:

答案 0 :(得分:0)

啊,我已经完成了第一部分了!

现在它在5个盒子之间循环,我现在编程一个撤销按钮,我不知道该怎么做......如果我做了那么我会更新

我刚刚更改了以下几行:

var d =&#34; canvas1_NewVar&#34 ;;

 var i = 1;



function evt2() {
document.getElementById( d+i).value = event.clientX + ',' + (event.clientY-30)
;
i += 1;

};

我创建了一个重新加载页面的按钮...有一些东西可以回到一步但是我需要删除画布中的点,擦除框上的值并返回1 &#34; I&#34;价值......这似乎是努力的方法O_o

<input type="button" value="Corregir puntos" onClick="window.location.reload()">