gpt4 book ai didi

Firebase 查询附近的对象

转载 作者:行者123 更新时间:2023-12-03 00:10:08 24 4
gpt4 key购买 nike

在mysql中,我使用半正矢公式来查询附近的对象。

使用这个公式公式

SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance 
FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;

哪个

  • 3959:地球半径(英里)
  • 37,-122:给定经纬度
  • 25:25 英里内

在 Firebase 中,我可以像在 mysql 中那样存储用户 lat lng 吗?创建一个标记表。 id、lat、lng列然后用公式查询

已更新

我想问一下,在firebase中使用这个公式查询附近的方法是什么。

最佳答案

简短的回答,不是你想要的那样。

Firebase essentially has two ways to query for data: by path and by priority. This is more limited than SQL, and there's a very good reason for that — our API is carefully designed to only allow operations we can guarantee to be fast. Firebase is a real-time and scalable backend, and we want to enable you to build great apps that can serve millions of users without compromising on responsiveness.

参见,what is firebase and deNormalizing data另外,这个SO question是类似的。

对评论的回复:Firebase 不会为您计算 sin( radians(X) )。这是一个“缓慢”的操作。因此,您在保存数据时需要将该信息存储到数据中。我不是 100% 确定,但您可以存储标记,并将经度/纬度存储在单独的父级中。

Root
-> Markers
-> longitude (Use the value as priority) -> MarkerId
-> latitude (Use the value as priority) -> MarkerId

然后您应该能够使用边界来查找最大和最小经度和纬度。使用它按优先级查询经度和纬度路径。如果两者都存在 MarkerId,则使用它。

快速研究后发现这篇文章位于 Latitude Longitude Bounding Coordinates

关于Firebase 查询附近的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16891035/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com