如何在 Swift 中使用 Geofire 从一个模拟器存储位置,然后在另一个模拟器中显示该位置。
Posted
技术标签:
【中文标题】如何在 Swift 中使用 Geofire 从一个模拟器存储位置,然后在另一个模拟器中显示该位置。【英文标题】:How to use Geofire with Swift to store location from one simulator and then show the location in another simulator. 【发布时间】:2018-04-18 03:58:50 【问题描述】:我正在使用 Swift 构建 ios 来共享位置。有谁知道如何使用 Geofire 和 Swift 从一个模拟器存储位置,然后在另一个模拟器中显示存储的位置?
非常感谢。
【问题讨论】:
请查看***.com/questions/25296691/… 感谢您的回答。在尝试实现它之后,我发现 Geofire 有点问题,并且似乎与 Firebase 不兼容。 Xcode 即使在导入后也找不到 Geofile。不确定 Geofire 是否是存储坐标的好解决方案。 geofire 不错,如果你使用 cocopods,请清理工作区并多次构建。如果你告诉我什么不起作用,我可以帮助你。 非常感谢!该项目只是找不到模块。正如你所说,需要再次构建多次。我正在尝试使用 Firebase 来存储和检索地理位置信息。你有任何使用 Geofire 存储和检索位置信息的示例或示例吗?谢谢。 请手动安装 Geofire,cocopods 的方式不适合我。将您的电子邮件地址发送给我,我将发送步骤。 【参考方案1】:首先尝试如下使用cocopods,
pod 'Firebase', '~>4.0'
pod 'Firebase/Auth'
pod 'Firebase/Database'
pod 'Firebase/Storage'
pod 'GeoFire', :git => 'https://github.com/firebase/geofire-objc.git'
使用以下代码从 Geofire 设置和获取位置。
struct FndDatabase
static let LOCATION = Database.database().reference().child("userlocation")
static let GEO_REF = GeoFire(firebaseRef: LOCATION)
func setUserLocation(location: CLLocation)
let user = Auth.auth().currentUser?.uid //userid for the logged in user
if let uid = user
FndDatabase.GEO_REF?.setLocation(location, forKey: uid)
func getLocation() -> CLLocation?
var loc: CLLocation?
if let uid = Auth.auth().currentUser?.uid
FndDatabase.GEO_REF?.getLocationForKey(uid, withCallback: (location, err) in
if err != nil
print( "Error getting Userlocation from Geofire \(err.debugDescription)")
else
print( "UserLocation is available \(location.debugDescription)")
loc = location
)
return loc
如果您看到此错误 'FirebaseDatabase/FirebaseDatabase.h' 文件未找到。
然后执行此操作,从 pod 中选择 FirebaseDatabase.framework 并将其链接到 Geofire,如图所示
示例代码上传到:https://github.com/ledwinson/firebasegeo
【讨论】:
以上是关于如何在 Swift 中使用 Geofire 从一个模拟器存储位置,然后在另一个模拟器中显示该位置。的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 中为以下观察删除 GeoFire 句柄?
如何从 GeoFire 中检索持续更新的位置数据并将其放在 Google 地图上?
Swift iOS Firebase - 如何结合 queryOrdered(byChild) 和 GeoFire observe(.keyEntered) 来同时获取快照和位置结果?