我正在使用OpenLayers3库。我想有固定的图标大小。我正在使用此代码设置大小38x38px:
new ol.style.Style({
image: new ol.style.Icon({
src: icon,
size: [38, 38]
})
});
我在firebug中有错误:
IndexSizeError:索引或大小为负数或大于允许的数量
有什么问题?
答案 0 :(得分:2)
我已经设法通过使用大于实际图标大小的图片大小在IE和Firefox中复制您的问题,请参阅jsFiddle。
当图像设置为实际大小[32,48]或更小时,这样运行正常,但只要你超过它,就会在Firefox和IE中出现错误。
var iconStyle = new ol.style.Style({
image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ ({
anchor: [0.5, 46],
size: [32, 48],
anchorXUnits: 'pixels',
anchorYUnits: 'pixels',
opacity: 0.75,
src: 'http://ol3js.org/en/master/examples/data/icon.png'
}))
});
看看iconstyle source,看起来大小与锚点位置有关,而不是像你建议的那样。
正如Karl-Johan所说,这似乎是一个错误。鉴于OL3现在处于伽玛状态,可能是报告它的好时机。
我意识到这并不能解决你的问题,但至少会在原因上复制它。
答案 1 :(得分:1)
似乎有一个bug in OpenLayers已于5月初修复,可能会出现此错误。它似乎特定于Firefox以及(因为你提到Firebug我假设你使用的是Firefox)所以在你的情况下听起来似乎是合理的。
所以,只需尝试更新latest release of OpenLayers3(截至编写v3.0.0-gamma.2),看看是否有帮助。
答案 2 :(得分:0)
查看我向OL GitHub开放的问题:
https://github.com/openlayers/ol3/issues/2861#issuecomment-68133807
答案 3 :(得分:0)
用于跨浏览器使用
src : iconUrl,scale : 1.3,
代替。如果使用尺寸,也不应该如上所述那样高于[32,48]。