How to filter a django model with latitude and longitude coordinates that fall within a certain radius

后端 未结 3 651
轮回少年
轮回少年 2021-02-06 01:39

I have the following model.

class Location(models.Model):
    name = models.CharField(max_length = 128, blank = True)
    address =models.CharField(max_length =          


        
3条回答
  •  夕颜
    夕颜 (楼主)
    2021-02-06 01:59

    But you can always make proposed by Brian approach better by filtering the results from previous step (which hoepfully should be smaller subset) and for each you check either they are within the radius.

    Your user is in black point. Square approximation given by Brian return green but also orange points. The divernce in distance can be significant in worst case user have to go sqrt(2) times further than expected (extra 40% of distance). So for all orange and green points it is worth to check if their distance from black point (e.g euclidian one if this are really short distances e.g navigation in city) is not greater than assumed radius.

    enter image description here

    UPDATE:

    If you would like to use Haversine distance or (better) mentioned GeoDjango hava a look on this snippet comparing two django views dealing with nearby search:

    https://gist.github.com/andilabs/4232b463e5ad2f19c155

提交回复
热议问题