【发布时间】:2021-02-23 20:59:40
【问题描述】:
问题:存储 1000 条 MapKit 注释的最佳方式是什么,这些注释将显示在地图上,并且还应该可以在 tableView 中浏览?用户还应该能够将选定的注释标记为收藏夹,并将它们显示在单独的tableView 中。
背景:我正在学习 iOS 编程(通过 Udemy、Google 和 Stack Overflow)。我目前正在尝试制作一个基于MapKit 的应用程序,该应用程序在地图上显示许多注释。每个注释代表一种特定类型的位置。出于测试目的,我制作了一个虚拟 GeoJSON 文件(位于应用程序中,而不是服务器上),它存储每个位置,如下所示:
{
"type" : "Feature",
"properties" : {
"location" : "Norway",
"title" : "Annotation Title",
"website" : "http://www.stackoverflow.com",
},
"geometry" : {
"type" : "Point",
"coordinates" : [10, 60]
}
},
这很好用;我的虚拟对象被解析并放在地图上就好了。但最终,我将拥有 1000 多个真实注释,而不仅仅是我的少数虚拟注释。
这是我的技能不足的地方:我希望用户能够将特定位置标记为收藏,这当然应该通过应用更新、iOS 更新以及理想情况下在用户的多个设备之间持续存在。
用户还应该能够浏览所有注释,按国家和州排序。
解决这个问题的好方法是什么?我试着把它分解成:
-
找到一种存储注释的好方法——考虑到第 2 点和(特别是)第 3 点,GeoJSON 可能并不理想?我应该查看数据库设置吗?
-
用数据库中的所有注释填充
tableView,第一个tableView显示所有国家,然后点击一行连接到另一个tableView与该国家的所有州,另一个连接到第三个@ 987654334@ 与处于该状态的每个注释。 -
让用户将选定的注释标记为收藏,并仅使用标记为收藏的注释填充新的
tableView。
【问题讨论】:
-
嗯,MapKit 在处理注释时非常非常快。我有一个包含数万个注释的项目,没有问题。所以这个方向可能没有问题。存储所有注释,有一些可能性,最简单的启动和工作方法应该是使用“userDefaults”(developer.apple.com/documentation/foundation/userdefaults)。这不是一种非常优雅的方式,但它会起作用,您可以进一步开发以找出您的应用程序的关键要求是什么。之后,您将制定存储策略。
-
对于 tableViews:在 ViewDidLoad() 中获取要在本地 dataStructure 中显示的数据。您还应该阅读不同的架构模型。这篇文章很好读:medium.com/flawless-app-stories/…
标签: ios swift uitableview mapkit geojson