Tôi đang cố thêm chú thích và lớp phủ vào chế độ xem bản đồ nhưng nó bị treo ngẫu nhiên. Đó là lỗi EXC_BAD_ACCESS, nhưng thây ma không nói gì với tôi cả. Nó nói nó đang bị rơi trên CG :: Path :: apply_transform (CGAffineTransform const &). Tôi đã xem xét ở khắp mọi nơi vì sao điều này xảy ra nhưng không thể xác định được nó.Ứng dụng gặp sự cố khi tôi thêm lớp phủ vào mkmapview
Tôi đang tạo bản đồ trong ib và có các đại biểu và mọi thứ được thiết lập đúng. Nó sẽ làm việc đôi khi và sau đó sụp đổ ngẫu nhiên. Tôi đang sử dụng một trình nhận dạng cử chỉ để thêm chú thích và che phủ
UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(handleDoubleTap:)];
[doubleTap setNumberOfTapsRequired:2];
[self.mapView addGestureRecognizer:doubleTap];
và
- (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];
}
}
Và quan điểm cho mỗi:
-(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;
}
Có cách nào tốt hơn để thêm chú thích/lớp phủ cho bản đồ với tương tác của người dùng? Tôi có làm gì sai trong mã này không? Nó xuất hiện để vẽ hầu hết các vòng tròn nhưng sau đó treo ... Có một số thủ thuật đặc biệt để mapviews?
Đối với những gì giá trị của nó, tôi có gần như chính xác cùng một mã và tôi đang gặp chính xác cùng một vụ tai nạn liên tục.Nó chắc chắn gây ra bởi MKMapView addOverlay: và dường như xảy ra vào những lúc tùy ý. Nó không được liên kết với số lớp phủ được thêm vào. Nếu bạn giải quyết vấn đề, vui lòng thêm câu trả lời ở đây và tôi sẽ làm như vậy. – Undistraction
Bài đăng của 1ndivisible tại đây (http://stackoverflow.com/questions/8266950/debugging-crash-in-coregraphics-mapkit) bao gồm cùng một sự cố này. Tính năng này cụ thể là 5.0. – cbowns
Tôi nghĩ rằng tôi đang gặp lỗi này nhưng cũng thấy thông báo này: "lỗi: địa chỉ không chứa phần trỏ đến một phần trong tệp đối tượng" –