簡體   English   中英

如何將PFGeoPoint轉換為CLLocation

[英]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:使用PFGeoPointlatitudelongitude顯式創建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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM