Algolia - Multiple insidePolygon

sem*_*ano 3 javascript algolia

在阅读了Algolia 在类固醇博客文章地理搜索之后,我实现了使用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");
Run Code Online (Sandbox Code Playgroud)

这将返回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");
Run Code Online (Sandbox Code Playgroud)

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

任何帮助将非常感激.

谢谢!

Oli*_*nce 5

除非我没有正确理解你的问题,否则你的第二次调用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]]);
Run Code Online (Sandbox Code Playgroud)

你当然可以拥有2个以上的多边形.