PFGeoPoint的Swift Parse查询不显示多个注释

时间:2017-07-24 18:09:01

标签: swift dictionary parse-platform annotations

尝试在地图中显示保存为PFGeoPoints的多个注释时出现问题。当我运行我的查询时它工作正常,但它只在地图上显示最近保存的注释,而我需要它来显示迄今为止保存的每个注释。

这是我的代码:

    let query = PFQuery(className: "location")

    query.findObjectsInBackground { (objects, error) in


        if let brandsLocation = objects {

            for object in brandsLocation {

                if let brandLocation = object as? PFObject {

                let annotation = MKPointAnnotation()


                let annotationPoint = object["geoPoint"] as! PFGeoPoint

                    self.annotation.coordinate = CLLocationCoordinate2DMake(annotationPoint.latitude, annotationPoint.longitude)

                    self.annotation.title = brandLocation["annotationTitle"] as? String

                    self.annotation.subtitle = brandLocation["annotationSubtitle"] as? String

                    self.map.addAnnotation(self.annotation)




            }

        }

    }
    }

非常感谢任何帮助,我知道它可能是一个小问题,导致我的所有注释都没有被查询。谢谢你的帮助!!!!

2 个答案:

答案 0 :(得分:1)

在设置注释的属性并将其添加到地图时使用self.annotation...,因此let annotation = MKPointAnnotation()属性未使用。您必须已声明一个单独的注释作为此处使用的类范围的一部分,而不是循环中的本地注释。

将来,展示您的整个代码并可能单独指出相关内容,这样就可以更容易地从那些尚未使用代码库的人那里发现这样的问题。

答案 1 :(得分:0)

我认为你在标题和副标题中引用错误。这些值必须是唯一的。

let query = PFQuery(className: "location")
query.findObjectsInBackground { (objects, error) in

    if error != nil {
        print(error ?? "")
    }

    if objects != nil {
        for object in objects {

            let annotation = MKPointAnnotation()
            if let annotationPoint = object["geoPoint"] as? PFGeoPoint {
                annotation.coordinate = CLLocationCoordinate2DMake(annotationPoint.latitude, annotationPoint.longitude)
                annotation.title = object["annotationTitle"] as? String
                annotation.subtitle = object["annotationSubtitle"] as? String
                self.map.addAnnotation(annotation)
            }
        }
    }
}