Tooltip is not able to view on Translate position after panning Image on Canvas?

邮差的信 提交于 2019-12-11 06:06:32

问题


Following is my Code for reference.

  1. One main image is display on Canvas.
  2. On that image with dataJSON object I am passing x and y co-ordinates and drawing ball images there.
  3. Then tooltip is added. (function tooltipFunc)
  4. But when I am panning image then tooltip is not visible on those balls images on hover.**
  5. In tooltipFunc function, if code is for default position when page loads first time. And else code is for translate positions when we are panning the image to show the tooltip.
  6. But after panning, when mousehover on balls images then tooltip is not visible. When I click on those ball images then tooltip is visible but not on the translate position.

Any suggestions?

//Following is Code for reference

var isDown = false;
var startCoords = [];
var last = [0, 0];

    canvas.onmousedown = function(e){
        isDown = true;

        startCoords = [
            e.offsetX - last[0],
            e.offsetY - last[1]
       ];
    };

    canvas.onmouseup  = function(e){
        isDown = false;

        last = [
            e.offsetX - startCoords[0], // set last coordinates
            e.offsetY - startCoords[1]
        ];
        //tooltipFunc(e);   

    };
    canvas.onmousemove = function(e){   
                tooltipFunc(e); //tooltip function
                if(!isDown) return;         
                var x = e.offsetX;              
                var y = e.offsetY;
                context.setTransform(1, 0, 0, 1, x - startCoords[0], y - startCoords[1]);
                draw1(scaleValue);//redrawing image on canvas while panning image                   
        }

    function tooltipFunc(e){    
        var translationX, translationY;
        var r = canvas.getBoundingClientRect(),
                    x = e.clientX - r.left,
                    y = e.clientY - r.top,
                    i = 0,
                    r,
                    inTooltip = false;

        if((typeof startCoords[0] === 'undefined' || startCoords[0] === 'NaN') && (typeof startCoords[1] === 'undefined' || startCoords[1] === 'NaN')){         
                for (; r = dataJSON[i]; i++) {              
                    if (x >= parseInt(dataJSON[i].x[0] * scaleValue) + parseInt(scaleValue) && x <= parseInt(dataJSON[i].x[0] * scaleValue) + parseInt(20/scaleValue) && y >= parseInt(dataJSON[i].y[0] * scaleValue) && y <= parseInt(dataJSON[i].y[0] * scaleValue) + parseInt(20/scaleValue)) {
                        clearTooltip();
                        showTooltip(e.clientX, e.clientY, i);
                        inTooltip = true;
                    }
                }
        }
        else{           
            for (; r = dataJSON[i]; i++) {                  
                translationX = parseInt(x) - parseInt(startCoords[0]);
                translationY = parseInt(y) - parseInt(startCoords[1]);

                    if (x >= parseInt(dataJSON[i].x[0] * scaleValue) + parseInt(translationX) + parseInt(scaleValue) && x <= parseInt(dataJSON[i].x[0] * scaleValue) + parseInt(translationX) + parseInt(20/scaleValue) && y >= parseInt(dataJSON[i].y[0] * scaleValue) + parseInt(translationY) && y <= parseInt(dataJSON[i].y[0] * scaleValue) + parseInt(translationY)  + parseInt(20/scaleValue)) {

                    clearTooltip();             
                    var newX = e.clientX - translationX;
                    var newY = e.clientY - translationY
                    showTooltip(newX, newY, i); 
                    inTooltip = true;

                }

            }
        }
    }

来源:https://stackoverflow.com/questions/17875607/tooltip-is-not-able-to-view-on-translate-position-after-panning-image-on-canvas

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!