3

我正在尝试将融合表层数据放在我的上,Google Map但我收到错误Request-URI Too Large。我进行了很多搜索,但找不到如何通过 POST 方法或其他方法使其工作。问题是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
    }
});
4

1 回答 1

3

一旦您使用动态查询,您总是会遇到 Request URI Too Large 问题。一种解决方案是生成您正在查询运行时的融合表 - 意思是在用户选择动态参数之后您创建表..或者更可能是来自服务器端的视图(php、asp、java) - 并传递创建的表 id到应用程序中的视图层。缺点是:您将失去所有动态,因为创建表后需要在 google 端缓存才能正确显示(在创建表的顶部再等待 5-30 秒)。

听听我的建议:FT 并非旨在显示动态过滤的数据。可以应用一些小的过滤器,例如:过滤单个字段的单个值,仅此而已。要实现您想要的,您可能需要考虑OpenLayers + GeoServer + WMS方法。这些是开源的,比上述解决方法快约 100 倍。

于 2013-10-06T08:19:45.333 回答