O problema era o seguinte , ao incorporar o iframe do google maps no site e usar o scroll do mouse sobre o mapa é ativado o controle de zoom do iframe, sendo assim se alguma informação do site abaixo do mapa o scroll é interrompido, veja você mesmo no iframe abaixo :
Ficou difícil seguir o fluxo com o scroll passando sobre o mapa ? sim eu sei mas graças a Deus a web é um lugar onde" quase" todos contribuem e compartilham conhecimento e informação , então pesquisando na web afim de solucionar o problema do cliente achei a solução no site/fórum : stackoverflow sim nós desenvolvedores não precisamos reinventar a roda , mas sim adaptar algumas soluções ao nosso contexto,vou mostrar como implementar a solução.
1) Use este script em JavaScript para controlar os eventos do mouse :
// Disable scroll zooming and bind back the click event
var onMapMouseleaveHandler = function (event) {
var that = $(this);
that.on('click', onMapClickHandler);
that.off('mouseleave', onMapMouseleaveHandler);
that.find('iframe').css("pointer-events", "none");
}
var onMapClickHandler = function (event) {
var that = $(this);
// Disable the click handler until the user leaves the map area
that.off('click', onMapClickHandler);
// Enable scrolling zoom
that.find('iframe').css("pointer-events", "auto");
// Handle the mouse leave event
that.on('mouseleave', onMapMouseleaveHandler);
}
// Enable map zooming with mouse scroll when the user clicks the map
$('.maps.embed-container').on('click', onMapClickHandler);
2) vai precisar de um pouco de CSS :
.content-container {
margin-top: 10px;
width: 100%; height: 100px;
background: rgba(255, 0, 0, .1);
text-align: center;
}
3) Você vai precisar colocar seu iframe dentro de uma div que vai conter o classe do CSS Acima e sera usado a propriedade pointer-events:none;, pode ser tanto no css externo como em um css inline(apesar do inline não ser a melhor prática) o HTML ficaria assim :
<div class='content-container embed-container map '>
<iframe src="https://www.google.com/maps/embed?pb=!1m14!1m8!1m3!1d3170.682936123606!2d-51.216044!3d-30.036268000000003!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x951978534879152d%3A0xa9522f5e1a9af85b!2sParque+Farroupilha!5e1!3m2!1spt-BR!2sbr!4v1422075381018" width="600" height="450" frameborder="0" style=" pointer-events:none;border:0"></iframe>
</div>
4) Agora é só apreciar o iframe funcionando sem interferência no fluxo da página Veja os código no iframe, o evento de scroll só funciona depois do click do mouse sobre o mapa :
Agora você deve estar se perguntando não existe uma API do google maps onde eu possa personalizar isto nos meus mapas ? SIM existe só que no meu caso erá manutenção em um portal os iframes já tinha sido encorporados, o cliente queria uma solução rápida sem muita perda de tempo, segue a documentação para api do google maps: API MAPS
Espero ter ajudado pessoal,qualquer duvida deixe um comentário.
Retirando scroll do iframe do Google maps
Reviewed by Carlos Castro
on
janeiro 23, 2015
Rating:
Não funcionou, o mapa fica desativado, quando clico nele não ativa o scroll para dar zoom.
ResponderExcluir