Я использую SVGPanZoom для управления масштабированием SVG-изображения в моем гибридном приложении Android (для всех целей и задач, аналогично поведению в Chrome).Хотя масштабирование работает хорошо, я обнаружил странную проблему.Мой оригинальный встроенный элемент SVG выглядит следующим образом:
<svg id='puzzle' viewBox='0 0 1600 770' preserveAspectRatio='none'
width='100vw' height='85.5vh' fill-rule='evenodd' clip-rule='evenodd'
stroke-linejoin='round' stroke-miterlimit='1.414'
xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://
www.w3.org/1999/xlink'>
Изначально этот элемент SVG пуст и заполняется программно из JavaScript во время выполнения, после чего я запускаю SVGPanZoom следующим образом
var panZoom = svgPanZoom('#puzzle',
{panEnabled:false,controlIconsEnabled:false,
zoomEnabled:true,dblClickZoomEnabled:true,onZoom:postZoom});
panZoom.refreshRate = 10;
panZoom.zoomScaleSensitivity = 0.02;
ПроблемаЯ столкнулся с этим - я хочу, чтобы мое SVG-изображение заполнило доступную область, 100vw x 85.5vh
полностью, чтобы сделать это, и я проинструктировал его через атрибут preserveAspectRatio="none"
выше вместе с атрибутом viewBox="0 0 1600 770" attribute. I have found that this works - so long as I don't use SVGPanZoom. As soon as I initiate panZoom the
zoomBox`attribute, и я заканчиваюс изображением, которое не совсем ведет себя с точки зрения поведения растяжения / заполнения по умолчанию.
SVGPanZoom широко используется, поэтому я предполагаю, что это поведение не совсем правильно для меня.Окунувшись в код, который я нашел, SVGPanZoom создает cacheViewBox
, а затем переходит к удалению исходного атрибута zoomBox.
Что хорошо, если после этого работает масштабирование и исходное поведение приложения не меняется, что нечто я нахожуЧто я тут не так делаю?