MKCaple을 MKMapView에 MKOverlay로 추가했습니다. 또한 원의 반지름을 결정하기 위해 UISlider를 추가했습니다. 불행히도 이것을 사용하면 약간 "느린"것처럼 보일 수 있습니다.MKOverlay의 크기가 부드럽게 조정되지 않습니다.
예 : http://dl.dropbox.com/u/3077127/mkoverlayDelay.mov
이 내 코드입니다 :
- (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;
}
아무도 내가이 부드럽게 할 수있는 방법에 대한 제안 사항이 있습니까?
안부,
폴 Peelen
+1 잘 정리 된 질문입니다. 오버레이를 제거 할 필요가 있습니까? 왜 그것을 업데이트하지 않습니까? –
감사합니다. 어떤 필요성이 있다고 생각하지 않습니다.하지만 오버레이를 어떻게 업데이트 할 수 있습니까? –
내가 할 수 있을지 모르겠다. 필자는 항상 MapKit 오버레이가 변경되지 않는다고 생각했습니다. 일단 만들어지면 오버레이를 수정할 수 없습니다. 이 대답은 같은 제안 : http://stackoverflow.com/questions/3171572/how-to-update-mkpolyline-mkpolylineview – lxt