关于这一点,有一些答案,但涉及到不同的问题,而且都在objective-c中。
我将用户的位置保存在一个解析类“Position”中:

var locationManager = CLLocationManager()

var lat = locationManager.location.coordinate.latitude
var lon = locationManager.location.coordinate.longitude

let myGeoPoint = PFGeoPoint(latitude: lat, longitude:lon)
let myParseId = PFUser.currentUser().objectId //PFUser.currentUser().objectId

println("****** this is my geoPoint: \(myGeoPoint)")

func sendPosition(userOfPosition: User) {

let takePosition = PFObject(className: "Position")

 takePosition.setObject(myParseId, forKey: "who") //who
 takePosition.setObject(myGeoPoint, forKey: "where")
                                        takePosition.saveInBackgroundWithBlock(nil)

                                }


  sendPosition(currentUser()!)

所以这就是我的结果:
然后我想在地图上显示,但是怎么做呢?不知道如何从“where”列检索经纬度以下代码不起作用:
   import UIKit
    import MapKit

    class MapViewController: UIViewController {


    @IBOutlet weak var mapView: MKMapView!

    var locationManager : CLLocationManager!


    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.



        var locationManager = CLLocationManager()

        var lat = locationManager.location.coordinate.latitude
        var lon = locationManager.location.coordinate.longitude

        let location = CLLocationCoordinate2D(latitude: lat, longitude: lon)
        let span = MKCoordinateSpanMake(0.05, 0.05)
        let region = MKCoordinateRegionMake(location, span)
        mapView.setRegion(region, animated: true)

        let anotation = MKPointAnnotation()
        anotation.setCoordinate(location)
        anotation.title = "my title"
        anotation.subtitle = " my subtitle"

        mapView.addAnnotation(anotation)

        println("****** Welcome in MapViewController")



        //MARK: (471) Crossing Positions
        //*******************************************************

        let myGeoPoint = PFGeoPoint(latitude: lat, longitude:lon)
        let myParseId = PFUser.currentUser().objectId //PFUser.currentUser().objectId

        println("****** this is my geoPoint from map view controller: \(myGeoPoint)")


//
//        var inspector = PFQuery(className:"GameScore")
//                inspector.saveInBackgroundWithBlock {
//                    (success: Bool, error: NSError?) -> Void in
//                    if (success) {
//                        // The object has been saved.
//                        var the = inspector.objectId
//                    } else {
//                        // There was a problem, check error.description
//                    }
//                }
//
//
//


        func filterByProximity() {
            PFQuery(className: "Position")
                .whereKey("where", nearGeoPoint: myGeoPoint, withinKilometers: 500.0)     //(474)
            .findObjectsInBackgroundWithBlock ({
                objects, error in
                if let proximityArray = objects as? [PFObject] {
                    println("****** here the proximity matches: \(proximityArray)")
                    for near in proximityArray {
                        println("here they are \(near)")
                        if let position = near["where"] as! PFGeoPoint {
                        let theirLat = position.latituide
                        let theirLon = position.longitude
                    }

                        let theirLat = near["where"].latitude as Double
                        let theirlong = near["where"].longitude as Double
                        let location = CLLocationCoordinate2DMake(theirLat, theirlong)
                        let span = MKCoordinateSpanMake(0.05, 0.05)
                        let region = MKCoordinateRegionMake(location, span)
                        self.mapView.setRegion(region, animated: true)
                        let theirAnotation = MKPointAnnotation()
                        theirAnotation.setCoordinate(location)
                        self.mapView.addAnnotation(anotation)

                    }
                }
            })
        }

        filterByProximity()


//        //update my position
//
//        func exists() {
//        PFQuery(className:"Position")
//            .whereKey("who", containsString: myParseId)
//            .findObjectsInBackgroundWithBlock({
//            thisObject, error in
//                if let result = thisObject as? [PFObject] {
//                    println("here the result: \(result)")
//
//                    let gotTheId = result[0].objectId
//                    println("ecco l'id singolo \(gotTheId)")
//
//                            //******** update function ********
//                            var query = PFQuery(className:"Position")
//                            query.getObjectInBackgroundWithId(gotTheId) {
//                                (usingObject: PFObject?, error: NSError?) -> Void in
//                                if error != nil {
//                                    println(error)
//                                } else if let objectToupdate = usingObject {
//                                    println("else occurred")
//                                    objectToupdate["where"] = myGeoPoint
//                                    println("position should be updated")
//                                    objectToupdate.saveInBackgroundWithBlock(nil)
//                                    println("position should be saved")
//
//                                }
//                            }
//                            //******** end update function ********
//                }
//            })
//        }
//
//        exists()

        //*******************************************************




    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }




}

在第一个答案后更新
试图检查选项,但收到以下消息:
在没有下投替身之后:

最佳答案

“where”是一个PFGeoPoint,您可以在上面调用纬度和经度
试试这样的方法-我还不能百分之百地肯定Swift语法

if(geoPoint)
{
   if(geoPoint!.latitude)
   {
       let latitude = geoPoint!.latitude as double;
   }

}

关于ios - 如何从PFGeopoint检索位置-(Parse.com和Swift)并使用Xcode 6.2在 map 上显示位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30828847/

10-10 09:41
查看更多