【问题标题】:Problems retrieving Fusion Tables data - Google Maps API检索 Fusion Tables 数据时出现问题 - Google Maps API
【发布时间】:2012-12-19 05:06:57
【问题描述】:

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

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

我的客户需要在 Google 地图上查看其内部区域划分(区域是一组城市,它是多对多关联)。可以通过应用程序菜单加载文件随时更改领土-城市关系。今天,我们在系统中有 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 似乎是最好的方法。

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

我该怎么做?有人有其他方法来解决这个问题吗?

谢谢

【问题讨论】:

  • 您可以只添加一个包含“区域”代码的列,然后在该表中查询该列中具有相应代码的记录吗?

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


【解决方案1】:

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

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

您可以按照 geocodezip 的建议,在表中添加另一列来存储“关系”,而不是过滤服务器上的城市并查询城市。

这可能会在“文件”上传时自动完成(这里你可以使用 POST)

现在新的 where 子句将变得简单而简短,例如:territory=35

【讨论】:

  • 感谢 Molle 博士的回答,但关系是多对多的,有些城市与多个地区相关联,在这种情况下,您知道一种将其存储在 Fusion 中的方法桌子?
  • Fusion Tables 支持 LIKE,您可以存储由某个分隔符分隔的区域列表。另一种选择是为每个区域创建列
  • 感谢 Molle 博士的帮助,我会实施这个方法。
  • 它不起作用:(当我开始更新城市表中的区域列的过程时,我需要清理它,所以我尝试将每个城市的值设置为空.. . 但是 Fusion Tables 有任何限制,当我到达 ROWID #32 时,它会抛出这个异常:线程“main”com.google.gdata.util.InvalidEntryException 中的异常:请求配额超出似乎我可以查询的限制执行。我尝试通过在每次更新结束时添加 500 毫秒的延迟来更改代码,但我只得到了 ROWID #48。
  • AFAIK 的限制是每秒 5 次查询。您需要更新多少行?
猜你喜欢
  • 2013-02-06
  • 2014-10-11
  • 2013-11-19
  • 2012-04-24
  • 1970-01-01
  • 2014-04-11
  • 2017-02-04
  • 1970-01-01
  • 2014-03-23
相关资源
最近更新 更多