我在融合表中遇到数据可视化问题。例如,我有下一个代码:
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'选项中有一个“huge where子句”。但是在初始化期间,google maps 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子句查询fusion表或使用POST请求而不是GET?
答案 0 :(得分:1)
GET URL限制为~2k个字符,正如您所指出的,您当然可以创建一个更长的复杂WHERE子句,这会导致此问题。
如果你刚刚超过限制,一个解决方案可能是重命名你的列,以便它们不那么长。
或者,您可以简化查询。如上所述,这是一个经过的查询:
zip IN ('zip1', 'zip2', ..., 'zipN')
但你可能会重写以保存很多角色:
zip < zipN