【发布时间】:2013-09-17 15:48:01
【问题描述】:
我正在开发一款 iOS 游戏,玩家的村庄会显示在大型王国地图上。每个村庄在该地图上都有一个 x,y 位置,每个村庄都作为一个对象存储在服务器 (Parse.com) 上的数据库中。
我想做的就是把当前玩家村庄周围的所有村庄都拉下来。通常这很简单,因为您只使用最短距离算法,但要使用它,我需要下载数据库中的所有村庄,然后对每个村庄运行算法,然后根据与玩家的距离对它们进行排序,这并不是一种快速/有效的方式。那么有没有人知道一种更精致/更有效的方式来完成上述操作?能够在对数据库的查询中实际上拉下当前玩家周围的村庄,可以说用一块石头杀死 2 只鸟,但我看不到任何方法,这将是很棒的。我怀疑答案可能在于在数据库中存储有关村庄位置的更多信息,因此查询可以拉下最近的那些,而无需运行算法来实现它。
有什么想法吗?
我会留下这个问题,因为我仍然对如何用基本数学来做这件事感兴趣,曼哈顿距离方法应该没问题,但对于使用 Parse.com 的任何人来说,也许可以使用 geoPoints 吗?这是一个疯狂的想法,但我会尝试一下。
【问题讨论】:
-
肯定 x 和 y 值在数据库中,因此您可以查询它们(并在查询中使用 > 和
-
你可以做一个查询,看看一个数字是大于还是小于另一个数字,也许可以对 x 和 y int 进行一次查询,但这只是给你一个绝对值,这不是点之间的距离。
标签: ios objective-c database-design position parse-platform