在 Parse 中保存用户地理点

Posted

技术标签:

【中文标题】在 Parse 中保存用户地理点【英文标题】:Save User Geo Point in Parse 【发布时间】:2015-09-20 02:54:11 【问题描述】:

我正在尝试将用户的位置作为 PFgeopoint 保存到名为:User.什么都没有保存,我在解析文档中找不到任何东西来找出我的错误。请帮忙!

  let user = PFObject(className:"User")


        PFGeoPoint.geoPointForCurrentLocationInBackground 
            (geoPoint: PFGeoPoint?, error: NSError?) -> Void in
            if error == nil 
                user.setObject(geoPoint!, forKey: "Location")
             else 
                user.setObject(geoPoint!, forKey: "Location")
            
        

【问题讨论】:

是一个名为“用户”的类还是a PFUser object 或子类?此外,您应该编辑您的问题以显示您如何保存用户对象。 这是一个名为 User 的自定义类,谢谢! 【参考方案1】:

为了保存用户位置进行解析,必须从设备中获取 使用CLLocationManager然后将其保存到 PFGeoPoint

var manager = CLLocationManager()
var loc =  manager.location.coordinate
var actualLocation = PFGeoPoint(latitude:loc.latitude,longitude:loc.longitude)
 let object = PFObject(className:"User")
 object["Location"] = actualLocation
object.saveInBackgroundWithBlock  (_success:Bool, _error:NSError?) -> Void in
            if _error == nil
            
              // yay its saved
            

【讨论】:

很高兴能为您提供帮助 @Lamour 当我应用您的解决方案时,我得到 thread1: exc_bad_instruction(code=exc_1386_invop, subcode=0x0) 当我尝试运行它时。但是在我运行它之前,我没有收到任何错误......知道我做错了什么吗? @MatthewSingleton 你必须发布哪一行或你的代码才能让我告诉你有什么问题 @Lamour 出于某种原因,错误不再出现在该行...它跳到下一段代码,在 self.mapView.delegate = self 之前运行良好 @MatthewSingleton 出了什么问题?【参考方案2】:

您是否尝试过查询?例如:

    PFQuery query = PFQuery(classname:"User")
    query.whereKey("GUID", equalTo: GUID)
    NSArray users = query.findObjects()

    var user = users.firstObject();

    PFGeoPoint.geoPointForCurrentLocationInBackground 
        (geoPoint: PFGeoPoint?, error: NSError?) -> Void in
        if error == nil 
            user.setObject(geoPoint!, forKey: "Location")
         else 
            user.setObject(geoPoint!, forKey: "Location")
        
    

【讨论】:

以上是关于在 Parse 中保存用户地理点的主要内容,如果未能解决你的问题,请参考以下文章

计算大型数据集的地理点之间的距离

检查用户位置是不是在颤动的2个地理点的区域内

流星自动将地理位置保存到用户文档

向用户添加数据,然后使用 Parse Cloud Code 保存它们

每15秒将用户地理位置保存到MySQL中

Android GeoLocation FireStore:一种在用户关闭位置共享选项后阻止谷歌服务获取用户地理点的方法