Я хочу отображать аннотации с использованием lat и lon, lat и lon поступают из JSON (nearStop), и я хранил долготу и широту в два NSArrays. Когда я пытаюсь добавить аннотацию к mapview в цикле for, возникает ошибка EXC_BAD_ACCESS Любые помогает?Ошибка EXC_BAD_ACCESS возникает при добавлении аннотации к MKMapView
NSMutableArray *coordinateLongi = [[NSMutableArray alloc]init];
for (NSDictionary *stop in nearbyStop) {
NSString *longi = stop[@"result"][@"lon"];
if(longi == nil)
{
NSLog(@"there is no data");
}
else
{
[coordinateLongi addObject:longi];
}
}
NSMutableArray *coordinateLatit = [[NSMutableArray alloc]init];
for (NSDictionary *stop in nearbyStop) {
NSString *latit = stop[@"result"][@"lat"];
if(latit == nil)
{
NSLog(@"there is no data");
}
else
{
[coordinateLatit addObject:latit];
}
}
for(int i = 0; i<coordinateLongi.count;i++)
{
CLLocationCoordinate2D coord;
coord.latitude = [[NSString stringWithFormat:@"%@",[coordinateLongi objectAtIndex:i]] floatValue];
for(int j = 0; j<coordinateLatit.count;j++)
{
coord.longitude = [[NSString stringWithFormat:@"%@",[coordinateLatit objectAtIndex:i]] floatValue];
}
CustomAnnotation *annotObj = [[CustomAnnotation alloc] initWithCoordinate:coord title:@"title" ];
[map addAnnotation:annotObj];//Error occurs here.
}
Вот мой customAnnotation.h
#import <MapKit/MapKit.h>
@interface CustomAnnotation : MKPlacemark
{
CLLocationCoordinate2D coordinateL;
NSString *title;
NSString *subtitle;
NSString *time;
}
@property (nonatomic)CLLocationCoordinate2D coordinateL;
@property (strong, nonatomic) NSString *title;
@property (strong, nonatomic) NSString *subtitle;
@property (strong, nonatomic) NSString *phone;
@property (strong, nonatomic) NSString *time;
-(id)initWithCoordinate:(CLLocationCoordinate2D) c title:(NSString *) t subTitle:(NSString *)timed time:(NSString *)tim;
-(id)initWithCoordinate:(CLLocationCoordinate2D) c title:(NSString *)tit;
@end
и customAnnotation.m
#import "CustomAnnotation.h"
@implementation CustomAnnotation
@synthesize title;
@synthesize subtitle;
@synthesize phone;
@synthesize time;
@synthesize coordinateL;
-(id)initWithCoordinate:(CLLocationCoordinate2D) c title:(NSString *) t subTitle:(NSString *)timed time:(NSString *)tim
{
self.coordinateL=c;
self.time=tim;
self.subtitle=timed;
self.title=t;
return self;
}
-(id)initWithCoordinate:(CLLocationCoordinate2D) c title:(NSString *)tit
{
self.coordinateL=c;
self.title=tit;
return self;
}
@end
Спасибо за помощь Уоррен! Я уже решил проблему. То, что я делал, это попытаться отобразить на карте различные типы аннотаций, поэтому меня это смутило. Один тип - близлежащие рестораны, я использовал MKLocalSearchRequest для их поиска и добавления аннотаций. Другой тип - близлежащие остановки, я создаю еще одну аннотацию с супер-классом NSObject и объявляю координату.Теперь я выясняю разницу между NSObject и суперклассом MKPlacemark :) –