From aa8304acaf4a9ebf2d5d3a9b3d65b959c344ef9c Mon Sep 17 00:00:00 2001 From: Kuroshini Date: Thu, 5 Dec 2019 14:19:56 +0300 Subject: [PATCH] Revert "try another calc strategy" This reverts commit fe101f3 --- apps/search_indexes/filters.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/apps/search_indexes/filters.py b/apps/search_indexes/filters.py index 857d44d2..3d55bdb4 100644 --- a/apps/search_indexes/filters.py +++ b/apps/search_indexes/filters.py @@ -13,13 +13,25 @@ class CustomGeoSpatialFilteringFilterBackend(GeoSpatialFilteringFilterBackend): @staticmethod def calculate_center(first, second): - if second[1] < first[1]: - res_longtitude = first[1] + (first[1] - second[1]) / 2 + if second[1] < 0 < first[1]: + reverse_first, reverse_second = 180 - abs(first[1]), 180 - abs(second[1]) + diff = (reverse_first + reverse_second) / 2 + + if reverse_first < reverse_second: + result_part = -180 + (180 + second[1] - diff) + + else: + result_part = 180 - (180 - first[1] - diff) + + elif second[1] < 0 > first[1] or second[1] > 0 < first[1]: + reverse_first, reverse_second = 180 - abs(first[1]), 180 - abs(second[1]) + result_part = ((reverse_first + reverse_second) / 2) * (-1 + (second[1] < 0) * 2) + else: - res_longtitude = first[1] + (second[1] - first[1]) / 2 + result_part = (first[1] + second[1]) / 2 # return (first[0] + second[0]) / 2, result_part - return (first[0] + second[0]) / 2, res_longtitude + return (first[0] + second[0]) / 2, (first[1] + second[1]) / 2 def filter_queryset(self, request, queryset, view): ret = super().filter_queryset(request, queryset, view)