我试图将融合表层数据放在我的Google Map上,但是我得到了一个错误的请求-URI太大的。我找了很多东西,但却找不到怎样才能让它工作,不管是用邮局的方法还是其他的方法。问题是where clause,但我不能缩短where子句。有谁能帮我或指导我吗?
提前感谢您的帮助。
layer = new google.maps.FusionTablesLayer({
map: googleMap,
heatmap: {enabled: false},
query: {
select: "col4",
from: "tableID",
where: "",
},
styles: [{
polygonOptions: {
fillOpacity: 0.3
}
}, {
where: "col0 in ('Jefferson','Pulaski','Los Angeles','Denver','Middlesex','New Castle','Duval','Pinellas','Lee','Broward','Fulton','Cobb','Ada','Tazewell','Cook','Marion','Hendricks','Putnam','Adams','Boone','Orleans','Plymouth','Baltimore','Washington','Macomb','Genesee','Oakland','Hennepin','Jackson','Shelby','Granite','Forsyth','Mecklenburg','Wake','Douglas','Gloucester','Passaic','Bernalillo','Sandoval','Clark','New York','Montgomery','Hamilton','Tulsa','Oklahoma','Multnomah','Lane','Chester','Philadelphia','York','Lehigh','Kent','Horry','Davidson','Travis','Harris','Dallas','Fairfax','Chesterfield','King','Brown','Laramie','Kalamazoo','Cabarrus','San Diego','Pennington','Richland','Weber','Ramsey','Hartford') AND col3 in ('AL','AR','CA','CO','CT','DC','DE','FL','GA','ID','IL','IN','WV','OH','KY','LA','MA','MD','MI','MN','MO','TN','MT','NC','NE','NJ','NM','NV','NY','OK','OR','PA','RI','SC','TX','VA','VT','WA','WI','WY','SD')",
polygonOptions: {
fillColor: '#ffffff',
strokeColor: '#ff0000',
fillOpacity: 0.3
}
}],
options: {
styleId: 1,
templateId: 2
}
});发布于 2013-10-06 08:19:45
一旦您使用动态查询,您总是会遇到请求URI太大的问题。一种解决方案是生成正在查询的运行时的融合表--意思是在用户选择创建table..or的动态参数之后--更可能是来自服务器端(php、asp、java)的视图--并将创建的表id传递给应用程序中的视图层。缺点是:你会失去所有的动力,因为创建后,该表需要缓存在谷歌的一侧,以正确显示(另5-30秒之上的表创建)。
听听我的建议: FT只是不适合显示动态过滤的数据。可以应用一些小的过滤器,例如:对单个字段的单个值进行过滤,但仅此而已。为了实现您想要的结果,您可能需要考虑一种OpenLayers + GeoServer + WMS方法。这些都是开源的,比上面的解决方案快100倍。
https://stackoverflow.com/questions/19179019
复制相似问题