如何在单个图层中显示ST_INTERSECTS多个可能位置的融合表行?

时间:2014-01-02 04:52:25

标签: google-fusion-tables

我有一个非常常规的融合表,其中包含数据行,其中每行都有一个包含多边形的位置列(或多个几何中的多个多边形)。我使用此融合表数据使用google.maps.FusionTablesLayer在网页中的Google地图对象上绘制多边形。在CIRCLE内创建一个使用单个位置作为ST_INTERSECTS且半径较小的查询是一项简单的练习,并且运行良好。

但是,我现在需要能够查询融合表中与多个可能位置相交的所有行(实际上是搜索词的地理编码的结果)。每行只需要与要包括在结果集中的至少一个位置相交。

我已经尝试过或考虑过的事情......

1)多层不起作用,因为我最多只限于5个位置,其中只有一个可以按我需要的方式设置。

2)为每个位置构建LatLngBounds,然后在边界形成的ST_INTERSECTS上执行RECTANGLE。很明显,一旦你这样做,这会显示两个遥远位置之间的所有多边形,但实际上不包含位置(因为我们现在正在寻找与两个点周围的大矩形相交的多边形) - 我不喜欢这样的东西不想要。

3)你无法做"ST_INTERSECTS(GEOMETRY, CIRCLE(location1, 1)) OR ST_INTERSECTS(GEOMETRY, CIRCLE(location2, 1))" <=如果它有效,这将是一个完美的解决方案!

4)您不能使用融合表查询进行SQL联合。

5)您无法在单个融合表查询中执行多个SQL选择。

我能在单个融合表层中做到这一点吗?

提前感谢任何输入!

1 个答案:

答案 0 :(得分:0)

我担心这里唯一可行的解​​决方案可能是首先请求行(带有ID的唯一列,但不是内部存储的rowId),每个位置的单个请求。

获得所有结果后,根据返回的ID建立FTlayer查询,a'la:

where: "columnWithIds IN('collected','ids','from','the','previous','requests')" 

如果这适用于您的情况将取决于

  1. 位置数量(对webService请求的限制)
  2. 返回的行数(browserLimit for URL-length)