Canvas 背景图像位于第二张绘制图像之上
Canvas background image is on top of second drawn image
我在 canvas 中设置了背景图片;这是一张地图。
然后我想 "draw" 在地图顶部的各个点上标记红色图钉图像。现在在 Chrome 中,我 "drawn" 与上下文相关的第一个图钉出现在背景地图下方。
我在 Firefox/IE 中没有看到这种行为。
我的最终目标是让图钉具有交互性 (onMouseOver/onClick/etc)。我是否应该使用 canvas 元素来执行此操作?
查看下面的代码:
<canvas id="backgroundMapCanvas" width="990" height="691" style="border:1px solid #d3d3d3;">
</canvas>
<script type="text/javascript">
var context = document.getElementById("backgroundMapCanvas").getContext("2d");
var bgImage = new Image();
bgImage.src = "images/mapBackground.jpg";
bgImage.onload = function() {
context.drawImage(bgImage, 10, 10);
};
var firstPin = new Image();
firstPin.src = "images/redPin.png";
firstPin.onload = function() {
context.drawImage(firstPin, 830, 420);
};
</script>
谢谢,
V
无法保证加载顺序,因为它取决于图像的大小、服务器等。因此您需要强制执行正确的顺序,这可以通过跟踪所有图像的加载状态来完成,然后然后 按照您想要的顺序绘制图像:
- 共享负载处理器
- 使用计数器
- 加载完所有图像后绘制。
示例:
var bgImage = new Image();
var firstPin = new Image();
var count = 2;
bgImage.onload = loader;
firstPin.onload = loader;
bgImage.src = "images/mapBackground.jpg";
firstPin.src = "images/redPin.png";
function loader() {
if (!--count) draw(); // draw when both has loaded
}
function draw() {
context.drawImage(bgImage, 10, 10);
context.drawImage(firstPin, 830, 420);
}
我在 canvas 中设置了背景图片;这是一张地图。
然后我想 "draw" 在地图顶部的各个点上标记红色图钉图像。现在在 Chrome 中,我 "drawn" 与上下文相关的第一个图钉出现在背景地图下方。
我在 Firefox/IE 中没有看到这种行为。
我的最终目标是让图钉具有交互性 (onMouseOver/onClick/etc)。我是否应该使用 canvas 元素来执行此操作?
查看下面的代码:
<canvas id="backgroundMapCanvas" width="990" height="691" style="border:1px solid #d3d3d3;">
</canvas>
<script type="text/javascript">
var context = document.getElementById("backgroundMapCanvas").getContext("2d");
var bgImage = new Image();
bgImage.src = "images/mapBackground.jpg";
bgImage.onload = function() {
context.drawImage(bgImage, 10, 10);
};
var firstPin = new Image();
firstPin.src = "images/redPin.png";
firstPin.onload = function() {
context.drawImage(firstPin, 830, 420);
};
</script>
谢谢,
V
无法保证加载顺序,因为它取决于图像的大小、服务器等。因此您需要强制执行正确的顺序,这可以通过跟踪所有图像的加载状态来完成,然后然后 按照您想要的顺序绘制图像:
- 共享负载处理器
- 使用计数器
- 加载完所有图像后绘制。
示例:
var bgImage = new Image();
var firstPin = new Image();
var count = 2;
bgImage.onload = loader;
firstPin.onload = loader;
bgImage.src = "images/mapBackground.jpg";
firstPin.src = "images/redPin.png";
function loader() {
if (!--count) draw(); // draw when both has loaded
}
function draw() {
context.drawImage(bgImage, 10, 10);
context.drawImage(firstPin, 830, 420);
}