2016-08-15 113 views
0

我尝试了很多不同的方式,并且在各种方式中,我似乎都失去了现有资产位置上已有的一些信息。从字典中填充CLLocation对象

我正在创建资产的修改副本,并希望将该资产可用的位置信息复制到其修改后的副本中。但CLLocation中可用的方法没有可用于现有Assets GPS的所有字段。这里是什么,是从现有资产:

 "{GPS}" =    { 
      Altitude = "50.4666666666667"; 
      GPSVersion =     (
       2, 
       3, 
       0, 
       0 
      ); 
      ImgDirection = "265.8132992327366"; 
      ImgDirectionRef = T; 
      Latitude = "58.5314"; 
      LatitudeRef = N; 
      Longitude = "21.5112"; 
      LongitudeRef = W; 
      MapDatum = "WGS-84"; 
      Speed = "2.053334425692282"; 
      SpeedRef = K; 
     }; 

与大多数选项的方法可用CLLocation下是如下:

[loc initWithCoordinate:<#(CLLocationCoordinate2D)#> 
     altitude:<#(CLLocationDistance)#> 
     horizontalAccuracy:<#(CLLocationAccuracy)#> 
     verticalAccuracy:<#(CLLocationAccuracy)#> 
     course:<#(CLLocationDirection)#> 
     speed:<#(CLLocationSpeed)#> 
     timestamp:<#(nonnull NSDate *)#>]; 

我仍然似乎失去“ImgDirectionRef”,“LatitudeRef”,“LongitudeRef” ,'MatDatum','GPSVersion'。

有谁知道我还能做些什么来确保CLLocation被完全复制到修改后的资产。提前致谢。

回答

0

您需要子类CLLocation以存储不属于CLLocation的额外值。例如

#import <CoreLocation/CoreLocation.h> 
@interface CustomLocation : CLLocation 

@property NSInteger ImgDirectionRef; 
//etc 

@end 

然后

CustomLocation *loc; 
[loc initWithCoordinate:<#(CLLocationCoordinate2D)#> 
    altitude:<#(CLLocationDistance)#> 
    horizontalAccuracy:<#(CLLocationAccuracy)#> 
    verticalAccuracy:<#(CLLocationAccuracy)#> 
    course:<#(CLLocationDirection)#> 
    speed:<#(CLLocationSpeed)#> 
    timestamp:<#(nonnull NSDate *)#>]; 

loc.ImgDirectionRef = 123; // your value here 
// set extra values here