学习SVG /快照。随着一些帮助,我可以从地图上拉一个区域,它加载到每the fiddle here.使用JS缩放和居中SVG
我现在想通过200px
div来保持200px
内SVG,保持其纵横比模式,以规模,所以每个区域在模式将适合在上面的框中,但仍然对其他地区的规模。
var m = Snap('#world-map');
var d = Snap('#svg-region');
var regionSVG = m.select('#' + region);
var p = regionSVG.clone();
d.append(p);
var bb = regionSVG.getBBox();
var vb = bb.x + ' ' + bb.y + ' ' + bb.width + ' ' + bb.height;
d.attr({
viewBox: vb
})
我试图在BBOX创建一个规模的加工数据,但悲惨地失败了。
function zoomBBox(bbox)
{
var zbbox, ratio, diffx, diffy;
var length = 200;
if (bbox.width > bbox.height) {
ratio = bbox.width/length;
zbbox.width = length;
zbbox.height = bbox.height * ratio;
} else {
ratio = bbox.height/length;
zbbox.width = bbox.width * ratio;
zbbox.height = length;
}
diffx = (zbbox.width - length)/2;
diffy = (zbbox.height - length)/2;
zbbox.x = bbox.x + diffx;
zbbox.y = bbox.y + diffy;
return zbbox;
}
您是否尝试将css'max-height:100%;'添加到svg中? – Bellian