javascript - 自动从用户的浏览器获取用户的位置,而不是在 django 视图中硬编码来过滤最近的商店
问题描述
我正在构建一个简单的附近商店应用程序,该应用程序使用 django 和 GeoDjango 列出离用户位置最近的商店。要列出商店,我想从他们的浏览器中获取用户的位置,然后为用户过滤最近的商店,而不是对其进行硬编码。
视图.py
from django.views import generic
from django.contrib.gis.geos import Point
from django.contrib.gis.db.models.functions import Distance
from .models import Shop
longitude = -80.191_788
latitude = 25.761_681
user_location = Point(longitude, latitude, srid=4326)
class Home(generic.ListView):
model = Shop
context_object_name = "shops"
queryset = Shop.objects.annotate(
distance=Distance("location", user_location)
).order_by("distance")[0:6]
template_name = "Home.html"
模型.py
class Shop(models.Model):
name = models.CharField(max_length=100)
location = models.PointField()
address = models.CharField(max_length=100)
city = models.CharField(max_length=50)
解决方案
您可以使用 API 服务(如 Google Places API)为您提供附近对象的数据以及使用 API 中的地理定位调用的当前位置。 https://developers.google.com/maps/documentation/places/web-service/overview
推荐阅读
- ruby-on-rails - 设计登录总是返回“无效的电子邮件或密码”,即使它们是正确的
- javascript - 即使关闭并重新打开浏览器,如何使用 Java HTTPSession 在我的站点上保持会话打开?(不是 PHP)
- php - 未捕获的错误:调用未定义的函数 sql_regcase()
- arrays - 无法访问 JSON 对象内的数组/属性
- powershell - Powershell Core - 如何使 linux 文件类型可执行
- python - handson-ml-master 笔记本的问题
- android - 使用 inputType 作为 textPassword 时如何更改 TextInputEditText 提示字体
- amazon - lightail 应用程序未出现在 aws 控制台上
- javascript - 如何在 forEach 循环中每秒运行一次 setTimeout?
- c# - 使用 MRTK 时如何在 Unity 中倾斜天空盒