O mapa dinâmico do google com mosaicos personalizados evita a repetição de pan

Eu tenho um conjunto de blocos dinâmico onde eu não quero permitir pan fora de seus limites.

O código abaixo me aproxima, mas o usuário ainda pode rolar horizontalmente para fora dos limites estritos, porque ele usa o centro do mapa para comparação

var strictBounds = new google.maps.LatLngBounds(
 new google.maps.LatLng(sw_lat, sw_lon), 
 new google.maps.LatLng(ne_lat, ne_lon)
);

google.maps.event.addListener(map, 'drag', function() 
{
  if (strictBounds.contains(map.getCenter())) return;

 // We're out of bounds - Move the map back within the bounds

 var c = map.getCenter(),
     x = c.lng(),
     y = c.lat(),
     maxX = strictBounds.getNorthEast().lng(),
     maxY = strictBounds.getNorthEast().lat(),
     minX = strictBounds.getSouthWest().lng(),
     minY = strictBounds.getSouthWest().lat();

 if (x < minX) x = minX;
 if (x > maxX) x = maxX;
 if (y < minY) y = minY;
 if (y > maxY) y = maxY;

 map.setCenter(new google.maps.LatLng(y, x));
});

questionAnswers(3)

yourAnswerToTheQuestion