From e7de51373d99a8b3d9a31f13545488fb84c0e287 Mon Sep 17 00:00:00 2001 From: dormantman Date: Tue, 3 Dec 2019 14:39:25 +0300 Subject: [PATCH] Correction of finding the visual center of points --- apps/search_indexes/filters.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/apps/search_indexes/filters.py b/apps/search_indexes/filters.py index 7a3993c0..4537124d 100644 --- a/apps/search_indexes/filters.py +++ b/apps/search_indexes/filters.py @@ -11,7 +11,7 @@ class CustomGeoSpatialFilteringFilterBackend(GeoSpatialFilteringFilterBackend): @staticmethod def calculate_center(first, second): - if second[1] < 0 <= first[1]: + if second[1] < 0 < first[1]: reverse_first, reverse_second = 180 - abs(first[1]), 180 - abs(second[1]) diff = (reverse_first + reverse_second) / 2 @@ -21,6 +21,16 @@ class CustomGeoSpatialFilteringFilterBackend(GeoSpatialFilteringFilterBackend): else: result_part = 180 - (180 - first[1] - diff) + elif second[1] < 0 > first[1]: + diff = abs(abs(second[1]) - abs(first[1])) + + if diff > 90: + reverse_first, reverse_second = 180 - abs(first[1]), 180 - abs(second[1]) + result_part = (reverse_first + reverse_second) / 2 + + else: + result_part = (first[1] + second[1]) / 2 + else: result_part = (first[1] + second[1]) / 2