Tag: 地理位置

位置跟踪器pt。 2:扩展“每个用户的数据库”模式

想要将您的应用程序扩展到数百万用户,同时保持将私有信息安全可靠地(轻松地!)同步到Cloudant的能力吗? 在本教程中,我们将向您展示如何进行。 在“位置跟踪器”(第1部分)中,我们向您展示了如何创建一个iOS应用程序来跟踪您的位置,与Cloudant同步以及执行地理位置查询以查找附近的兴趣点。 我们向您展示了如何使用每用户数据库设计模式来利用Cloudant强大的同步功能,同时确保用户的位置信息保持私有。 我们还讨论了“每用户数据库”设计模式如何适合中小型应用程序,但是当您希望扩展到数百万个用户时,效果不那么理想。 在本教程中,我们将向您展示如何扩展Location Tracker来做到这一点。 复习 Location Tracker应用程序是在Swift中开发的iOS应用程序,可跟踪用户位置并将这些位置同步到Cloudant。 当用户移动并记录新位置时,该应用会查询服务器以获取用户位置附近的兴趣点。 以下是“位置跟踪器”应用的屏幕截图。 蓝色图钉标记应用程序记录的每个位置。 在用户行进的路径上绘制了一条蓝线。 每次Location Tracker应用程序记录新位置时,都会在Cloudant中执行基于半径的地理查询,以查找附近的兴趣点(在应用程序中称为“地点”)。 半径由绿色圆圈表示。 位置显示为绿色图钉。 在第1部分中,我们确定了Location Tracker应用程序的五个关键要求: 跟踪前景和背景中的位置。 使用地理空间查询来查找指定半径内的兴趣点。 离线运行。 将用户位置信息保密。 提供合并和分析所有位置的功能。 为了满足要求#4和#5,我们实现了每个用户数据库的设计模式。 这是学习如何使用Cloudant Sync同步个人或私有数据的重要第一步,但是当扩展到数百万甚至数万个用户时,此设计会出现问题。 Glynn Bird在这篇文章中指出了使用每个用户数据库模式进行扩展的一些问题: 备份-如何为数百万甚至数千个数据库设计备份和还原计划? 报告-您如何在数百万个数据库中生成报告? 变更控制-如何在数百万个数据库中传播数据更新? 为了帮助提供针对这些问题(以及更多问题)的解决方案,一组IBM员工构建了Cloudant Envoy。 Cloudant Envoy FTW! Cloudant Envoy是一种微服务,可充当您的PouchDB Web应用程序或基于Cloudant Sync的本机应用程序的复制目标。 Envoy允许您的客户端代码采用“每个用户一个数据库”的设计模式,将用户数据的副本存储在移动设备上,并在联机时同步到云中,同时将所有用户的数据无形地存储在一个大空间中。数据库。 这样可以防止在添加用户时发生的数据库激增,并简化备份和服务器端报告。 这就是在GitHub上描述Cloudant Envoy的方式。 让我们分解一下此描述,并解压缩Location Tracker的相关点: Cloudant Envoy是一种微服务,可充当您的PouchDB Web应用程序或基于Cloudant Sync的本机应用程序的复制目标。 在第1部分中,我们展示了Location Tracker iOS应用如何针对Cloudant中特定于用户的数据库进行复制。 […]

适用于iOS 10和Swift 4的Square Region Geofencing

监视圆形区域的替代区域 地理围栏,地理围栏,地理围栏……多么美丽的技术。 😊😊 一点定义: 地理围栏是现实世界地理区域的虚拟边界。 可以动态生成地理围栏-例如在点位置周围的半径中,也可以是一组预定义的边界(例如学校区域或邻里边界)。 是的,如果您还没有弄清楚的话,这个定义来自我的好友Wikipedia,他在解释事物方面做得很好。 (这是我的个人观点!😌) 现在让我们进入主题! iOS 10在地理围栏方面做得很好。 但这有一些限制,例如您可以监视的区域数量(限制为20个),区域的半径(不少于100米),并且只能使用一种形状进行监视:一个完美的圆形区域。 如果要监视40米以内的正方形区域会怎样? 好吧,这就是我遇到了一段时间的问题。 为了解决此问题,我必须制作自己的CocoaPods库“ SquareRegion”来解决此问题。 演示版 多位置监控 单一位置监控 SquareRegion如何 工作? 首先,在您的Podfile中添加SquareRegion。 pod’SquareRegion’ 说明: 导入SquareRegion。 设置委托。 将委托分配给视图控制器(自身)。 设置您的区域(正方形区域)的中心坐标。 声明您的正方形区域属性:regionWithCenter是区域的中心, sideLength是正方形的长度(以公里为单位,因此需要转换为米), 标识符是区域的唯一键。 使用方法addRegionToMonitor(region 🙂将区域添加到监视器。 添加核心位置的CLLocationManagerDelegate(作为扩展)。 开始使用新位置更新正方形区域。 使视图控制器符合RegionProtocol。 使用相关的委托方法进入或离开您的区域时,请做点很酷的事情! 如何在iOS上模拟地理位置 ? 好了,您可以从Appcoda阅读一个很好的相关教程。 SquareRegion是“核心位置”的圆形区域的替代方法。 它可让您在边长至少25米的小区域内观察所需的尽可能多的位置范围。 您也可以在Product Hunt上投票支持该项目! 👍🏾😊 您可以在此处找到豆荚仓库。 在我的社交媒体上添加并关注我! 领英 脸书 天使主义者