如何限制使用地理位置返回的结果?

我有一个存储用户位置的模型:

[
{
    "url": "http://192.168.0.22:8000/status/1/",
    "id": 1,
    "owner": 1,
    "test_info": "",
    "created_at": "2015-05-02T07:09:16.535689Z",
    "updated_at": "2015-05-02T07:09:16.535746Z",
    "geolocation": null,
    "jukebox_mode_enabled": false
},
{
    "url": "http://192.168.0.22:8000/status/2/",
    "id": 2,
    "owner": 2,
    "test_info": "",
    "created_at": "2015-05-02T07:09:24.206959Z",
    "updated_at": "2015-05-02T07:09:24.207042Z",
    "geolocation": null,
    "jukebox_mode_enabled": false
},

我试图实现一个系统,允许用户查询并查看附近有谁,但出于安全原因,我想用1KM来限制结果给用户。

达到此目的的最佳方法是什么?

PS - “状态”与django模型中的普通用户模型使用oneToOneField绑定。


您正在寻找的是通过地理定位查询/过滤的功能。 看看GeoDjango。

一旦你可以用一个地理范围运行模型过滤器(),那么只需要用django-rest-framework将它应用到你的APIView。


有两件事,你应该使用Django的GIS(GeoDjango)功能和Django REST框架的GIS插件。

GeoDjango将本地处理您的数据库(可能是PostGIS),以准确地存储和表示地理空间数据。 这意味着您不必担心将位置标准化为正常位置,而且您不必手动处理过滤 - 就像在半径中查找位置一样。

GIS插件提供了一个DistanceToPoint过滤器,它听起来像您正在寻找的。 您可以将米的数量与用作中心的点一起传递,并将删除超出该范围的任何结果。 这将允许您使用Django REST框架的内置视图和序列化器,而无需处理查询集并自行应用过滤。

链接地址: http://www.djcxy.com/p/26041.html

上一篇: How do I limit results returned with Geolocation?

下一篇: How to create a standing up 3D text effect with Css3 transforms