从Parse查询GeoPoint并将其作为MKAnnotation添加到MapKit? [英] Query a GeoPoint from Parse and add it to MapKit as MKAnnotation?
问题描述
我正在尝试查询存储在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.
以下是我的解析后端的照片,可以使您有了更好的主意:
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?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!