跟踪数据库中的用户位置

时间:2015-12-04 13:45:14

标签: iphone database geolocation location

我正在创建一个应用程序,它将跟踪用户位置并创建与此信息相关的事故单。因此我有以下设置

基本设置

  • iPhone应用程序:跟踪用户位置(纬度,长度)和反向地理编码信息
  • 服务器:用于保存事故单的数据库,包括位置信息

我现在正在努力以“正确的方式”保存用于跟踪用户和事件的位置信息。流程应如下:

预期方法

  • 正在创建的故障单应该持久保存,并提供给出的信息,例如lat,long,address,这样我就会看到发生事故的表格
  • 地理信息应该在反向地理编码方面有效处理,因为我考虑缓存地址和lat,长信息,这可能不允许google TOS

应用程序/服务器工作流程

  • Iphone App User点击按钮并执行发送lat / lng到服务器的POST请求
  • 服务器系统创建与此请求关联的故障单,并将此故障单信息保存在名为“事件”的表中

我现在面临的挑战是如何正确处理位置数据,如地址信息。由于我想使用反向地理编码来获取与纬度和经度信息相关联的街道名称,我可以使用iPhone或GoogleMaps API上的反向地理定位服务。我遇到的第一个问题是:

问题1)

我是否应该在iPhone上反转地理编码并通过POST请求将地址信息发送到服务器并将信息保存在表格中?

问题2)

在将数据保存到数据库之前,我是否应该只发送lat / lng信息并在服务器上进行反向地理编码

我正在努力的下一步是,如何有效地保存数据库中的数据,考虑数据库规范化。 目前在服务器上发生的是:

创建事件

  • 当服务器收到来自应用程序的POST请求时,正在创建事故单并将其保存到表事件中
  • 从应用程序发布到服务器的用户lat / lng将用于将此信息附加到要保存在数据库中的故障单条目

所以当前的表格式是: 事件(id,incident_reference,address_id,纬度,经度)

现在我不知道在哪里保存相应的反向地理编码信息(地址)

问题3)

这些信息是否应与票证信息一起保存?我看到那里的挑战,因为我会创建冗余信息

所以当前的表格式是:

incidents (id, incident_reference, latitude, longitude, street_name)

因此,我可以直接使用从iPhone应用程序收到的反向地理编码信息将其直接保存到事件表中。但这不是一个糟糕的做法吗?我想我会创建多次相同的地址信息,这在数据库规范化方面不是很好吗?它在某种程度上看起来不是一个好主意....

为了找到解决方案,我考虑使用下表设置创建一个单独的地址表:

incidents (id, incident_reference, address_id, latitude, longitude) addresses (address_id, latitude, longitude, street_name)

问题4)

使用这种方法,我想,我可以缓存已经收到的反向地理编码信息,将其保存在数据库中,并在下次查询我的表地址以查找现有地址。我在这里看到的挑战是,可能永远不会有完全相同的纬度/经度,所以我会在表格中使用不同的纬度/经度信息重复地址条目。

1 个答案:

答案 0 :(得分:0)

Q1:不,将其留给服务器,以减少对iPhone的影响(带宽使用,电池使用)

Q2:见Q1

问题3:见评论

第四季:你的问题是什么?对于同一地址的不同事件,lat / lon是否相同?我非常怀疑。