Foursquare API + ARKit

9月初,我们看到了iOS 11的推出,从而为数百万个启用了AR(增强现实)的设备提供了支持。 在发布之后,我们考虑了一些创新的方法,Foursquare的位置智能可以为您提供体验,以吸引用户。 在进行演示之前,我们将更深入地讨论AR和ARKit。

“增强现实是通过将另一幅图像覆盖在周围环境的实时视图上而产生的增强图像或合成图像。 “

ARKit如何工作?

ARKit使用一种称为视觉惯性里程表(VIO)的技术,并具有一些2D平面检测功能。 VIO意味着该软件可以实时跟踪您在太空中的位置。 这是通过您的姿势完成的,该姿势可以通过摄像头系统以及加速度计和陀螺仪(CoreMotion)进行跟踪。 就像汽车中的里程表会跟踪汽车的行驶距离一样,VIO系统也会跟踪iPhone在6D空间中的行驶距离。 6D表示xyz运动的3D(平移),加上俯仰/偏航/横摇的3D(旋转)。

ARKit的核心功能之一是平面检测。 这是必需的,因此您可以在地面上放置内容的地方,否则看起来好像在太空中漂浮得很厉害。 这是根据光学系统检测到的特征计算得出的。

现在,我们对AR和ARKit有了更多的了解,让我们深入研究一下快速演示:

为了让您入门,我们构建了一个由ARKit驱动的应用程序,以演示位置智能的功能。 在下面详述的示例中,您将能够使用Foursquare Places API在全球范围内移动手机以查看位置及其与您的距离。 我们也鼓励您查看我们的Pilgrim SDK,您可以在其中实时了解,与用户交流和互动。

快速开始

要快速上手,您可以在手机上获取该应用,或在下面克隆以下存储库。 在建造过程中,请在开始后添加您的钥匙/秘密。

git clone git@github.com:garethpaul/foursquare-ar-camera-ios.git

克隆存储库并添加密钥后,即可在任何iOS设备上进行扩展。 我们建议使用现实生活中的电话-由于在本地测试AR的复杂性。

在我们开始之前..

我们还要感谢Mapbox和Andrew Hart的团队在此领域的启发和提供进一步工作方面所做的早期工作。

建造ARKit + Foursquare

在较高级别的示例中,我们执行三个主要功能。

  1. 确定位置
  2. 找到一些地方
  3. 将地点添加到AR

第1步-确定位置

我们利用核心位置通过感官信息确定基本位置。 该框架使用所有可用的机载硬件,包括Wi-Fi,GPS,蓝牙,磁力计,气压计和蜂窝硬件来收集数据。

LocationManager类符合CLLocationManagerDelegate并处理从CoreLocation检索位置和方向。

在我们的示例中,我们的主ViewController符合SceneLocationViewDelegate。 委托是一种简单而强大的模式,其中,我们的ViewController与另一个对象一起起作用。 委托对象保留了另一个对象的引用。 委托的主要价值在于,它使我们能够轻松自定义一个中央对象中多个对象的AR行为。

第2步-查找热门地点

加载视图后,我们将使用Foursquare的Places API从SceneLocation的LocationManager确定位置。 为简单起见,我们已将其添加到主ViewController中,但建议为静态服务(模型和控制器)创建一个单独的类。

在函数getFoursquareLocations中,我们利用端点“ venues / search”(即到位置)来返回位置的响应,然后我们可以解析该响应。

步骤3 —将地点添加到AR

一旦我们收到来自“ getFoursquareLocations”的位置响应,就可以添加LocationNode(SCNNode),它是给定场所或对象的节点。 此外,我们将位置添加到指南针,以帮助增强AR环境中的空间意识。

完成这些步骤后,我们有一种有趣的方式来查找场所并根据位置和邻近度自定义体验。

我们期待着将来看到更多基于位置的AR应用程序,并在此为您提供帮助。 考虑到所有这些步骤的复杂性,我们鼓励您检查此项目的Github存储库。 最后,请随时通过@FoursquareAPI或通过Stackoverflow与我们联系,以获取问题,技巧和窍门!

快乐大厦!