如何在 Django REST API 中使用 GPS 位置?

Posted

技术标签:

【中文标题】如何在 Django REST API 中使用 GPS 位置?【英文标题】:How to use GPS location in Django REST API? 【发布时间】:2018-07-13 13:01:53 【问题描述】:

我正在使用 Django 为餐厅搜索应用程序制作 REST API。我需要获取距离我所在位置 X 米范围内的餐馆列表。我不确定如何将其存储在我的数据库中(我使用的是 PostgreSQL)以及如何检索此列表。

我在网上搜索了一些选项,发现 PostGIS 作为 Postgres 的扩展,可以在 Django 中使用,但我仍然想听听您的一些建议。

谢谢

【问题讨论】:

【参考方案1】:

是的,您想在您的数据库中使用 PostGIS 扩展,并在您的应用程序中使用 GeoDjango。

设置和配置完成后,请在模型中使用 PointField。请注意,您现在要从 django.contrib.gis.db.models.Model 扩展。

from django.contrib.gis.db import models
from django.contrib.gis.geos import Point

class Restaurant(models.Model):
    point = models.PointField()

Restaurant.objects.create(point=Point(lng, lat))

要查询您的餐厅,请使用您的 lat/lng 创建一个 Point 对象(请注意,GEOS 采用 lng、lat 顺序的 lat/lng 参数)。然后使用 gis D 测量值进行距离查询。这里查询5000米范围内的餐厅:

from django.contrib.gis.geos import Point
from django.contrib.gis.measure import D

my_loc = Point(my_lng, my_lat)
Restaurant.objects.filter(point__distance_lte=(my_loc, D(m=5000))

【讨论】:

如何获取User的当前位置?

以上是关于如何在 Django REST API 中使用 GPS 位置?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复在 Django Rest Framework 中使用 REST API 登录时出现的 CSRF 错误?

如何在 django-rest-framework 中为 API 使用 TokenAuthentication

Django:项目使用来自 REST API 的数据,如何在这个系统中使用外部应用程序?

如何在 Django REST 框架可浏览 API 中发送标头

如何保护 Django Rest Framework 中注册和登录的 API?

如何在 Django Rest Framework 的 REST API 中为数组数据编写序列化程序?