我正在尝试使用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确定屏幕方向并更新比例数?或者也许有最适合移动设备的命令?
感谢您的帮助
答案 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...
}
});