0

在应用程序中使用位置名称(标题 + 纬度和经度)保存这些位置会占用大量空间。如何减小应用程序的大小?任何建议都会让我感激不尽。

而且这可能会降低应用程序的性能,考虑到这一点有什么建议吗?

EDIT1:我突然想到,如果我将所有内容保存在在线服务器上并像谷歌地图那样查询“注释图块”,那可能是解决方案。所以我现在的问题是:有人知道查询“注释块”的好算法吗?这可能非常棘手,因为地图包含多个缩放级别等。对于初学者,我可能会创建几个四叉树(每个缩放级别一个),其中存储我已经查询过的图块。

大家觉得这种方法可能好吗?或者在3G上运行会不会太慢?

提前致谢。

4

2 回答 2

1

由于您没有对解决方案设置任何限制,这就是我要做的;

首先,将注释存储在一个真实的数据库中,30 万条记录对于一个 XML 文件来说有点多,您必须在某个时候开始查询它们,而 XML 不适合那样做。

其次,我会将其存储在设备或服务器上。您的选择,我不知道 300.000 个注释有多大。我会按设定半径的每个区域查询服务器或数据库。这不应该太难做,它应该很好地限制查询量(以及服务器通信)。您可以直接将其与您从MKMapView或您的CLLocationManager实例中获得的回调结合起来。

如果您仍然担心通信过多,请构建缓存机制。将查询结果临时存储在磁盘上一段时间(或设置的空间量,或使用频率,无论您的数据的目的是什么)。构建查询机制,使其首先尝试从磁盘解析结果,然后再访问您的数据库或服务器(好吧,如果您有本地数据库,则不需要真正的缓存机制)。

如果您无法做任何这些事情(拥有服务器或数据库),至少拆分 XML 文件并让您自己轻松管理和查询数据。进行延迟加载,但确保您的数据结构设置为延迟加载(XML 肯定不是)。

PS:查询的时候不用担心缩放太多;只需查询当前位置+偏移半径。您的偏移半径将由缩放量定义,它只是发送到您的服务器/数据库的另一个参数。

于 2012-06-05T23:51:40.477 回答
0

您可能应该从支持的服务器懒惰地加载这些位置(仅检索需要的内容),而不是将应用程序本身用作存储引擎。

于 2012-06-05T23:04:36.763 回答