지도 뷰에 주석과 오버레이를 추가하려고하지만 무작위로 충돌합니다. 그것은 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;
}
은 주석을 추가 할 수있는 더 좋은 방법이 있나요/사용자 상호 작용이있는지도에 오버레이가 있습니까? 이 코드에서 잘못된 것이 있습니까? 그것은 대부분의 원을 그리는 것처럼 보이지만 충돌이 발생합니다 ... mapviews에 대한 특별한 트릭이 있습니까?
그 가치는 거의 똑같은 코드이고 정확히 동일한 간헐적 인 충돌을 경험하고 있습니다.그것은 확실히 MKMapView addOverlay에 의해 발생합니다 : 그리고 임의의 시간에 발생하는 것 같습니다. 추가 된 오버레이 수와 관련이 없습니다. 문제를 해결하면 여기에 답변을 추가하십시오. 나는 똑같이 할 것입니다. – Undistraction
여기에 1ndivisible의 게시물 (http://stackoverflow.com/questions/8266950/debugging-crash-in-coregraphics-mapkit)에서 이와 동일한 오류가 발생합니다. 5.0에 맞습니다. – cbowns
나는이 동일한 오류가 발생하지만이 메시지도 보게 될 것이라고 생각합니다. "오류 : 주소에 개체 파일의 구역을 가리키는 구역이 없습니다" –