问题描述
我正在尝试查询存储在 Parse 后端的 PFGeoPoints 数组.我在 Parse 中有一个名为Post"的 PFObject,并为其分配了数据,例如位置"、标题"、消息"等.
I am trying to query an array of PFGeoPoints stored on the Parse backend. I have a PFObject in Parse called "Post", with data assigned to it such as "location", "title", "message", etc.
从我的应用程序发布后,所有内容都会发送到 Parse,并正确存储在后端.我在从 Parse 检索Post"PFObject 的属性并将它们存储到地图上的 MKAnnotation 中时遇到问题.
everything is being sent to Parse upon posting from my app and is properly stored in the backend. I am having issues retrieving properties of the "Post" PFObject from Parse and storing them into an MKAnnotation on the map.
这是我的 MapViewViewController:
Here is my MapViewViewController:
import UIKit
import Parse
import CoreLocation
import MapKit
class MapViewViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate {
@IBOutlet var mapView: MKMapView!
var MapViewLocationManager:CLLocationManager! = CLLocationManager()
var currentLoc: PFGeoPoint! = PFGeoPoint()
var postTitle: String!
var postBody: String!
override func viewDidLoad() {
super.viewDidLoad()
mapView.showsUserLocation = true
mapView.delegate = self
MapViewLocationManager.delegate = self
MapViewLocationManager.startUpdatingLocation()
mapView.setUserTrackingMode(MKUserTrackingMode.Follow, animated: true)
}
override func viewDidAppear(animated: Bool) {
var annotationQuery = PFQuery(className: "Post")
currentLoc = PFGeoPoint(location: MapViewLocationManager.location)
annotationQuery.whereKey("Location", nearGeoPoint: currentLoc, withinMiles: 10)
annotationQuery.findObjectsInBackgroundWithBlock {
(points, error) -> Void in
if error == nil {
// The find succeeded.
println("Successful query for annotations")
// Do something with the found objects
//THIS IS WHERE I GET LOST WITH THE PARSE QUERY/ADDING ANNOTATION TO MAP
//THE FOLLOWING CODE PRINTS THE CORRECT POSTCOUNT STORED IN PARSE
println("total posts: (points?.count)")
} else {
// Log details of the failure
println("Error: (error)")
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func logoutButton(sender: UIBarButtonItem) {
PFUser.logOut()
dismissViewControllerAnimated(true, completion: nil)
}
@IBAction func newPostButton(sender: AnyObject) {
performSegueWithIdentifier("mainToNewPost", sender: self)
}
我想查询和检索包含用户输入的所有信息(PFGeoPoint、标题、正文)的帖子,并将其转换为地图上的 mkannotation.
I would like to query and retrieve the Post with all of its info entered by the user (PFGeoPoint, title, body) and turn it into an mkannotation on the map.
这是我的 Parse 后端的照片,可以让您更好地了解:
Here is a photo of my Parse backend to give you a better idea:
推荐答案
根据您提供的屏幕截图,我假设您正在查询 Post
对象,它是一个 PFObject
.因此,您可以从返回的 posts
数组中访问每个 post
对象.然后,您可以使用每个 post
对象的 Location
属性,并向您的 mapView 添加注释.
From the screenshot you provided, I assume you are querying the Post
object which is a PFObject
. So you can access each post
object in from the returned posts
array. Then you can use the Location
property from each post
object, and add annotation to your mapView.
annotationQuery.findObjectsInBackgroundWithBlock {
(posts, error) -> Void in
if error == nil {
// The find succeeded.
println("Successful query for annotations")
let myPosts = posts as [PFObject]
for post in myPosts {
let point = post["Location"] as PFGeoPoint
let annotation = MKPointAnnotation()
annotation.coordinate = CLLocationCoordinate2DMake(point.latitude, point.longitude)
self.mapView.addAnnotation(annotation)
}
} else {
// Log details of the failure
println("Error: (error)")
}
}
这篇关于从 Parse 查询 GeoPoint 并将其作为 MKAnnotation 添加到 MapKit?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!