如何将位置(引脚)保存到解析服务器?

Posted

技术标签:

【中文标题】如何将位置(引脚)保存到解析服务器?【英文标题】:How can I save locations(pins) to a parse server? 【发布时间】:2016-03-29 10:14:46 【问题描述】:

我有一个应用程序可以在表格视图中显示位置,可以通过地图上的按钮添加。我无法保存这些来解析(是的,我知道它正在退役,但我已经设置了一个工作完全相同的新服务器,所以认为它是解析的)还请注意我已经看过这个主题:https://***.com/questions/30435362/how-can-i-send-coordinates-to-parse-and-save-it-as-parse-pfgeopoint,即使它看起来很简单它仍然让我感到困惑所以这是我的表格视图中的代码

var places = [Dictionary<String,String>()]

var activePlace = -1

这是广告图钉的代码(在地图视图控制器中)

 @IBAction func addSpot(sender: UIBarButtonItem) 


        var newCoordinate2 = self.map.userLocation.location!.coordinate;

        var location = CLLocation(latitude: newCoordinate2.latitude, longitude: newCoordinate2.longitude)

        //title = "new address"

        //try change order start

        let annotation = MKPointAnnotation()

        self.map.addAnnotation(annotation)

        annotation.coordinate = newCoordinate2

        annotation.title = title


        annotation.coordinate = self.map.userLocation.location!.coordinate;

        CLGeocoder().reverseGeocodeLocation(location)  (placemarks, error) -> Void in


            var title = ""

            if (error == nil) 

                if let p = placemarks?[0] 

                    var subThouroughfare:String = ""
                    var thouroughfare:String = ""

                    if p.subThoroughfare != nil 

                        subThouroughfare = p.subThoroughfare!

                    

                    if p.thoroughfare != nil 

                        thouroughfare = p.thoroughfare!

                    

                    title = "\(subThouroughfare) \(thouroughfare)"


                

            

            if title == "" 

                title = "Added \(NSDate())"

            

            places.append(["name":title,"lat":"\(newCoordinate2.latitude)","lon":"\(newCoordinate2.longitude)"])

            let annotation = MKPointAnnotation()

            annotation.coordinate = newCoordinate2

            annotation.title = title

            self.map.addAnnotation(annotation)

        

        self.map.addAnnotation(annotation);





        func mapView(mapView: MKMapView!,
                     viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView!
            if(annotation is MKUserLocation)
                return nil;
            

           // let pinView: Void = mapView.addAnnotation(annotation);
            let pinAnnotationView = MKPinAnnotationView(annotation: annotation,reuseIdentifier:"MyIdentifier");
            return pinAnnotationView;


        



    

感谢您的帮助,因为我是使用解析/外部服务器的新手

编辑:我试过这个:

    PFObject["geoPoint"] = PFGeoPoint(location: location)

    location[location] = activePlace
    location.saveInBackgroundWithBlock  (succes, error) -> Void in
        print("place has been saved")
    

我在三行出现错误 1) 实例成员 'subscript' 不能用于类型 'PFObject' 2) 'CLLocation' 类型没有下标成员 3) CLLocation 类型的值没有成员 'saveInBackgroundWithBlock'

重新编辑:我已经尝试过这个并收到警告说“返回后的代码将永远不会被执行”它也在应用程序上运行但不保存

    let geoPoint = PFObject(className: "location")

    geoPoint["location"] = activePlace
    geoPoint.saveInBackgroundWithBlock  (succes, error) -> Void in
        print("place has been saved")
    

【问题讨论】:

你没有解释你的代码做错了什么 它没有做错任何事情,但它没有上传到解析。我只是不知道如何添加我必须解析的位置@Wain 您是否定义了一个 PFObject 来保存您的位置/每个位置? 不,我没有,因为我不确定在 PFObject 中放入什么可以与我已有的代码一起使用并且与 parse 兼容,这就是我发布我的代码的原因 【参考方案1】:

所以你需要一些东西来包含你的PFGeoPoint,而那个东西必须是PFObject。在解析后端,您可以为此对象创建表,并使用对 geoPoint 的引用和您想要的任何其他内容进行设置。现在您可以使用表的类名为每个新点实例化一个PFObject,设置对geoPoint 的引用(使用pfObject["geoPoint"] = geoPoint),保存它(使用pfObject.saveInBackgroundWithBlock...)就完成了。

【讨论】:

我试过这样的事情(见编辑过的问题)它似乎不起作用,但我确定我没有完全按照你的意思做 PFObject 实例和PFGeoPoint 实例不同。 PFObject 是存储PFGeoPoint 的所有者和容器。您试图使它们成为相同的东西,但那行不通 我再次编辑了这个问题,这次我收到一个警告说'返回后的代码永远不会被执行'并且不保存但我确定它更好? 您的代码看起来更好,但您必须在该代码上方的某处有一个 return 才能得到错误并使其不起作用

以上是关于如何将位置(引脚)保存到解析服务器?的主要内容,如果未能解决你的问题,请参考以下文章

如何将属性字符串保存到解析服务器对象类型字段中

将 Byte[] 解析为文件而不保存它

如何将文件从网站保存到 SD 卡

将位图保存到位置

如何将数据从客户端(android-java 应用程序)发送到解析服务器,对其进行处理,将其保存在 parse-dashboard 中并将结果发送回客户端?

如何从用户位置绘制路线到iphone sdk中的某个引脚?