【问题标题】:Algolia - Multiple insidePolygonAlgolia - 多个 insidePolygon
【发布时间】:2017-01-06 00:16:07
【问题描述】:

在阅读了 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 个结果。

任何帮助将不胜感激。

谢谢!

【问题讨论】:

    标签: javascript algolia


    【解决方案1】:

    除非我没有正确理解您的问题,否则您对 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 的人在我发布后几天就已经帮助了我,我只是忘了来这里给出答案。但你是绝对正确的;)
    • 啊,完美,我不知道!我也是“Algolia 的人”;)祝您周日愉快!
    猜你喜欢
    • 1970-01-01
    • 2017-01-01
    • 2018-09-25
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 2020-02-29
    相关资源
    最近更新 更多