我正在构建一个应用程序(在XCode中),在一般意义上,它向用户显示信息.信息作为单个对象存储在数据库中(恰好是由heroku托管的Parse服务器).用户可以选择"查看"在距当前位置的设定距离内创建的信息.(当保存到数据库时,信息与其lat和long一起保存,具体取决于用户启动保存时的位置).我知道我可以通过将他们的纬度和长度与观察用户的当前lat和long进行比较来过滤这些信息,只显示那些足够接近的信息.粗略/一般:
var currentUserLat = latitude //latitude of user's current location
var infoSet = [Objects] //set of all pulled info from DB
for info in infoSet{
if info.lat-currentUserLat < 3{//arbitrary value
//display the info
}else{
//don't display
}
}
Run Code Online (Sandbox Code Playgroud)
这个设置得足够好,而且运行正常.但它工作正常的原因是因为当前数据库中的条目数量很少(应用程序正处于开发阶段).在实际使用中(即许多用户),DB可能充满了信息对象(比如说,千元).在我看来,单独拉动和比较信息的纬度并将其与当前用户的每个数据库条目的纬度进行比较将花费太长时间.我知道必须有一种方法可以及时地做到这一点(想想更多...他们只显示附近的人的档案,尽管有数百万的档案,他们也不需要那么长的时间)但我不知道什么是最有效的.我想在数据库中为不同的地理区域创建单独的部分,然后根据用户当前位置的位置搜索数据库的那些特定部分,但这似乎并不复杂,但仍会导致大量信息被拉出.做这个的最好方式是什么?
| 归档时间: |
|
| 查看次数: |
267 次 |
| 最近记录: |