是否可以将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 *'
答案 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)