有没有一种简单有效的方法来查询 Firebase 上的地理点?
Is there an easy and efficient way to query geopoints on Firebase?
我目前正在开发一个基于地理定位的Flutter应用,我需要基于可变半径进行查询。
我数据库中的每个文档都有一个名为 "position" 的字段,带有一个 geohas 和一个 geopoint,问题是我知道的唯一库是 geofire,但这并不是很有效,因为如果我查询一定的半径(10 公里),比我需要从 10 公里到 20 公里查询我不能:我可以用固定的 20 公里半径再次查询,这意味着我查询(并支付)前 10 公里是免费的,因为我已经有了它们.
the problem is that the only library I know is geofire,
据我所知暂时只有一个
If I query on a certain radius (10 km)
这肯定是有可能的。
than I need to query from 10km to 20km I can't
你不能查询,但你可以得到10公里到20公里的位置,我想这就是你想要的。因为你已经有了10km以内的位置,当你查询0km到20km的位置时,你得到的每个位置都是新的,也就是说位于10km到20km之间。
which means I query (and pay) first 10km for nothing because I already had them.
不,您无需为 10 公里以内的位置付费,因为这些位置来自缓存。因此,当您执行第二个查询(从 10 公里到 20 公里)时,您只需为该范围内的位置付费。
如果你想直接获取10km到20km的位置而没有0km到10km的位置,问题就来了。在这种情况下,您将获取从 0 公里到 20 公里的所有位置,然后执行另一个查询以获取从 0 公里到 10 公里的所有位置。现在,要获得从 10 公里到 20 公里的所有位置,只需删除从第二个查询中获得的所有位置。所以在这两种情况下,你都需要执行两次查询。
我目前正在开发一个基于地理定位的Flutter应用,我需要基于可变半径进行查询。
我数据库中的每个文档都有一个名为 "position" 的字段,带有一个 geohas 和一个 geopoint,问题是我知道的唯一库是 geofire,但这并不是很有效,因为如果我查询一定的半径(10 公里),比我需要从 10 公里到 20 公里查询我不能:我可以用固定的 20 公里半径再次查询,这意味着我查询(并支付)前 10 公里是免费的,因为我已经有了它们.
the problem is that the only library I know is geofire,
据我所知暂时只有一个
If I query on a certain radius (10 km)
这肯定是有可能的。
than I need to query from 10km to 20km I can't
你不能查询,但你可以得到10公里到20公里的位置,我想这就是你想要的。因为你已经有了10km以内的位置,当你查询0km到20km的位置时,你得到的每个位置都是新的,也就是说位于10km到20km之间。
which means I query (and pay) first 10km for nothing because I already had them.
不,您无需为 10 公里以内的位置付费,因为这些位置来自缓存。因此,当您执行第二个查询(从 10 公里到 20 公里)时,您只需为该范围内的位置付费。
如果你想直接获取10km到20km的位置而没有0km到10km的位置,问题就来了。在这种情况下,您将获取从 0 公里到 20 公里的所有位置,然后执行另一个查询以获取从 0 公里到 10 公里的所有位置。现在,要获得从 10 公里到 20 公里的所有位置,只需删除从第二个查询中获得的所有位置。所以在这两种情况下,你都需要执行两次查询。