检索Fusion Tables数据时出现问题 - Google Maps API

时间:2013-01-04 18:15:22

标签: javascript google-maps-api-3 kml google-fusion-tables

我正在开发一个JSP应用程序,它可以检索要在地图上显示的大量多边形。

我会在告诉我的问题之前尝试解释应用程序的工作原理。

我的客户需要在谷歌地图上查看他的内部区域划分(一个地区是一组城市,这是一个多对多关联)。通过应用程序菜单加载文件,可以随时更改地域 - 城市关系。今天,我们在该系统中拥有35个地区和大约10000个领土 - 城市协会。

我在Fusion Tables中有多个具有城市形状的多边形,但是当我尝试检索形状时,我收到以下错误:

为一个区域加载多边形的代码:

layer = new google.maps.FusionTablesLayer({
    query:{
        select: 'geometry',
        from: {MYKEY},
        where: "NAME_CITY IN ("+listOfCities+")"
    }
});

错误:

  

无法加载资源:服务器响应状态为414(Request-URI Too Large)

我正在寻找一种方法来加载这些领域很长一段时间,我已经尝试从Java读取KML文件,并发送每个城市的坐标集,但HTML页面完成后就像300MB,它只是冻结浏览器,并没有工作。所以Fusion Tables似乎是最好的方法。

我发现了一些帖子,人们告诉他们使用POST方法来请求数据,因为listOfCities变量的大小(一些地区有大约500个城市相关联),但他们从未说过如何使用Google Maps API。

我该怎么做?有人有另一种方法可以解决这个问题吗?

谢谢

1 个答案:

答案 0 :(得分:2)

您必须以某种方式简化查询。 POST不是一个选项,无法更改用于查询的方法。

但这可能是你可以开始的一点: 通过应用程序菜单加载文件,可以随时更改领土 - 城市关系。

您可以按照geocodezip的建议,在表格中添加另一列,而不是过滤服务器上的城市和查询城市。

这可以在上传“文件”时自动完成(此处可以使用POST)

新的where-clause现在简单而简短,例如: territory=35