Visão geral
O uso de um mapa em uma página da Web requer opções específicas para controlar como as pessoas interagem com ele na hora de aplicar zoom e movimentar. Essas opções, como gestureHandling, minZoom, maxZoom e restriction, são definidas na interface MapOptions.
Comportamento padrão
O mapa a seguir demonstra o comportamento padrão de interações com um mapa instanciado apenas com as opções zoom e center definidas.
Confira abaixo o código desse mapa.
TypeScript
new google.maps.Map(document.getElementById("map")!, { zoom, center, });
JavaScript
new google.maps.Map(document.getElementById("map"), { zoom, center, });
Controlar o gerenciamento de gestos
Quando uma pessoa rola uma página que contém um mapa, isso pode aumentar o zoom sem querer. Para controlar esse comportamento, use a opção de mapa gestureHandling.
gestureHandling: cooperative
O mapa abaixo usa a opção gestureHandling definida como cooperative, permitindo a rolagem da página normalmente, sem aplicação de zoom ou movimentação do mapa. Para aumentar o zoom do mapa, basta clicar nos respectivos controles. Outra opção para fazer isso (ou movimentar o mapa) é usar os movimentos de dois dedos em dispositivos com tela touch.
Confira abaixo o código desse mapa.
TypeScript
new google.maps.Map(document.getElementById("map")!, { zoom, center, gestureHandling: "cooperative", });
JavaScript
new google.maps.Map(document.getElementById("map"), { zoom, center, gestureHandling: "cooperative", });
gestureHandling: auto
O mapa na parte de cima da página, sem a opção gestureHandling, tem o mesmo comportamento que o mapa anterior com gestureHandling definido como cooperative, e isso acontece porque todos os mapas nesta página estão em um <iframe>. O valor padrão de gestureHandling auto alterna entre greedy e cooperative, dependendo de o mapa estar em um <iframe>.
| Mapa contido em <iframe> | Comportamento | 
|---|---|
| sim | cooperative | 
| não | greedy | 
gestureHandling: greedy
Abaixo mostramos um mapa com gestureHandling definido como greedy. Esse mapa reage a todos os gestos de toque e eventos de rolagem, diferentemente de cooperative.
gestureHandling: none
A opção gestureHandling também pode ser definida como none para desativar gestos no mapa.
Desativar movimentação e zoom
Para desativar totalmente a movimentação e aplicação de zoom ao mapa, é preciso incluir duas opções, gestureHandling e zoomControl.
TypeScript
new google.maps.Map(document.getElementById("map")!, { zoom, center, gestureHandling: "none", zoomControl: false, });
JavaScript
new google.maps.Map(document.getElementById("map"), { zoom, center, gestureHandling: "none", zoomControl: false, });
O mapa abaixo demonstra a combinação de gestureHandling e zoomControl no código acima.
Restringir limites e zoom do mapa
Pode ser útil permitir gestos e controles de zoom e restringir o mapa a determinados limites ou estabelecer zoom mínimo e máximo. Para isso, defina as opções restriction, minZoom e maxZoom. O código e o mapa a seguir demonstram essas opções.
TypeScript
new google.maps.Map(document.getElementById("map")!, { zoom, center, minZoom: zoom - 3, maxZoom: zoom + 3, restriction: { latLngBounds: { north: -10, south: -40, east: 160, west: 100, }, }, });
JavaScript
new google.maps.Map(document.getElementById("map"), { zoom, center, minZoom: zoom - 3, maxZoom: zoom + 3, restriction: { latLngBounds: { north: -10, south: -40, east: 160, west: 100, }, }, });