Я смотрел на следующее обсуждение вопроса, чтобы попытаться понять, как считывать местоположения из списка и соответственно отображать представление карты:
Сбой приложения на основе MapKit при загрузке из plist
У меня проблемы с пониманием, как заставить это работать. Если я жестко закодирую аннотации, я смогу заставить его работать нормально, поэтому я не понимаю, в чем дело. Я думаю, что, вероятно, я получаю доступ к данным в .plst. Мой плист имеет структуру:
<array>
<dict>
<key>rowData</key>
<array>
<dict>
<key>details</key>
<string>Some minor info</string>
<key>latitude</key>
<strong>53.958756</string>
<key>Location</key>
<string>Location One</string>
<key>lontitude</key>
<string>-1.07937</string>
</dict>
</array>
</dict>
</array>
Я пытаюсь получить доступ к этим данным, используя код из ответа на вопрос выше, как этот, но без радости:
-(id)initWithDictionary:(NSDictionary *)dict{
self = [super init];
if(self!=nil){
coordinate.latitude = [[dict objectForKey:@"latitude"] doubleValue];
coordinate.longitude = [[dict objectForKey:@"longitude"] doubleValue];
self.title = [dict objectForKey:@"Location"];
self.subtitle = [dict objectForKey:@"details"];
}
return self;
Мой viewDidLoad также немного отличается от другого вопроса, на который я ссылался выше. Это выглядит так:
- (void)gotoLocation
{
// set location as York, UK
MKCoordinateRegion newRegion;
newRegion.center.latitude = 53.960025;
newRegion.center.longitude = -1.082697;
newRegion.span.latitudeDelta = 0.0012872;
newRegion.span.longitudeDelta = 0.0159863;
[self.map setRegion:newRegion animated:YES];
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
//Set up map
self.map.mapType = MKMapTypeStandard; // also MKMapTypeSatellite or MKMapTypeHybrid
[self gotoLocation];
// Get the the plist in application bundle
NSString *path = [[NSBundle mainBundle] pathForResource:@"Places" ofType:@"plist"];
// Retrieve the plists root element array
NSArray *array = [[NSArray alloc] initWithContentsOfFile:path];
NSLog(@"Grabbed locations.plist ok");
if (array) {
NSMutableDictionary* myDict = [NSMutableDictionary dictionaryWithCapacity:[array count]];
for (NSDictionary* dict in array) {
MapAnnotations* annotation = [[MapAnnotations alloc]initWithDictionary:dict];
[self.map addAnnotation:annotation];
[annotation release];
}
NSLog(@"The count: %i", [myDict count]);
}
else {
NSLog(@"Plist does not exist");
}
}
Если кто-нибудь может объяснить мне, где я иду не так и как делать то, что мне нужно, я был бы признателен.
Спасибо за чтение.