Tôi đã thêm MKCircle làm MKOverlay vào MKMapView của mình. Ngoài ra tôi đã thêm một UISlider để quyết định bán kính của vòng tròn. Thật không may khi sử dụng này có vẻ như một chút "laggy", không smootly như tôi muốn nó được.MKOverlay không thay đổi kích thước trơn tru
Ví dụ: http://dl.dropbox.com/u/3077127/mkoverlayDelay.mov
Đây là mã của tôi:
- (void)addCircle
{
// draw the radius circle for the marker
double radius = 2000.0;
MKCircle *circle = [MKCircle circleWithCenterCoordinate:location radius:radius];
[circle setTitle:@"background"];
[mapView addOverlay:circle];
MKCircle *circleLine = [MKCircle circleWithCenterCoordinate:location radius:radius];
[circleLine setTitle:@"line"];
[mapView addOverlay:circleLine];
}
- (void)addCircleWithRadius:(double)radius
{
MKCircle *circle = [MKCircle circleWithCenterCoordinate:location radius:radius];
[circle setTitle:@"background"];
[mapView addOverlay:circle];
MKCircle *circleLine = [MKCircle circleWithCenterCoordinate:location radius:radius];
[circleLine setTitle:@"line"];
[mapView addOverlay:circleLine];
}
- (void)sliderChanged:(UISlider*)sender
{
[mapView removeOverlays:[mapView overlays]];
double radius = (sender.value * 100);
[self addCircleWithRadius:radius];
}
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay{
MKCircle *circle = overlay;
MKCircleView *circleView = [[[MKCircleView alloc] initWithCircle:overlay] autorelease];
if ([circle.title isEqualToString:@"background"])
{
circleView.fillColor = UIColorFromRGB(0x598DD3);
circleView.alpha = 0.25;
}
else
{
circleView.strokeColor = UIColorFromRGB(0x5C8AC7);
circleView.lineWidth = 2.0;
}
return circleView;
}
Có ai có bất kỳ đề xuất về làm thế nào tôi có thể smoothen này?
Trân trọng,
Paul Peelen
+1 cho câu hỏi được tạo tài liệu đẹp mắt. Có cần phải loại bỏ lớp phủ, tại sao không chỉ cập nhật nó? –
Cảm ơn! Tôi không nghĩ có bất kỳ nhu cầu nào .. nhưng làm thế nào tôi có thể cập nhật lớp phủ? –
Tôi không chắc chắn bạn có thể? Tôi luôn nghĩ rằng các lớp phủ MapKit không thay đổi được, bạn không thể sửa đổi chúng một khi được tạo ra. Câu trả lời này cho thấy tương tự: http://stackoverflow.com/questions/3171572/how-to-update-mkpolyline-mkpolylineview – lxt