Фиксированный размер иконки. OpenLayers3

Я использую библиотеку OpenLayers3. Я хотел бы иметь фиксированный размер значка. Я использую этот код для установки размера 38x38px:

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

У меня ошибка в firebug:

IndexSizeError: индекс или размер отрицательный или превышает допустимую сумму

Что не так?


person Linkas    schedule 16.07.2014    source источник


Ответы (4)


Мне удалось воспроизвести вашу проблему в 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'
  }))
});

Глядя на исходный код стиля значков, может показаться, что как вы предположили, размер больше связан с позицией привязки, чем с размером.

Как сказал Карл-Йохан, это ошибка. Учитывая, что OL3 сейчас находится в гамме, самое время сообщить об этом.

Я понимаю, что это не решает вашу проблему, но, по крайней мере, воспроизводит ее с причиной.

person John Powell    schedule 16.07.2014

Похоже, в начале мая была исправлена ​​ошибка в OpenLayers. может дать эту ошибку. Похоже, это было характерно и для Firefox (и, поскольку вы упомянули Firebug, я предполагаю, что вы используете Firefox), так что в вашем случае это звучит правдоподобно.

Поэтому просто попробуйте обновиться до последнего выпуска OpenLayers3 (на момент написания v3.0.0-gamma.2) и посмотрите, поможет ли это.

person Karl-Johan Sjögren    schedule 16.07.2014
comment
Сейчас я использую v3.0.0-gamma.2. У меня тоже такая проблема с Internet Explorer. В хроме размер свойства работает скорее как смещение, но без ошибки. - person Linkas; 16.07.2014
comment
Я понимаю, что вы имеете в виду - изображение обрезается, а не изменяется, хотя я получаю такое же поведение в Chrome или FF. - person John Powell; 16.07.2014

взгляните на мою проблему, открытую для OL GitHub:

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

person Claudio Bertozzi    schedule 09.02.2015

для кросс-браузера используйте src : iconUrl,scale : 1.3, вместо этого. также, если используется размер, он не должен быть выше [32, 48], как уже упоминалось.

person Aneer Geek    schedule 20.08.2015