Эта проблема может быть решена в чистом SQL, если вы не возражаете против очень хорошей точности.
Вы можете найти точки вокруг позиции GPS с помощью этого конкретного запроса SQL:
# find point around :
latitude = 46.2037010192871
longitude = 5.20353984832764
query= "SELECT ID, NOM, LAT, LON, 3956 * 2 * ASIN(SQRT(POWER(SIN((%s - LAT) * 0.0174532925 / 2), 2) + COS(%s * 0.0174532925) * COS(LAT * 0.0174532925) * POWER(SIN((%s - LON) * 0.0174532925 / 2), 2) )) as distance from POI having distance < 50 ORDER BY distance ASC " % ( latitude, latitude, longitude)
Это даст вам все записи с записями GPS в 50-километровой зоне.
Вы можете легко подключить это в django с помощью:
from django.db import connection
cursor = connection.cursor()
cursor.execute( query )
rows = cursor.fetchall()
или необработанные запросы django