Ios 如何将PFGeoPoint转换为CLLocation
是否可以将带有Parse的PFGeoPoint转换为CLLocation 原因是我试图从PFGeoPoint获取地名,如下所示:Ios 如何将PFGeoPoint转换为CLLocation,ios,objective-c,parse-platform,cllocationmanager,Ios,Objective C,Parse Platform,Cllocationmanager,是否可以将带有Parse的PFGeoPoint转换为CLLocation 原因是我试图从PFGeoPoint获取地名,如下所示: CLGeocoder *geocoder; CLPlacemark *placemark; PFGeoPoint *point = [object objectForKey:@"location"]; [geocoder reverseGeocodeLocation:point compl
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 *'
您需要使用
initWithLatitude:longitude:
和latitude
从PFGeoPoint
显式创建CLLocation
实例。只有一种方便的方法可以从CLLocation
创建PFGeoPoint
,反之亦然。正如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()
您始终可以获取PFGeoPoint,然后将其添加到CLLocationCoordinate2D,如下所示:
//get all PFObjects
let parseLocation = ParseObject["location"]
let location:CLLocationCoordinate2D = CLLocationCoordinate2D(latitude: parseLocation.latitude, longitude: parseLocation.longitude)
基于Justin Oroz的(见下面的答案):
另外一个好主意是在CLLocation端创建扩展,以便使用接收PFGeoPoint的便利init创建扩展:
extension CLLocation {
convenience init(geoPoint: PFGeoPoint) {
self.init(latitude: geoPoint.latitude, longitude: geoPoint.longitude)
}
}