ARCoreLocation
ARCoreLocation是一个轻量且可配置的iOS框架,能够在实际世界的坐标中显示AR内容。
特性
• 简单创建AR场景,将AR对象放置在真实世界中
• 在任何地理位置放置AR对象,无需担心ARKit的实现细节
• 接收AR内容的点击事件
• 当AR内容在屏幕上重叠时接收事件
安装
CocoaPods
在Podfile中输入以下内容:
pod 'ARCoreLocation', '~> 0.1.10'
然后运行pod install
。记住在任何您想使用ARCoreLocation的地方导入import ARCoreLocation
!
使用说明
设置
创建ARLandmarker并添加其视图
let landmarker = ARLandmarker(view: ARSKView(), scene: InteractiveScene(), locationManager: CLLocationManager())
landmarker.view.frame = self.view.bounds
landmarker.scene.size = self.view.bounds.size
self.view.addSubview(landmarker.view)
将地标添加到场景中
let landmarkLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 75, height: 20))
landmarkLabel.text = "Statue of Liberty"
let location = CLLocation(coordinate: CLLocationCoordinate2D(latitude: 40.689234, longitude: -74.044524), altitude: 30, horizontalAccuracy: 5, verticalAccuracy: 5, timestamp: Date())
landmarker.addLandmark(view: landmarkLabel, at: location, completion: nil)
用户交互
获取用户交互事件
landmarker.delegate = self
...
extension ViewController: ARLandmarkerDelegate {
func landmarkDisplayer(_ landmarkDisplayer: ARLandmarker, didTap landmark: ARLandmark) {
...
}
func landmarkDisplayer(_ landmarkDisplayer: ARLandmarker, didFailWithError error: Error) -> Void {
...
}
}
重叠的地标
对不同重叠地标采用不同的策略
landmarker.overlappingLandmarksStrategy = .showAll
landmarker.overlappingLandmarksStrategy = .showNearest
landmarker.overlappingLandmarksStrategy = .showFarthest
landmarker.overlappingLandmarksStrategy = .custom(callback: { (overlappingLandmarkGroups, notOverlappingLandmarks) in
// Check overlapping groups and react accordingly
})
请求在给定间隔内检查重叠地标
// Check for overlaps every second
landmarker.beginEvaluatingOverlappingLandmarks(atInterval: 1)
...
landmarker.stopEvaluatingOverlappingLandmarks()
或立即检查重叠地标
// ... Or check immediately
landmarker.evaluateOverlappingLandmarks()