阅读了Algolia的Geo-search on steroid博客文章之后,我已经实现了并使用insidePolygon函数进行OR过滤,并且一切正常。
但是几天后,它开始返回零结果。

从我能够验证的情况来看,设置第二个多边形后会发生这种情况。

我已经从匹配的结果中检查了所有lat / lng元组,为多边形值检查了lat / lng字符串,对我来说一切似乎都很好。

当我用第一个多边形设置insidePolygon时,返回的结果是正确的。
但是,如果我设置第二个多边形,则Algolia将返回零结果。

这就是我在做什么。第一个多边形:

setQueryParameter("insidePolygon", "51.565237,-0.127758,51.548264,-0.061937,51.507314,-0.034756,51.466401,-0.062055,51.449465,-0.127758,51.466401,-0.193462,51.507314,-0.220760,51.548264,-0.193580");

这将返回22个结果。都好。

第二个多边形:
setQueryParameter("insidePolygon", "0.089927,0.000000,0.063588,0.063588,0.000000,0.089927,-0.063588,0.063588,-0.089927,0.000000,-0.063588,-0.063588,-0.000000,-0.089927,0.063588,-0.063588");

现在我有0个结果。由于这是一个OR运算符,因此我发现这种行为确实很奇怪。它至少应该显示我从第一个多边形进行过滤得到的22个结果。

任何帮助将非常感激。

谢谢!

最佳答案

除非我不能正确理解您的问题,否则您对setQueryParameter的第二次调用实际上将覆盖您设置的第一个多边形。

我的猜测是第二个多边形不包含任何结果,因此一旦设置它,最终将不会有任何点击。

要合并多个多边形,可以使用以下语法:setQueryParameter("insidePolygon", [[...polygon1's points...], [...polygon2's points...]])
您的情况是:

setQueryParameter("insidePolygon", [[51.565237,-0.127758,51.548264,-0.061937,51.507314,-0.034756,51.466401,-0.062055,51.449465,-0.127758,51.466401,-0.193462,51.507314,-0.220760,51.548264,-0.193580], [0.089927,0.000000,0.063588,0.063588,0.000000,0.089927,-0.063588,0.063588,-0.089927,0.000000,-0.063588,-0.063588,-0.000000,-0.089927,0.063588,-0.063588]]);

您当然可以有两个以上的多边形。

关于javascript - Algolia -多个insidePolygon,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41304055/

10-09 04:53