2016-12-23 8 views
3

Nach dem Lesen von Algolia Geo-search on steroid Blog-Post habe ich implementiert und OR-Filter mit insidePolygon Funktion und alles hat gut funktioniert. Aber nach ein paar Tagen gab es Null Ergebnisse zurück.Algolia - Mehrere InsidePolygon

Von was ich bestätigen konnte, geschieht dies nach dem Einstellen des 2. Polygons.

Ich habe alle lat/lng Tupel aus den Ergebnissen, die übereinstimmen, die Zeichenfolge von lat/lng für die Polygone Werte überprüft, und alles scheint mir gut.

Wenn ich insidePolygon mit dem ersten Polygon einstelle, sind die zurückgegebenen Ergebnisse korrekt. Aber wenn ich das zweite Polygon setze, gibt Algolia null Ergebnisse zurück.

Hier ist, was ich tue. Erstes Polygon:

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"); 

Dies ergibt 22 Ergebnisse. Alles gut.

zweite Polygon:

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"); 

Jetzt habe ich 0 Ergebnisse. Da dies ein OR-Operator ist, finde ich dieses Verhalten wirklich komisch. Es sollte mindestens die 22 Ergebnisse anzeigen, die ich vom Filtern mit dem ersten Polygon erhalten habe.

Jede Hilfe würde sehr geschätzt werden.

Danke!

Antwort

5

Sofern ich Ihre Frage nicht richtig verstanden habe, überschreibt Ihr zweiter Aufruf an setQueryParameter tatsächlich das erste Polygon, das Sie festgelegt hatten.

Meine Vermutung ist, dass das zweite Polygon keine Ergebnisse enthält, und sobald Sie es einstellen, enden Sie ohne Treffer.

Um eine Vereinigung von mehreren Polygonen zu machen, können Sie diese Syntax verwenden: setQueryParameter("insidePolygon", [[...polygon1's points...], [...polygon2's points...]])

die in Ihrem Fall wäre:

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]]); 

Sie natürlich mehr als zwei Polygone haben.

+0

Vielen Dank Oliver! Die Jungs von Algolia haben mir bereits ein paar Tage nach der Veröffentlichung geholfen, ich habe einfach vergessen, hierher zu kommen und die Antwort zu geben. Aber du hast absolut recht;) – semeano

+0

Ah, perfekt, ich wusste es nicht! Ich bin auch ein "Typ bei Algolia";) Genießen Sie Ihren Sonntag! –