【问题标题】:iOS Map Kit Locations read from database从数据库读取的 iOS 地图工具包位置
【发布时间】:2013-04-29 15:50:00
【问题描述】:

我的任务是为客户创建一个 iPhone 应用程序。

我有一些编码经验,但只使用 C#,所以在这里并没有真正的帮助,但除此之外,我是 iPhone 编码的完全新手。

我想要完成的是在地图上获取某种形式的商店定位器。

我已成功添加地图,通过放大用户获取用户位置。我添加了 2 个注释(我认为这是在地图上显示位置的最佳方式)。

我有 2 个查询需要帮助,在某种形式的数据库中列出商店的最佳方法是什么。 XML、PList、.sql 等...(这也需要从网络上读取,因为它需要很容易地编辑,因为会添加很多新商店)。是否可以遍历数据库并将商店动态添加到用户所在位置的地图上?

我没有要求任何人为我编写任何代码,我只是寻求一些帮助,因为我已经用谷歌搜索了这个地狱并且似乎找不到任何有帮助的东西。

任何帮助将不胜感激,

谢谢

【问题讨论】:

标签: ios loops annotations mapkit


【解决方案1】:

就保存这些位置的潜在格式而言,您的选择包括:

  • XML/JSON 是与远程服务器交换数据的好格式,但对于本地数据库不太理想(尽管理论上它们可以用于此目的)。 JSON 稍微容易处理(使用NSJSONSerialization),但XML 也可以相对容易地解析(例如,使用NSXMLParser)。如果您正在做网络操作,我也衷心推荐您查看AFNetworking,它比标准的NSURLConnection 提供了一些不错的优势。当然,这假定您已经在服务器上编写了一个 Web 服务来提供必要的 JSON 或 XML 提要。

  • 如果您想在 iOS 设备上保存简短的本地位置列表,Plist 是一种很好的简单格式。将数据保存到 plist 就像为 NSDictionaryNSArray 调用 writeToFile 方法一样简单,并通过 [NSDictionary dictionaryWithContentsOfFile:filename][NSArray arrayWithContentsOfFile:filename] 完成读取数据。

  • Core Data 是一种很好的 iOS 专用格式,适用于大型数据库。它可能是处理持久对象的首选 iOS 机制,但比 plist 复杂一个数量级。

  • SQLite 也是一种很好的数据库格式,如果您正在考虑一种适合更大数据库的结构,但也适合最终推出到多个平台(例如 Android 和 iOS)。如果您决定走 SQLite 路线,请考虑使用 Objective-C 包装器(例如 FMDB),这将大大简化您的生活。

在上述所有讨论中隐含的是,是的,您当然可以编写代码来迭代您的数据库和/或模型数据结构,提取必要的位置信息,并为您的地图动态添加注释。 Location Awareness Programming Guide 应该有助于向您介绍一些 MapKit 相关功能。

【讨论】:

  • 您好,谢谢您的回复。我一直在考虑使用 SQLite 数据库,因为我以前使用过 SQL。是否可以从远程位置读取数据库?还是数据库必须在设备本地?
  • @LewisHalliday - 唉,SQLite 接口用于本地数据库。通常,您有一个与 iOS 应用程序交互的远程 Web 服务,然后有一个本地数据库用于操作该应用程序。您可能能够找到为您将所有这些包装在一起的第三方库,但是(a)它们没有被广泛采用; (b) 由于网络延迟,我会非常警惕这种架构(您希望应用程序具有响应能力,从本地数据库中检索数据并异步执行 Web 服务请求)。
【解决方案2】:

“是否可以循环访问数据库并将商店动态添加到用户所在位置的地图上?”

是的。正如您已经创建了前两个注释一样,您现在需要在循环中创建更多注释。您可能需要的唯一附加信息是,一旦您向地图添加了注释,它将一直保留在那里,直到您将其删除。所以你不需要维护你自己的注释列表,除非你想用它做其他事情。只是开火然后忘记。因此,现在您的问题归结为如何在 Objective-C 中循环访问您选择的数据源中的数据,而不是特定于 MapKit。

【讨论】:

    【解决方案3】:

    我知道这是旧的,但如果其他人像我一样遇到这种情况,您可以使用 tanmay bakshi 的 tmysqlkit 直接读取和写入服务器上的 mysql 数据库。

    最好, 山姆

    【讨论】:

    • 谢谢山姆!你能添加一些示例代码或链接吗?
    猜你喜欢
    • 1970-01-01
    • 2017-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    相关资源
    最近更新 更多