Добрый день
У меня есть карта, на ней разбросано много маркеров. От клиента приходит запрос с координатами прямоугольника (нижняя правая точка и верхняя левая). Клиенту надо вернуть все точки, которые накрыл этот прямоугольник. НО существует один нюанс. Клиент использует гугл карты, они бесконечно листаются по долготе, то есть после 180 получается -180 и так далее.
Когда клиент присылает бокс у которого правая точка имеет долготу -170 а леая +170, то если строить полигон, то получается огромный полигон на весь мир, а не через 180.
Я сделал такой код
if lon_2 > lon_1:
qb_1 = Polygon.from_bbox((180.0, lat_1, lon_2, lat_2))
qb_2 = Polygon.from_bbox((lon_1, lat_1, -180.0, lat_2))
q_box = MultiPolygon(qb_1, qb_2)
else:
q_box = Polygon.from_bbox((lon_1, lat_1, lon_2, lat_2))
markers = Marker.objects.filter(point__contained=q_box)
Однако пользователю по прежнему высылается весь мир.
Подскажите плиз что нибудь? Может как-то можно сделать запрос по двум полигонам, а не по мультиполигону? По полигонами все отлично работает.