我正在构建一个基于MapKit的应用程序。我想创建一定数量的pin(比方说20),现在我按代码指定那些坐标。例如,在我的实现文件中:
#define PIN1_LATITUDE 43.504156
#define PIN1_LONGITUDE 12.343405
#define PIN2_LATITUDE 43.451696
#define PIN2_LONGITUDE 12.488599
所有20个值的等等。问题是,我想基于某个参数加载和显示不同的20个引脚组。所以我想将pin的坐标存储在外部文件中,并在时间加载1个。
这样做可能吗?我应该使用哪种结构? 谢谢!
答案 0 :(得分:0)
为引脚和其他数据创建自定义对象类。并将它们存储在数组或字典中。并随时使用。您也可以使用持久存储。
·H
@interface MapAnnotation : NSObject
@property(nonatomic, assign) double latitude;
@property(nonatomic, assign) double longitude;
@property (nonatomic) int Id;
@end
的.m
@interface MapAnnotation
@synthesize latitude,longitude,Id;
@end
viewcontroller.m
NSMutableArray *annotationarray = [NSMutableArray alloc]init];
MapAnnotation *newAnnoataion = [[MapAnnotation allo]init];
newAnnoataion.latitude = 49.05678;
newAnnoataion.longitude = 69.05678;
newAnnoataion.id = 1;
[annotationarray addObject newAnnoataion];
答案 1 :(得分:0)
以下是如何使用JSONKit
执行此操作的示例创建一个json文件,将以下json示例复制粘贴到 poi_data.json 中,加载json文件。
{
"poi": [
{
"id": "1",
"lat": "43.668997",
"lng": "-79.385093"
},
{
"id": "1",
"lat": "43.668997",
"lng": "-79.385093"
},
{
"id": "1",
"lat": "43.668997",
"lng": "-79.385093"
}
]
}
- (void)loadDataFromFile {
NSString* path = [[NSBundle mainBundle] pathForResource:@"poi_data"
ofType:@"json"];
NSString* content = [NSString stringWithContentsOfFile:path
encoding:NSUTF8StringEncoding
error:NULL];
NSDictionary *poiCollection = [content objectFromJSONStringWithParseOptions:JKParseOptionUnicodeNewlines | JKParseOptionLooseUnicode error:nil];
NSArray* pois = [result objectForKey:@"poi"];
for (NSInteger i = 0; i < [pois count]; i++) {
NSDictionary* node = (NSDictionary*)[poi objectAtIndex:i];
CGFloat lat = [[node objectForKey:@"lat"] doubleValue];
CGFloat lng = [[node objectForKey:@"lng"] doubleValue];
}
}
请记住在后台线程或NSOperation块中运行加载数据代码,您的应用程序可能会因跳板而被崩溃 - 加载时间过长。