4

我对融合表的数据可视化有疑问。例如我有下一个代码:

function initialize() {
    map = new google.maps.Map(document.getElementById('map_canvas'), {
        center: new google.maps.LatLng(38.71980474264242, -121.552734375),
        zoom: 5,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    });

    fusionLayer = new google.maps.FusionTablesLayer({
        query: {
            select: 'column',
            from: 'tableId',
            where: "a huge where clause"
        },
        map: map
    });
}

如您所见,我在查询的“where”选项中有一个“巨大的 where 子句”。但是在初始化过程中,谷歌地图 API 对 URI 执行了很多 GET 请求,如下所示:

http://mt1.googleapis.com/mapslt?hl=en-US&lyrs=ft:tableId|sc:'column'|sg:{huge_where_clause}&x=6&y=13&z=5&w=256&h=256&source=apiv3&token=74442

所有这些请求都失败,状态码为 414:Request-URI Too Large。

所以,我的问题是:是否可以使用巨大的 where 子句或使用 POST 请求而不是 GET 来查询融合表?

4

1 回答 1

1

GET URL 被限制为 ~2k 个字符,正如您所指出的,您当然可以创建一个更长的复杂 WHERE 子句,这会导致此问题。

如果您刚刚超出限制,一种解决方案可能是重命名您的列,以便它们不那么长。

或者,您也许可以简化查询。如上所述,这是一个经过的查询:

zip IN ('zip1', 'zip2', ..., 'zipN')

但是您可能会重写以节省大量字符:

zip < zipN
于 2012-12-10T20:24:43.720 回答