如何在 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 查询完成 - Swift

如何使用geofire从firebase获取位置

如何从 GeoFire 中检索持续更新的位置数据并将其放在 Google 地图上?

Swift iOS Firebase - 如何结合 queryOrdered(byChild) 和 GeoFire observe(.keyEntered) 来同时获取快照和位置结果?

如何让用户在我在 geofire、Firebase 的位置附近