注釈とオーバーレイをマップビューに追加しようとしていますが、ランダムにクラッシュします。それはEXC_BAD_ACCESSエラーですが、ゾンビは何も教えてくれません。 CG :: Path :: apply_transform(CGAffineTransform const &)でクラッシュしているとのことです。私はどこでこれが起こっているのか見てきましたが、それを特定することはできません。mkmapviewにオーバーレイを追加するとアプリケーションがクラッシュする
ibでmapviewを作成しています。デリゲートとすべての設定が正しく行われました。時にはうまく動作し、ランダムにクラッシュします。 私は、注釈を追加し、
UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(handleDoubleTap:)];
[doubleTap setNumberOfTapsRequired:2];
[self.mapView addGestureRecognizer:doubleTap];
と
- (void)handleDoubleTap:(UIGestureRecognizer *)gestureRecognizer
{
if (gestureRecognizer.state == UIGestureRecognizerStateRecognized){
CGPoint touchPoint = [gestureRecognizer locationInView:self.mapView];
CLLocationCoordinate2D touchMapCoordinate =
[self.mapView convertPoint:touchPoint toCoordinateFromView:self.mapView];
//add pin where user touched down...
MKPointAnnotation *pa = [[MKPointAnnotation alloc] init];
pa.coordinate = touchMapCoordinate;
//[pa setTitle:@"title"];
[mapView addAnnotation:pa];
MKCircle* circle=[MKCircle circleWithCenterCoordinate:touchMapCoordinate radius:500];
[mapView addOverlay:circle];
}
}
し、それぞれのビューをオーバーレイするジェスチャー認識を使用しています:
-(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id)overlay
{
if ([overlay isKindOfClass:[MKCircle class]]) {
MKCircleView* circleView = [[MKCircleView alloc] initWithOverlay:overlay];
circleView.strokeColor = [UIColor redColor];
circleView.lineWidth = 1.0;
circleView.fillColor = [UIColor blackColor];
circleView.alpha=.5;
return circleView;
}
else
return nil;
}
- (MKAnnotationView *)mapView:(MKMapView *)localmapView viewForAnnotation:(id <MKAnnotation>)annotation
{
if (![annotation isKindOfClass:[MKUserLocation class]]) {
static NSString *AnnotationIdentifier = @"Annotation";
MKPinAnnotationView* pinView = (MKPinAnnotationView *)[localmapView dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier];
if (!pinView)
{
pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier];
pinView.pinColor = MKPinAnnotationColorRed;
pinView.animatesDrop = YES;
}
else
{
pinView.annotation = annotation;
}
return pinView;
}
return nil;
}
は、注釈を追加するための良い方法はあります/ユーザーインタラクションを使用してマップにオーバーレイする?このコードで何か間違っていますか?サークルの大部分を描画しているように見えますが、クラッシュします...マップビューに特別なトリックがありますか?
その価値については、私はほぼ同じコードを持っており、まったく同じ断続的なクラッシュを経験しています。間違いなくMKMapView addOverlayによって発生しています:そして、任意の時に発生するようです。追加されるオーバーレイの数にリンクされていません。問題を解決する場合は、ここに回答を追加してください。私は同じことをします。 – Undistraction
ここに1ndivisibleの投稿(http://stackoverflow.com/questions/8266950/debugging-crash-in-coregraphics-mapkit)は、この同じクラッシュをカバーしています。それは5.0固有です。 – cbowns
私はこの同じエラーが発生していると思いますが、このメッセージも表示されます: "エラー:アドレスにオブジェクトファイルのセクションを指すセクションがありません" –