[英]How to convert PFGeoPoint to CLLocation
是否可以將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 *'
正如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()
您需要使用initWithLatitude:longitude:
使用PFGeoPoint
的latitude
和longitude
顯式創建CLLocation
實例。 從CLLocation
創建PFGeoPoint
只有一種方便的方法,而不是相反。
基於Justin Oroz的回答 (參見下面的答案):另外一個好主意可能是在CLLocation端創建擴展,以便可以使用接收PFGeoPoint的便利init創建它:
extension CLLocation {
convenience init(geoPoint: PFGeoPoint) {
self.init(latitude: geoPoint.latitude, longitude: geoPoint.longitude)
}
}
您可以隨時獲取PFGeoPoint,然后將其添加到CLLocationCoordinate2D,如下所示:
//get all PFObjects
let parseLocation = ParseObject["location"]
let location:CLLocationCoordinate2D = CLLocationCoordinate2D(latitude: parseLocation.latitude, longitude: parseLocation.longitude)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.