如何将PFGeoPoint转换为CLLocation

时间:2014-12-23 19:59:16

标签: ios objective-c parse-platform cllocationmanager

是否可以将PFGeoPoint与Parse转换为CLLocation?

原因是我试图从PFGeoPoint获取地点名称,如下所示:

   CLGeocoder *geocoder;
    CLPlacemark *placemark;
     PFGeoPoint *point = [object objectForKey:@"location"];
                            [geocoder reverseGeocodeLocation:point completionHandler:^(NSArray *placemarks, NSError *error) {
                                NSLog(@"Found placemarks: %@, error: %@", placemarks, error);
                                if (error == nil && [placemarks count] > 0)
                                {
                                    placemark = [placemarks lastObject];
                                    NSLog(@"%@", placemarks);

                                }
                            }];

我明白的错误是:

Incompatiable pointer types sending 'PFGeoPoint *' to parameter of type 'CLLocation *'

4 个答案:

答案 0 :(得分:6)

正如Wain所说,没有方便的方法可以从PFGeoPoint转换为CLLocation,但您可以自行制作并使用以下内容扩展PFGeoPoint

import Parse

extension PFGeoPoint {

    func location() -> CLLocation {
        return CLLocation(latitude: self.latitude, longitude: self.longitude)
    }
}

现在您可以通过执行

轻松返回CLLocation对象
let aLocation: CLLocation = yourGeoPointObject.location()

答案 1 :(得分:5)

您需要使用来自CLLocation的{​​{1}}和initWithLatitude:longitude:的{​​{1}}显式创建latitude实例。只有一种方便的方法可以从longitude创建PFGeoPoint,而不是相反。

答案 2 :(得分:2)

基于Justin Oroz的answer(见下面的答案): 另外一个好主意可能是在CLLocation端创建扩展,以便可以使用接收PFGeoPoint的便利init创建它:

CSR_EST@xxx.com

答案 3 :(得分:0)

您可以随时获取PFGeoPoint,然后将其添加到CLLocationCoordinate2D,如下所示:

//get all PFObjects

let parseLocation = ParseObject["location"]

let location:CLLocationCoordinate2D = CLLocationCoordinate2D(latitude: parseLocation.latitude, longitude: parseLocation.longitude)