0

我正在使用OpenLayers3库。我想有固定的图标大小。我正在使用此代码设置大小 38x38px:

 new ol.style.Style({
       image: new ol.style.Icon({
           src: icon,
           size: [38, 38]
       })
});

我在萤火虫中有一个错误:

IndexSizeError:索引或大小为负数或大于允许的数量

怎么了?

4

4 回答 4

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 源代码似乎与锚位置有关,而不是与大小有关。

正如 Karl-Johan 所说,这似乎是一个错误。鉴于 OL3 现在处于 gamma 状态,现在可能是报告它的好时机。

我意识到这并不能解决您的问题,但至少可以复制它。

于 2014-07-16T09:18:47.367 回答
1

5 月初修复的 OpenLayers中似乎存在一个错误,该错误可能会导致此错误。它似乎也特定于 Firefox(并且由于您提到 Firebug,我假设您正在使用 Firefox)所以在您的情况下听起来似乎是合理的。

因此,只需尝试更新到最新版本的 OpenLayers3(在编写v3.0.0-gamma.2 时),看看是否有帮助。

于 2014-07-16T07:36:18.467 回答
0

看看我在 OL GitHub 上打开的问题:

https://github.com/openlayers/ol3/issues/2861#issuecomment-68133807

于 2015-02-09T08:08:00.357 回答
0

用于跨浏览器使用 src : iconUrl,scale : 1.3, 。同样,如果使用 size ,则它不应高于已经提到的 [32, 48] 。

于 2015-08-20T11:47:14.690 回答