これはほとんど答えられていますが、私は拡大します...
ステップ1
私の目標は、特定の時間にズームを有効にし、他の時間には無効にすることでした。
// enable pinch zoom
var $viewport = $('head meta[name="viewport"]');
$viewport.attr('content', 'width=device-width, initial-scale=1, maximum-scale=4');
// ...later...
// disable pinch zoom
$viewport.attr('content', 'width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no');
ステップ2
ビューポートタグは更新されますが、ピンチズームはまだアクティブでした!! ページに変更を反映させる方法を見つけなければなりませんでした...
これはハックソリューションですが、体の不透明度を切り替えることでうまくいきました。これを達成する方法は他にもあると思いますが、これが私にとってうまくいったことです。
// after updating viewport tag, force the page to pick up changes
document.body.style.opacity = .9999;
setTimeout(function(){
document.body.style.opacity = 1;
}, 1);
ステップ3
私の問題はこの時点でほとんど解決されましたが、完全ではありません。ページに合うようにいくつかの要素のサイズを変更できるように、ページの現在のズームレベルを知る必要がありました(マップマーカーを考えてください)。
// check zoom level during user interaction, or on animation frame
var currentZoom = $document.width() / window.innerWidth;
これが誰かに役立つことを願っています。解決策を見つける前に、マウスを叩いて数時間過ごしました。