Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Raphael.setViewBox缩放/平移显示集合/图纸的全部内容_Javascript_Svg_Raphael - Fatal编程技术网

Javascript 使用Raphael.setViewBox缩放/平移显示集合/图纸的全部内容

Javascript 使用Raphael.setViewBox缩放/平移显示集合/图纸的全部内容,javascript,svg,raphael,Javascript,Svg,Raphael,我的目标是创建一些代码,以显示(不需要动画)一组尽可能大的对象,在文件的中心 我当前的尝试获取一组对象或图纸的边界框,并返回尺寸,然后由setViewBox使用。不幸的是,它就是不起作用,我不知道为什么 这是我的密码 function GetContainingViewBoxFor(object) { var maxValues = { x: 0, y: 0 }; var minValues = { x: 0, y: 0 }; //Find max and min points objec

我的目标是创建一些代码,以显示(不需要动画)一组尽可能大的对象,在文件的中心

我当前的尝试获取一组对象或图纸的边界框,并返回尺寸,然后由
setViewBox
使用。不幸的是,它就是不起作用,我不知道为什么

这是我的密码

function GetContainingViewBoxFor(object)
{
var maxValues =  { x: 0, y: 0 };
var minValues =  { x: 0, y: 0 };

//Find max and min points
object.forEach(function (el) {
    if (el.data("background")) return;

    var bbox = el.getBBox();

    if (bbox.y < minValues.y) minValues.y = bbox.y;
    if (bbox.y2 < minValues.y) minValues.y = bbox.y2;

    if (bbox.y > maxValues.y) maxValues.y = bbox.y;
    if (bbox.y2 > maxValues.y) maxValues.y = bbox.y2;

    if (bbox.x < minValues.x) minValues.x = bbox.x;
    if (bbox.x2 < minValues.x) minValues.x = bbox.x2;

    if (bbox.x > maxValues.x) maxValues.x = bbox.x;
    if (bbox.x2 > maxValues.x) maxValues.x = bbox.x2;
});

//Padding
var padding = 50;
maxValues.x += padding;
minValues.x -= padding;
maxValues.y += padding;
minValues.y -= padding;

var w = maxValues.x - minValues.x;
var h = maxValues.y - minValues.y;

var cviewBox = {X:minValues.x - paper.width,Y:minValues.y,width:w,height:h};
return cviewBox;
}

在您之前的问题中,我不知道您需要平移/缩放功能。我从未尝试过setViewBox()方法,我正在使用RaphaelZPD库来实现。但是我给你的小提琴和代码完成了缩放。。。在我制作的这个游戏中,您有一个平移/缩放的工作示例。。。您可以看到地图是如何相对于屏幕居中和缩放的。www.disemo.com/map由于游戏是西班牙语的,只需点击Juego Rapido,Suigiente。。。。选择几个大陆,点击Jugar并探索我的代码的结果。。。如果您需要任何帮助,请在上一个问题中告诉我,我不知道您需要平移/缩放功能。我从未尝试过setViewBox()方法,我正在使用RaphaelZPD库来实现。但是我给你的小提琴和代码完成了缩放。。。在我制作的这个游戏中,您有一个平移/缩放的工作示例。。。您可以看到地图是如何相对于屏幕居中和缩放的。www.disemo.com/map由于游戏是西班牙语的,只需点击Juego Rapido,Suigiente。。。。选择几个大陆,点击Jugar并探索我的代码的结果。。。如果你需要帮助,请告诉我
var containingViewBox = GetContainingViewBoxFor(paper);

paper.setViewBox(containingViewBox.X, containingViewBox.Y, containingViewBox.width, containingViewBox.height, false);