我正在创建一个应用程序,它将跟踪用户位置并创建与此信息相关的事故单。因此我有以下设置
基本设置
我现在正在努力以“正确的方式”保存用于跟踪用户和事件的位置信息。流程应如下:
预期方法
应用程序/服务器工作流程
我现在面临的挑战是如何正确处理位置数据,如地址信息。由于我想使用反向地理编码来获取与纬度和经度信息相关联的街道名称,我可以使用iPhone或GoogleMaps API上的反向地理定位服务。我遇到的第一个问题是:
问题1)
我是否应该在iPhone上反转地理编码并通过POST请求将地址信息发送到服务器并将信息保存在表格中?
问题2)
在将数据保存到数据库之前,我是否应该只发送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)
使用这种方法,我想,我可以缓存已经收到的反向地理编码信息,将其保存在数据库中,并在下次查询我的表地址以查找现有地址。我在这里看到的挑战是,可能永远不会有完全相同的纬度/经度,所以我会在表格中使用不同的纬度/经度信息重复地址条目。
答案 0 :(得分:0)
Q1:不,将其留给服务器,以减少对iPhone的影响(带宽使用,电池使用)
Q2:见Q1
问题3:见评论
第四季:你的问题是什么?对于同一地址的不同事件,lat / lon是否相同?我非常怀疑。