JQM定向SVG量表

时间:2011-10-03 16:04:32

标签: mobile svg orientation scale jvectormap

我正在尝试使用jVectorMap上的地图在移动网站上工作 http://jvectormap.owl-hollow.net/ 我发现在横向模式下在iphone上查看页面时,我需要将scale命令更改为.4。但是,在纵向模式下,它需要更小,例如.2。

我正在使用此代码调整从jVectorMap下载的js库中找到的比例值。注释掉的代码是我为了适应iPhone屏幕而修改的原始代码

    applyTransformParams: function(scale, transX, transY) {
        if (this.mode == 'svg') {
            this.rootGroup.setAttribute('transform', 'scale(.4) translate(30, '+transY+')');
//this.rootGroup.setAttribute('transform', 'scale('+scale+') translate('+transX+', '+transY+')');
        } else {
            this.rootGroup.coordorigin = (this.width-transX)+','+(this.height-transY);
            this.rootGroup.coordsize = this.width/scale+','+this.height/scale;
        }
    }

我的问题是,有没有办法通过js确定屏幕方向并更新比例数?或者也许有最适合移动设备的命令?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您可以检查浏览器是否支持onorientationchange事件(或回退到onresize),如下所示:

var evt;
if ((typeof window.orientation !== 'undefined') && ('onorientationchange' in window)) {
    evt = 'orientationchange';
} else {
    evt = 'resize';
}

你总能得到这样的方向:

var getOrientation = function () {
    if (evt === 'orientationchange') {
        return = (window.orientation === 0) ? 'portrait' : 'landscape';
    } else {
        return = (window.innerHeight > window.innerWidth) ? 'portrait' : 'landscape';
    }

};

然后您可以订阅该活动&在那里进行缩放。

var originalOrientation = getOrientation;
window.addEventListener(evt, function () {
    var orientation = getOrientation();
    if (orientation !== originalOrientation) {
        originalOrientation = orientation;
        // do your scaling here...
    }
});