2014-03-12 117 views
0

我试图获取纬度和经度double值,我已经存储在parse.com数组。我希望能够将它们转换回CLLocationCoordinates,然后我可以使用它们在自定义表格视图中创建MKPloylines。 但是我不太确定如何存储CLLocationCoordinates数组。 这里是我的代码:创建一个CLLocationCoordinates数组

 _latitudeArray = [object objectForKey:@"latitude"]; 
     [_parseLatitudeArray addObject:_latitudeArray]; 

     _longitudeArray = [object objectForKey:@"longitude"]; 
     [_parseLongitudeArray addObject:_longitudeArray]; 

     for (int i=0; i < [_parseLatitudeArray count]; i++) { 

     _latitude = [self.parseLatitudeArray objectAtIndex:i]; 
     _longitude = [self.parseLongitudeArray objectAtIndex:i]; 

      CLLocationCoordinate2D coordinates [[_latitude count]]; 

     for (int i = 0; i < [_latitude count]; i++) { 

      CLLocationCoordinate2D coordinate; 
      double latitude = [[_latitude objectAtIndex:i] doubleValue]; 
      double longitude = [[_longitude objectAtIndex:i] doubleValue]; 
      coordinate.latitude = latitude; 
      coordinate.longitude = longitude; 
      coordinates[i] = coordinate; 
     } 
      [_coordinatesArray addObject:coordinates]; 

     } 
     NSLog(@"coordinates array = %@", _coordinatesArray); 

起初,我想我将能够使用以做[_coordinatesArray ADDOBJECT:坐标]。但后来意识到这是行不通的!

我可能会错过一些非常基本的东西,但任何帮助,将不胜感激。 由于

编辑: 属性定义:

@property NSMutableArray *latitudeArray; 
@property NSMutableArray *parseLatitudeArray; 
@property NSMutableArray *longitudeArray; 
@property NSMutableArray *parseLongitudeArray; 
@property NSMutableArray *coordinatesArray; 
@property NSArray *latitude; 
@property NSArray *longitude; 
@property CLLocationCoordinate2D *coordinates; 
+0

cf http://stackoverflow.com/questions/2577428/storing-cllocationcoordinates2d-in-nsmutablearray –

+0

上面的代码的几个问题:添加对象parseLatitudeArray和parseLongitudeArray在一个循环,或者为什么不只是使用latitudeArray和Longitude数组? (1)你嵌套一个for循环,并在每个中重用'i',保证有问题。 – mackworth

+0

您的属性可能需要'(非原子,强)' – mackworth

回答

1

创建结构的C-阵列代替,包装每个结构为对象,并把它添加到一个NSMutableArray。因此,在创建后的坐标,只需:

[coordinatesArray addObject: [NSValue valueWithMKCoordinate:coordinate]]; 

而得到值回了:

CLLocationCoordinate2D coordinate; 
[coordinatesArray[i] getValue:&coordinate]; 

因此,假设self.latitude和self.longitude是NSString的的NSArrays:

//only property is now 
@property (nonatomic, strong) NSArray * locations 

-(void) loadCoordinatesFromParse { 
    NSDictionary * parseData; 
    //load parseData from Parse here 
    NSMutableArray * coordinates = [NSMutableArray array]; 
    NSArray * latitudes = [parseData objectForKey:@"latitude"]; 

    NSArray *longitudes = [parseData objectForKey:@"longitude"]; 

    for (int i = 0; i < [latitudes count]; i++) { 
     double latitude = [latitudes[i] doubleValue]; 
     double longitude = [longitudes[i] doubleValue]; 
     CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(latitude, longitude); 
     [coordinates addObject: [NSValue valueWithMKCoordinate:coordinate]]; 
    } 

    NSLog(@"coordinates array = %@", coordinates); 
    self.locations = [NSArray arrayWithArray: coordinates]; 
} 
+0

感谢您的答案,但我得到一个错误 - 发送'CLLocationCoordinate2D [[self - > _ latitude count]]''参数的不兼容类型'CLLocationCoordinate2D'为什么会这样? – Khledon

+0

根本不要创建数组“坐标”。 (你可以发布你的财产清单吗?) – mackworth

+0

更新了问题 – Khledon