Algolia - 多个 insidePolygon
Algolia - Multiple insidePolygon
阅读 Algolia 的 Geo-search on steroid blog post I've implemented and OR filter using insidePolygon 函数后一切正常。
但几天后,它开始 return 零结果。
根据我能够验证的情况,这是在设置第二个多边形后发生的。
我检查了匹配结果中的所有 lat/lng 元组,多边形值的 lat/lng 字符串,对我来说一切都很好。
当我用第一个多边形设置 insidePolygon 时,结果 returned 是正确的。
但是,如果我设置第二个多边形,Algolia return 的结果为零。
这就是我正在做的。第一个多边形:
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");
这 returns 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]]);
你当然可以拥有 2 个以上的多边形。
阅读 Algolia 的 Geo-search on steroid blog post I've implemented and OR filter using insidePolygon 函数后一切正常。 但几天后,它开始 return 零结果。
根据我能够验证的情况,这是在设置第二个多边形后发生的。
我检查了匹配结果中的所有 lat/lng 元组,多边形值的 lat/lng 字符串,对我来说一切都很好。
当我用第一个多边形设置 insidePolygon 时,结果 returned 是正确的。 但是,如果我设置第二个多边形,Algolia return 的结果为零。
这就是我正在做的。第一个多边形:
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");
这 returns 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]]);
你当然可以拥有 2 个以上的多边形。