I am attempting to fetch data from a Fusion Table, using an "IN" operator. When I am looking in a very large string (2000+ zip codes), nothing is returned. When I look in a short string (two zip codes), it works correctly.
For example, this works:
var zip = "76364,76373";
layer = new google.maps.FusionTablesLayer(tableid);
layer.setQuery("SELECT 'geometry' FROM " + tableid + " WHERE ZIP IN("+zip+")");
layer.setMap(map);
But this does not:
var zips = <?php echo $zips; ?>; //$zips is a JSON array
zips = zips.join();
layer = new google.maps.FusionTablesLayer(tableid);
layer.setQuery("SELECT 'geometry' FROM " + tableid + " WHERE ZIP IN("+zips+")");
layer.setMap(map);
I get a 400 error in Firebug.
I have not been able to find a limit in Google documentation.
It sounds like you are hitting the maximum URL length (2048 characters).
The query sent to the Fusion Tables Layer is added to the URL of each tile image. If the query is too long, then the URL of each tile image exceeds the URL limit, and the image will not be displayed.