javascript - 在javascript中的函数内设置 Canvas 位置

标签 javascript jquery html css canvas

我在使用 javascript 定位 Canvas 时遇到了一些问题。 我的操作流程如下:

  1. 向服务器发送 Ajax 请求
  2. 收到响应后,我从一个 JSON 值中获取我的数据,并对这些数据调用一个函数
  3. 该函数与 simpleheat 一起运行,以便在 Canvas 上绘制覆盖原始图像的热图。

这是 HTML

<div id="rightPanel" class="col-md-9">
    <img id="worldMap" width="800" height="600" />
    <canvas class="coveringCanvas" id="heatmap" />
</div>

coveringCanvas

    .coveringCanvas {
    position: absolute;
}

我的 AJAX 请求:

function OnUpdateClick() {
    begin = beginDate.GetDate().toLocaleString("it-IT");
    end = endDate.GetDate().toLocaleString("it-IT");
    if (begin == null || end == null) {
        alert("Immettere delle date!")
    } else {
        $.post("/Heatmap/getHeatmap",
            { beginDate: begin, endDate: end },
            function (data) {
                map = data["mapImage"];
                var img = document.getElementById('worldMap');
                img.src = arrayBufferDataUri(map);
                positions = data["positions"];
                drawPoints(positions);
            });
    }

DrawPoints 函数:

 function drawPoints(data) {
    var img = document.getElementById('worldMap');
    var canvas = document.getElementById('heatmap');
    console.log("Image x: " + img.x)
    console.log("Image y: " + img.y)
    canvas.width = img.width;
    canvas.height = img.height;
    canvas.style.left = img.x + "px";
    canvas.style.top = img.y + "px";
    simpleheat('heatmap').data(data).radius(30,25).draw();
}

现在,为我的 canvas 设置 heightwidth 没问题了。

设置topleft是。

如果我在浏览器 (Firefox Quantum) 中从 javascript 控制台重复相同的指令,则定位工作完美无缺。

如果我记录 img.ximg.y 值,它们在函数中也是正确的,问题似乎是分配给 canvas.

它可以是什么?

最佳答案

也许你可以设置 Style position Property在 left 和 top 之前的函数内部?

例子:

 function drawPoints(data) {
    var img = document.getElementById('worldMap');
    var canvas = document.getElementById('heatmap');
    console.log("Image x: " + img.x)
    console.log("Image y: " + img.y)
    canvas.width = img.width;
    canvas.height = img.height;
    canvas.style.position = 'absolute';  // Right Here!
    canvas.style.left = "15px";
    canvas.style.top = "15px";
    simpleheat('heatmap').data(data).radius(30,25).draw();
}

关于javascript - 在javascript中的函数内设置 Canvas 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48403816/

相关文章:

javascript - 带有 ECMAScript 6 类的命名空间

javascript - jQuery - Ajax 异步不起作用?

html - 当我悬停鼠标时元素移动

javascript - IE11 jQuery html() 在 SVG 元素内不起作用

html - 如何在html中为框创建内边框?

javascript - HTML/Javascript 升序数字

javascript - 从 HTML 中的 div 列表中单击 div 上的打开 block

javascript - jquery 更改函数无法与多个类一起正常工作

javascript - 我需要使用父类替换嵌套 div 中的引导类名称

javascript - .JS 在滚动经过元素后在导航栏中淡入淡出