Google Maps API中的“meta viewport user-scalable = no”有什么意义?

我使用的是Google Maps JavaScript API V3, 官方的例子总是包含这个meta标签:

<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 

我见过的大多数第三方示例也是这样做的。 不过,我写了一个使用它的插件,我的一个用户告诉我,这使得他无法在移动设备上放大或缩小 。 我没有移动设备进行testing,我的search没有显示任何有用的信息。

那么,标签有什么意义呢? 我应该留下吗? 我应该尝试检测浏览器代理,只显示桌面浏览器?

如果你想检查插件,你可以下载 , 浏览源代码或看到一个实例 。

在许多设备(如iPhone)上,它会阻止用户使用浏览器的缩放。 如果你有一个地图,浏览器做缩放,那么用户会看到一个巨大的像素化图像,像素标签很大。 这个想法是,用户应该使用谷歌地图提供的缩放。 不确定与你的插件的任何交互,但这就是它的目的。

最近,@ehfeng在他的回答中指出,Chrome for Android(也许还有其他一些)利用了这样一个事实:浏览器标签页面上没有本地浏览器缩放。 这可以让他们摆脱浏览器需要等待的触摸事件的可怕的300毫秒的延迟,看看你的单一触摸最终会成为双重触摸。 (想想“单击”和“双击”)。然而,当这个问题最初被问到(在2011年),这是不是在任何移动浏览器。 这只不过是最近偶然出现的迷人而已。

禁用用户可缩放(即双击缩放function)可以使浏览器减less点击延迟。 在支持触摸的浏览器中,当用户期望双击缩放时,浏览器通常在点击事件之前等待300毫秒,等待用户将双击。 禁用用户可扩展function允许Chrome浏览器立即触发点击事件,从而提供更好的用户体验。

来自Google IO 2013会话https://www.youtube.com/watch?feature=player_embedded&v=DujfpXOKUp8#t=1435s

更新:它不是真的, <meta name="viewport" content="width=device-width">足以去除300ms延迟

从v3文档 (开发人员指南>概念>开发移动设备):

Android和iOS设备尊重以下<meta>标签:

 <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 

此设置指定地图应全屏显示,不应由用户resize。 请注意,iPhone的Safari浏览器需要将<meta>标签包含在页面的<head>元素中。

如果您的devise没有响应,则根本不应使用视口元标记。 滥用这个标签可能会导致布局破碎。 你可以阅读这篇文章,了解为什么你不应该使用这个标签,除非你知道你在做什么。 http://blog.javierusobiaga.com/stop-using-the-viewport-tag-until-you-know-ho

“user-scalable = no”也有助于防止iOSinput框上的放大效果。