【发布时间】:2018-02-28 00:45:47
【问题描述】:
在我的以下代码中,Canvas 完美运行,它显示在我的地图上,然后当我尝试单击任意位置时它消失了。
我尝试了所有在 (StackOverflow) 中提交的可能方法作为解决方案,但没有办法,也许我的代码有一些错误导致了这种情况。
html代码:
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/openlayers/4.4.2/ol.css" type="text/css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/openlayers/4.4.2/ol.js"></script>
<canvas id="myCanvas" width="1000" height="500"></canvas>
<button type="button" onclick="evt();">resolution</button>
js代码:
image = new ol.layer.Tile({
source: new ol.source.XYZ({
projection: 'EPSG:4326',
wrapX: false,
url: image/{z}/{x}/{-y}.png'
})
});
map.addLayer(image);
function evt() {
var canvasContext = $('.ol-unselectable')[0].getContext('2d');
var canvas = document.getElementById('myCanvas');
var imgData = canvasContext.getImageData(0, 0, canvas.width, canvas.height);
var imageWidth = imgData.width;
var imageHeight = imgData.height;
var pix = imgData.data;
var l = pix.length;
var i;
for (i = 0; l > i; i += 4) {
if (pix[i] >= 100 && pix[i] <= 200 && pix[i + 1] >= 100 && pix[i + 1] <= 200 && pix[i + 2] >= 100 && pix[i + 2] <= 200) {
pix[i] = 255;
pix[i + 1] = 0;
pix[i + 2] = 0;
}
}
canvasContext.putImageData(imgData, 0, 0);
};
【问题讨论】:
-
你错过了,ol-unselectable这个元素
-
var canvasContext = $('.ol-unselectable')[0].getContext('2d');在您的 html 中,应该有一个 className 包含 ol-unselectable 的元素,是吗?如果是这样,请将其添加到 html
-
或者只是...
$('#myCanvas')? -
(ol-unselectable) 它已经在 ol.js (openlayers) 中了 .. 顺便说一句,我的代码工作正常,但画布在显示后消失,
-
@xianshenglu 如果此 sn-p 产生问题中未讨论的错误,请避免将代码编辑为 sn-p。给 OP 请提供一个真实的minimal reproducible example。
标签: javascript canvas html5-canvas openlayers