我正在使用OpenLayers3库。我想有固定的图标大小。我正在使用此代码设置大小 38x38px:
new ol.style.Style({
image: new ol.style.Icon({
src: icon,
size: [38, 38]
})
});
我在萤火虫中有一个错误:
IndexSizeError:索引或大小为负数或大于允许的数量
怎么了?
我正在使用OpenLayers3库。我想有固定的图标大小。我正在使用此代码设置大小 38x38px:
new ol.style.Style({
image: new ol.style.Icon({
src: icon,
size: [38, 38]
})
});
我在萤火虫中有一个错误:
IndexSizeError:索引或大小为负数或大于允许的数量
怎么了?
我已经设法通过使用大于实际图标大小的图像大小在 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 源代码似乎与锚位置有关,而不是与大小有关。
正如 Karl-Johan 所说,这似乎是一个错误。鉴于 OL3 现在处于 gamma 状态,现在可能是报告它的好时机。
我意识到这并不能解决您的问题,但至少可以复制它。
5 月初修复的 OpenLayers中似乎存在一个错误,该错误可能会导致此错误。它似乎也特定于 Firefox(并且由于您提到 Firebug,我假设您正在使用 Firefox)所以在您的情况下听起来似乎是合理的。
因此,只需尝试更新到最新版本的 OpenLayers3(在编写v3.0.0-gamma.2 时),看看是否有帮助。
看看我在 OL GitHub 上打开的问题:
https://github.com/openlayers/ol3/issues/2861#issuecomment-68133807
用于跨浏览器使用
src : iconUrl,scale : 1.3,
。同样,如果使用 size ,则它不应高于已经提到的 [32, 48] 。