Estou usando a API JavaScript V3 do Google Maps e os exemplos oficiais sempre incluem esta metatag:
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
A maioria dos exemplos de terceiros que vi também fazem isso. No entanto, escrevi um plugin usando-o e um de meus usuários me disse que ele está impedindo que ele amplie e reduza o zoom em seu dispositivo móvel . Não tenho um dispositivo móvel para testar e nenhuma das minhas pesquisas revelou qualquer informação útil.
Então, qual é o objetivo da tag? Devo deixar como está? Devo tentar detectar o agente do navegador e mostrá-lo apenas para navegadores de desktop?
Se você deseja examinar o plugin, pode baixá-lo , navegar na fonte ou ver um exemplo ao vivo .
mobile
google-maps-api-3
viewport
meta-tags
Ian Dunn
fonte
fonte
Respostas:
Em muitos dispositivos (como o iPhone), impede o usuário de usar o zoom do navegador. Se você tiver um mapa e o navegador fizer o zoom, o usuário verá uma grande e velha imagem pixelada com enormes rótulos pixelados. A ideia é que o usuário use o zoom disponibilizado pelo Google Maps. Não tenho certeza sobre qualquer interação com o seu plugin, mas é para isso que existe.
Mais recentemente, como @ehfeng observou em sua resposta, o Chrome para Android (e talvez outros) tirou vantagem do fato de que não há nenhum navegador nativo fazendo zoom em páginas com uma tag de janela de visualização definida como essa. Isso permite que eles se livrem do temido atraso de 300ms em eventos de toque que o navegador leva para esperar e ver se seu único toque acabará sendo um toque duplo. (Pense em "clique único" e "clique duplo".) No entanto, quando essa pergunta foi feita originalmente (em 2011), isso não era verdade em nenhum navegador móvel. É apenas uma maravilha adicionada que surgiu fortuitamente mais recentemente.
fonte
Desativar escalonável pelo usuário (ou seja, a capacidade de tocar duas vezes para aumentar o zoom) permite que o navegador reduza o atraso do clique. Em navegadores habilitados para toque, quando o usuário espera que o toque duplo dê zoom, o navegador geralmente espera 300 ms antes de disparar o evento de clique, esperando para ver se o usuário tocará duas vezes. Desativar escalonável pelo usuário permite que o navegador Chrome dispare o evento de clique imediatamente, permitindo uma melhor experiência do usuário.
Da sessão do Google IO 2013 https://www.youtube.com/watch?feature=player_embedded&v=DujfpXOKUp8#t=1435s
Atualização: não é mais verdade,
<meta name="viewport" content="width=device-width">
é o suficiente para remover o atraso de 300msfonte
Na documentação da v3 (Guia do desenvolvedor> Conceitos> Desenvolvimento para dispositivos móveis):
fonte
Você não deve usar a tag viewport meta em tudo se seu projeto não é responsivo. O uso incorreto dessa tag pode levar a layouts corrompidos. Você pode ler este artigo para obter a documentação sobre por que não deve usar essa tag, a menos que saiba o que está fazendo. http://blog.javierusobiaga.com/stop-using-the-viewport-tag-until-you-know-ho
"user-scalable = no" também ajuda a evitar o efeito de ampliação nas caixas de entrada do iOS.
fonte