カスタム アノテーション タイトル値を設定しようとしていますが、クラッシュ レポートが表示されます。クラッシュ レポートは次のとおりです。
「キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: '-[CustomAnnotation setTitle:]: 認識されないセレクターがインスタンスに送信されました」
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{
MKMapRect mapRect = mapView.visibleMapRect;
MKMapPoint eastMapPoint = MKMapPointMake(MKMapRectGetMinX(mapRect), MKMapRectGetMidY(mapRect));
MKMapPoint westMapPoint = MKMapPointMake(MKMapRectGetMaxX(mapRect), MKMapRectGetMidY(mapRect));
CGFloat meters = MKMetersBetweenMapPoints(eastMapPoint, westMapPoint);
if (meters > 15000)
return;
// if we have some backlogged requests, let's just get rid of them
[self.searchQueue cancelAllOperations];
// issue new MKLoadSearch
[self.searchQueue addOperationWithBlock:^{
__block BOOL done = NO;
MKLocalSearchRequest *request = [[MKLocalSearchRequest alloc] init];
request.naturalLanguageQuery = @"theater";
request.region = mapView.region;
MKLocalSearch *localSearch = [[MKLocalSearch alloc] initWithRequest:request];
[localSearch startWithCompletionHandler:^(MKLocalSearchResponse *response, NSError *error) {
NSMutableArray *annotations = [NSMutableArray array];
[response.mapItems enumerateObjectsUsingBlock:^(MKMapItem *item, NSUInteger idx, BOOL *stop) {
for (CustomAnnotation *annotation in mapView.annotations)
{
// if we don't need this one, don't add it, just return, and we'll check the next one
annotation.title;
NSLog(@"%@",annotation.title);
if ([annotation isKindOfClass:[CustomAnnotation class]])
if (item.placemark.coordinate.latitude == annotation.coordinate.latitude &&
item.placemark.coordinate.longitude == annotation.coordinate.longitude)
{
return;
}
}
NSLog(@"%f",item.placemark.coordinate.latitude);
NSLog(@"%f",item.placemark.coordinate.longitude);
// otherwise add it
CustomAnnotation *annotation = [[CustomAnnotation alloc] initWithPlacemark:item.placemark];
CLLocation *locA = [[CLLocation alloc] initWithLatitude:37.33554 longitude:-121.885209];
CLLocation *locB = [[CLLocation alloc] initWithLatitude:item.placemark.coordinate.latitude longitude:item.placemark.coordinate.longitude];
CLLocationDistance distance = [locA distanceFromLocation:locB];
NSLog(@"%f",distance);
annotation.title=item.title; --> i get crash report in this line
NSLog(@"%@",annotation.title);
annotation.phone = item.phoneNumber;
annotation.subtitlee = item.placemark.addressDictionary[(NSString *)kABPersonAddressStreetKey];
[annotations addObject:annotation];
NSLog(@"%@",annotations);
//[self.mapView addAnnotations:annotation.name];
}];
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
//CustomAnnotation
[self.mapView addAnnotations:annotations];
}];
done = YES;
}];
while (!done)
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode
beforeDate:[NSDate distantFuture]];
}];
}
//////////////////////////////////
ありがとうございました...
enter code here
#import <MapKit/MapKit.h>
@interface CustomAnnotation : MKPlacemark
{
CLLocationCoordinate2D coordinate;
}
@property (strong, nonatomic) NSString *title;
@property (strong, nonatomic) NSString *subtitlee;
@property (strong, nonatomic) NSString *phone;
@property (nonatomic) NSUInteger index;
enter code here
@終わり